Professional Documents
Culture Documents
www.devmedia.com.br
http://www.devmedia.com.br/articles/viewcomp_forprint.as...
Introduo
Primeiramente necessrio entender o que Composio e o que Herana. Composio e Herana so dois mecanismos para reutilizar funcionalidades. A herana sempre foi considerada uma ferramenta bsica de extenso e reuso de funcionalidade e se d estendendo atributos e mtodos de uma classe. Segue abaixo um diagrama de classe exemplificando o uso de Herana.
Figura 1: Exemplo de Herana O diagrama de classe acima seria implementado em Java conforme o cdigo na listagem abaixo: Listagem 1: Exemplo de herana de classes em Java.
public class Animal { } public class Cachorro extends Animal { } public class Gato extends Animal { }
Acima tem-se a definio de Animal que a superclasse e das classes Cachorro e Gato que herdam tudo da classe Animal. Neste exemplo na classe Animal no tem nada, porm se tivesse atributos ou mtodos eles seriam Herdados pelas suas subclasses Cachorro e Gato. Vale salientar que devemos atentar para a visibilidade dos atributos e mtodos no caso da Herana, lembre-se que tudo que privado no herdado, pois pertence unicamente classe detentora. Na herana temos o conceito de uma Classe Pai, Classe Base ou Superclasse (todas essas nomenclaturas denotam a mesma coisa) que a classe que foi herdada pelas subclasses. A Classe Filha ou Subclasse a classe que herda da classe Pai. Outros dois conceitos que temos na Herana a Generalizao onde se obtm similaridades entre classes e dessa forma define-se novas classes. As classes mais genricas so as classes Pai. E a Especializao onde Identifica-se atributos e mtodos no correspondentes entre classes distintas colocando-os na classe filha. Ou seja, quando se tem similaridades entre as classes procura-se generaliz-las levando suas similaridades para a classe pai onde as classes filhas iro herdar essa similaridade. Por outro lado quando temos atributos e mtodos no correspondentes nas classes filhas
1 de 3
09-04-2013 08:34
http://www.devmedia.com.br/articles/viewcomp_forprint.as...
colocamos essas no correspondncias nas classes filhas mais especficas que iro usar esses atributos e mtodos. Normalmente na Herana usamos o termo " um". Por exemplo, podemos dizer que um carro UM automvel, portanto temos que um carro herda os atributos e mtodos de um automvel, assim como um caminho tambm UM automvel. Neste exemplo temos uma hierarquia de herana onde um Carro e um Caminho herdam atributos e mtodos comuns entre eles que esto definidos numa superclasse Automovel. Para o exemplo acima a herana tambm vlida pois Cachorro UM Animal e Gato tambm UM Animal. A composio por sua vez estende uma classe pela delegao de trabalho para outro objeto. Na composio ao invs de codificarmos um comportamento estaticamente, como feito com o uso de herana, definimos pequenos comportamentos padro e usamos composio para definir comportamentos mais complexos. Na composio agora podemos mudar a associao entre classes em tempo de execuo, assim um objeto pode assumir mais de um comportamento. O Diagrama de classe abaixo mostra um exemplo de composio onde um Sistema composto de uma Pessoa.
Figura 2: Exemplo de composio O diagrama de classe acima seria implementado em Java conforme o cdigo na listagem abaixo: Listagem 2: Exemplo de composio em Java.
public class Sistema { Pessoa pessoa = new Pessoa(); } public class Pessoa { }
Na composio temos uma instncia da classe existente sendo usada como componente da outra classe. A composio usa o termo TEM UM. Por exemplo, podemos dizer que um carro TEM UM pneu, neste exemplo temos a definio de uma composio.
2 de 3
09-04-2013 08:34
http://www.devmedia.com.br/articles/viewcomp_forprint.as...
princpio de programar para uma interface e no para uma implementao. A composio tambm apresenta uma menor dependncia de implementaes e temos cada classe focada em apenas uma tarefa seguindo outro principio da responsabilidade nica. Por fim, a composio tambm tem um bom encapsulamento onde os detalhes internos dos objetos instanciados no so visveis. A grande desvantagem que um software muito dinmico e parametrizado mais difcil de entender do que software mais esttico.
Concluso
De forma geral a herana deve ser pouco utilizada. Atualmente a composio considerada muito superior herana na maioria dos casos pois entre as suas principais vantagens a composio permite mudar a associao entre classes em tempo de execuo, os objetos podem assumir mais de um comportamento, os projetos so mais simples e reutilizveis, alm de descartar os problemas envolvendo a herana como o acoplamento entre as classes e outros problemas discutidos. A composio utilizada em diversos Padres de Projetos comprovando assim a sua grande utilidade e uso no desenvolvimento de projetos melhores.
Bibliografia
Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First Design Patterns. O'Reilly Media, 2004.
3 de 3
09-04-2013 08:34