Você está na página 1de 14

Padres bsicos

Anlise e Projeto de Sistemas


Prof. Rodrigo Vilar
rvilar@gmail.com
Herana versus Composio
So dois mecanismos para reutilizar
funcionalidade
Composio estende as responsabilidades de uma
classe pela delegao de trabalho para outro
objeto
Herana estende atributos e mtodos de uma
classe
Herana versus Composio
Herana era considerada a ferramenta bsica
de extenso e reuso de funcionalidade
Hoje, considera-se que a composio muito
superior herana na maioria dos casos
o Mas herana deve ser utilizada em alguns
contextos
Composio - Exemplo
Domnio de endereos
o Uma empresa tem um endereo
o Podemos deixar o objeto empresa responsvel pelo
objeto endereo
Herana - Exemplo
Atributos, conexes a objetos e mtodos comuns esto
na superclasse (classe de generalizao)
Os outros atributos, conexes e mtodos so adicionados
nas subclasses (classes de especializao)
Ex: Domnio de reserva e compra de passagens de avio
Herana - Vantagens
Captura o que comum (Superclasse) e o
isola daquilo que diferente (Subclasses)
A herana vista diretamente no cdigo
Herana - Desvantagens
O encapsulamento entre superclasses e
subclasses fraco
o Alto acoplamento
o Mudanas na superclasse podem afetar todas
as subclasses
The weak base-class problem
o Viola o padro Baixo Acoplamento
Herana - Desvantagens
Herana um relacionamento esttico
o s vezes um objeto precisa ser de uma
classe diferente em momentos diferentes
o Com herana, a estrutura est parafusada no cdigo
e no pode sofrer alteraes facilmente em tempo de
execuo
Herana - Desvantagens
Exemplo: pessoas envolvidas na aviao
o Uma pessoa pode assumir mais de um papel
o Herana dificulta esse tipo de funcionalidade
Resolvendo o problema com
Composio
Uma Pessoa com vrios Papeis possveis
Delegao
Quando dois objetos esto envolvidos em atender
um pedido
o Por exemplo, setNome()
Delegao sempre pode ser usada para substituir
herana
Em vez de tripulao ser uma pessoa, ele tem uma
pessoa
Delegao
A grande vantagem da delegao que o
comportamento pode ser escolhido em tempo de
execuo e vez de estar amarrado em tempo de
compilao
A grande desvantagem que um software muito
dinmico e parametrizado mais difcil de entender
do que software mais esttico
Cinco regras para o uso de Herana
O objeto " um tipo especial de" e no "um papel
assumido por"
O objeto nunca tem que mudar para outra classe
A subclasse estende a superclasse mas no faz
override ou anulao de variveis e/ou mtodos
No uma subclasse de uma classe "utilitria"
Para classes do domnio do problema, a subclasse
expressa tipos especiais de papeis, transaes
ou dispositivos
Exerccio
Aplicar as cinco regras no exemplo de Tripulao,
Passageiro e Agente
Aplicar as cinco regras no cenrio de reserva e compra de
passagens:

Você também pode gostar