[RESOLVIDO] Agregação e delegação

Agregação é quando objetos usam atributos e métodos de outros objetos, certo?
Delegação é quando objetos enviam mensagems para outro para ajudá-lo a entender uma requisição, certo?

Então eu posso dizer que delegação e agregação são quase a mesma coisa? =S
Porque para objetos usarem atributos de outros objetos é necessário que um envie mensagem para o outro, não?

Na minha opinião é o seguinte:

1 - Agregação e composição dizem respeito à modelagem da sua classe ( pode-se usr UML para isso).

2 - Delegar é um “design pattern” que pode usar classes tanto com agregação quanto com composição.

KamillaaaH
ta faltando um pouco de Orientação a Objetos pra vc…
veja!!!
http://www.robsonfagundes.110mb.com/apostilas/Conceitos_OO.pdf
http://www.robsonfagundes.110mb.com/apostilas/caelum-java-objetos-fj11.pdf
espero q ajude T+

Agregação é quando um objeto contém outro. Delegação envolve o uso. Quando um objeto delega, ou seja, repassa tarefas para que outro use.

Perceba que um objeto pode ter outro, mas não utiliza-lo. Quer saber um exemplo?

Pense numa classe que presenta uma lista de outros objetos. Nessa classe, você tem métodos para adicionar um objeto, remove-lo, obter o tamanho da lista, etc. No que a classe lista usa os objetos que estão dentro? Que funções ela pede para eles realizar por ela?

Nenhuma. Esse é um exemplo onde há composição, mas não há delegação.

O mesmo deverá valer para classes como Turma e Aluno.

Já delegação acontece com classes como Carro e Motor. Ao pedir para o carro dar a partida, o carro enviará um comando para que o motor comece a girar. O motor realizará o movimento, e isso refletirá no carro.

Por fim, é possível que um objeto delegue atividades para outro, mas usando uma composição simples, sem um vínculo tão forte. Como por exemplo, um método que receba um objeto por parâmetro e realize uma operação sobre ele. Note que a agregação não ocorreu, mas a delegação sim:

public class Aluno { //A impressora não é parte do aluno. //Ele só precisa de uma impressora na hora de imprimir! public void ImprimirNome(Impressora impressora) { impressora.imprimir(aluno.nome); } }