Membro Privado é herdado, mas não é visível!

Posted by Alberto on March 5th, 2008

[EDITADO]
Após alguns comentários, resolvi buscar outras fontes de leitura. E estou convencido de que errei. Membro privado não herda. :$
[/EDITADO]

Meses atrás houve um grande debate entre alguns amigos sobre a seguinte questão:Afinal, métodos e propriedades privados em java, são herdados pelas classes-filhas?

Tem gente que acredita que herda, tem gente que acredita que não herda e tem gente que não acha nada!
Estou no grupo que acredita que herda!

Qualquer membro que tenha sua visibilidade marcada como private, é herdada pelas classes-filhas.Porém, somente a classe onde o membro foi declarado terá acesso (devido ao tipo visibilidade).

Este é um bom assunto para juntar um grupo de amigos e discutir. Certamente iniciará uma Flame War :X

Vou tentar convencer vocês a acreditarem que herda .

Retirado do wikipédia, de forma resumida, o conceito de herança é:

“A Herança é um princípio da Programação Orientada a Objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização. A herança permite a criação de subclasses que herdam atributos e operações (ou Métodos) da classe pai (super-classe ou classe base)

Do meu ponto de vista, o que ocorre, em Java especificamente, é o seguinte:

Herança é uma coisa, e escopo de um membro é outra. Quando tornamos um membro “private”, estamos falando que o seu escopo é apenas dentro da própria classe. O que é totalmente diferente de: Os objetos das classes-filhas não herdaram este(s) membro(s).

O grupo que acha que não herda alega que as propriedades não estão presentes na classe filha, não são visíveis.

Durante a “discussão” herda, não herda, nos deparamos com opiniões de outras pessoas. Vimos que toda a estrutura das classes são alocadas em memória e prontas para serem utilizadas pelos mecanismos internos da classe. Ou seja, os membros estão lá. É fato que não é possível acessar de forma direta os membros privados da superclasse, a não ser que seja via reflexão. O que foge da discussão aqui.

Uma outra coisa que é legal comentar é que, não existe polimorfismo com membros privados. Caso exista um membro de mesmo nome nas classes-filhas, este será apenas um novo membro com escopo diferente.

Este, talvez, seja o motivo da GRANDE confussão, já que quando estamos implementando a classe-filha temos a sensação de que os membros privados não são herdados.

Mentawai - Template: “Bloqueando” chamada a JSP

Posted by Alberto on March 4th, 2008

Como já leram aqui no blog, escolhi o Mentawai para desenvolver um projeto em Java. Mas, como nem tudo são flores, meses atrás eu tive um problema com a utilização de “template” no menta. Por acreditar que outras pessoas já passaram pelo mesmo problema, vou passar adiante uma dica que o felipowsky me passou lá no fórum.

Para conhecer como funciona o recurso de template, basta acessar o site aqui. O próprio site do mentawai explica passo a passo, portanto, não mostrarei aqui como criar um template simples.

O PROBLEMA

Quando se trabalha com “template” no mentawai é permitido configurar a extensão dos arquivos e a forma como serão acessados (Desde que não seja “jsp”, senão ele lança exceção).

Ao acessar uma página com a extensão que foi definida, o recurso de template do framework incluirá a página dentro das tags definidas. Porém, se o usuário renomear na barra de endereço a extensão, passando “.JSP”, o arquivo será acessado e exibido sem qualquer formatação de layout.


A SOLUÇÃO

Tentei de “n” maneiras resolver este problema, e como sou marinheiro de primeira viagem não tive muito sucesso.

A idéia passada pelo felipowsky foi a seguinte:

Cria-se uma classe que estende ConventionController, chame-a de CustomConventionController:

import org.mentawai.template.ConventionController;

public class CustomConventionController extends ConventionController {

@Override
public String getRoot() {
return "/WEB-INF/Administracao";
}
}

E, no TemplateManager, ao invés de chamar ConventionController, chama-se a classe customizada ConventionControllerCustom:

import org.mentawai.template.Page;

import com.mentawaiexe.template.CustomConventionController;

public class TemplateManager extends org.mentawai.template.TemplateManager {

private static final String WEBINF_FOLDER = "/WEB-INF/";
private static final String DEFAULT_JSP_FOLDER = WEBINF_FOLDER + "Administracao/";

public void configurePages() {
Page page = new Page("Administracao/.*", DEFAULT_JSP_FOLDER + "home.jsp",  CustomConventionController.class);
add(page);
}
}

Está foi a solução que utilizei no meu projeto, e funciona perfeitamente.

Valeu felipowsky!

Engenharia de Software Magazine

