Olá a todos!
Sou iniciante em Java e tenho algumas dúvidas.
Já naveguei pelo GUJ e por outros sites e ainda não consegui encontrar uma definição precisa (conceitual) sobre o que seriam e quais as diferenças entre Composição, Agregação e Associação.
Se alguém puder me ajudar eu agradeceria muito.
A associação é uma das formas mais simples de relacionamento entre classes e ocorre quando existe uma classe que possui um atributo de outra classe(objetos ou array de objetos ).
Este tipo de relacionamento também é conhecido por relacionamento ?tem um(a)?.
Por exemplo, quando uma associação entre a classe ?Pessoa? e a classe ?Endereco?, diz que uma pessoa ?tem um? endereço.
Agregação:
A agregação é uma forma de associação caracterizada por um relacionamento do tipo parte-todo, em que uma das pontas da associação é a parte é o todo.
Por exemplo as classes Turma, Estudante e Instrutor, o Estudante é ligado a Turma, o Instrutor também e ligado a Turma.
Ou seja Turma é um todo, enquanto os Estudantes e o Instrutor são partes do todo.
A Turma é ?Hierarquicamente? superior? aos Estudantes e ao Instrutor,
Ou seja, a Turma contém os Estudantes e o Instrutor. Visto de outra forma, os Estudantes e o Instrutor fazem parte da turma.
Composição
Composição é um tipo de associação ainda mais forte que agregação. A composição também é um relacionamento caracterizado como parte / todo, mas, neste caso, o todo é responsável pelo ciclo de vida da parte.
Por exemplo a classe Departamento ligada a Escola , se o objeto da classe Escola for destruído, todos os departamentos devem ser excluídos também.
Quanto à Agregação e Composição percebi que a diferença é mínima (sutil). Na Composição se o todo é destruído, a parte também é. Já na Agregação se o todo é destruído, a parte ainda pode continuar existindo.
Só uma observação, que dentro do Java e linguagens de programação em geral, a implementação desses conceitos é a mesma. Não tem como dizer só olhando para a declaração de uma classe se a relação dela com seus atributos é de agregação ou composição.