Posted by Alberto on March 4th, 2008

Para quem não conhece, a Devmedia é uma das editoras mais importantes na área de análise/desenvolvimento atuante no Brasil. Particularmente, posso falar sobre 3(revistas) revistas: SQL Magazine ,Web Mobile e Java Magazine (atualmente só assino Java Magazine e Web Mobile). São revistas excepcionais, com conteúdo de primeira! Recentemente foi lançada uma nova revista - digital, sobre Engenharia de Software. Ainda não tive a oportunidade de ler, pois acabei de receber um email comunicando o lançamento, mas já dei uma olhada nos artigos e parecem interessantes.

Engenharia de Software é a aplicação de abordagens sistemáticas, disciplinadas e quantificáveis no desenvolvimento e manutenção de software. Desta forma, se preocupa em como realizar as diversas atividades envolvidas no processo de desenvolvimento de software de forma que se tenha um produto elaborado com maior qualidade e menor custo.

Fonte: http://www.devmedia.com.br/esmag/

Atenção, atenção: O Java vai acabar!

Posted by Alberto on March 3rd, 2008

Acalmem-se, o título deste post é proposital!

Tudo começou quando saiu essa notícia aqui. E, foi suficiente para começar uma “revolução” no GUJ.

É fato que JAVA não vai acabar pelo menos nos próximos anos. Há quem diz que sistemas em Java são legados, já que RoR está conquistando mercado, assim como .Net (arghh..=X) . Basta “surgir” um novo amor na vida das pessoas para que elas mudem de opinião da noite para o dia. Ruby, e RoR estão no mercado ai há anos e nunca fizeram tanto sucesso como hoje. Agora, como muitos falam por ai, que Java vai acabar por causa de RoR, .Net, PHP, etc.. não dá para acreditar!

Tem mercado para todas as linguagens! Afinal, Cobol, por exemplo, está na ativa até hoje.

Basta ler a matéria com atenção que você perceberá o marketing da plataforma .Net:

“A Microsoft, porém, fez da sua plataforma .Net um player sério no cenário corporativo. Um relatório da Info-Tech Research Group datado de novembro de 2007 apontou que .Net estava se tornando mais popular do que a plataforma Java nas empresas.”

Ah, tem essa aqui que saiu na MeioBit também:

“E o quinhão da Microsoft é enorme: 80% dos novos servidores sendo que a .Net Framework também está ganhando mais da metade da preferência no desenvolvimento de novas aplicações rodando em servidor. Isso mostra que a criação de compiladores para Python, Ruby e PHP podem servir, na verdade, para aumentar a oferta de mão de obra para as empresas. “

É até interessante ver essas “brigas” no mercado. Mas, ao ver é totalmente irrelevante, já que não interessa se você desenvolveu em cobol, pascal, java, ruby, php, .net…, se você agradou ao seu cliente e o software funciona bem, pouco importa a tecnologia utilizada.

Está “chegando” a hora!!

Posted by Alberto on March 3rd, 2008

Bem Pessoal,

é fato que minha ausência aqui no blog está um pouco acentuada, mas é por uma boa causa!!

Muito trabalho, muitos livros, organização do meu “curriculum vitae” para concorrer a uma vaga na pós-graduação da Universidade Federal. É bastante coisa sim, e está valendo MUITO a pena!

1º) O projeto cujo estava trabalhando nas horas vagas teve a programação concluída neste final de semana. Agora, estou no aguardo do envio do layout do sistema para concluir todo o projeto e hospedá-lo. (A logomarca já está finalizada e muito bacana). Quando ele estiver disponível onlin, postarei mais detalhes aqui no blog. Para os mais apressados, o projeto foi idealizado em Java, Hibernate + Annotations, Mentawai, mySQL.

2º) Após uma maratona para finalizar meu CV e enviar aos 47′ do 2º tempo - último dia de inscrição , recebi um email comunicando que fui selecionado para ingressar no curso de especialização (pós-graduação) em “Master in Business Intelligence” (Inteligência de Negócios). As aulas começarão ainda esta semana.

Entre uma correria e outra, sempre estou lendo algo. Estou terminando de ler “O monge e O Executivo: Uma história sobre a essência da Liderança “. Muito bom este livro, recomendo. Afinal, de vez enquando é bom fugir um pouco de livros técnicos (Minha lista de compras deste mês na Amazon já está feita, hehe =X)..

Por hoje é isso, gostaria de compartilhar com vocês um pouco sobre minha última semana e minha felicidade de ter sido selecionado para o curso de especialização.

Abraços!


Copyright © 2007 Alberto Leal. All rights reserved.