diferença entre agregação e composição

4 respostas
P

Ao implementarmos qual a diferença na prática entre agregação e composição ?
Eu sei quando se usa cada um na teoria, mas quando vou implementar como faço ?

Sei que composição e agração têm relacionamento todo-parte, porém diferenciam-se por um ser parte essencial e outro não. Mas em código java qual a diferença ?

Favor exemplificar com código… grato !

4 Respostas

C

Opa... vamos ver c eu consigo te ajudar....

Bem. vamos pensar em um Objeto Pessoa(acho q e + usado por todos rsr)
Essa pessoa tem um trabalho, e essa pessoa tem um objeto coracao, sao coisas diferentes, mas e so pra exemplo....

O objeto coracao tem os atributos... arterias, vasos, etc...
Mas.. a pessoa vive sem um coracao ? entao temos um objeto composto, certo?
E essa pessoa tem um trabalho com os atributos... localizacao, cnpj, etc.. ou seja.. vc n vive sem o seu trabalho, mas ele nao deixa de existir.. entao temos para a relacao pessoa-coracao, temos uma composicao, e para pessoa-trabalho temos uma agregacao, ok ? agora vamos pra o codigo....

public class Pessoa
private String nome;
private Double salario;

private Coracao coracao;
private Trabalho trabalho;
//.. get's e set's
public class Coracao
private Integer vasos;
private Integer arterias;

private Pessoa pessoa
public class Trabalho
private Integer cnpj;
private String localizacao;
private Pessoa pessoa

OK? espero ter ajudado!

P

Olá Rafael ! Muito obrigado cara !

Valeu mesmo…mas tive algumas dúvudas…

  1. A classe trabalho e a classe coração são idêndicas, só muda o nome da classe e dos atributos…

2))A classe pessoa assim declara as duas classes supracitadas (coração e trabalho)

private Coracao coracao;
private Trabalho trabalho;

Ou seja idêndicamente…

Conclusão: Agregação e composição não se diferenciam quanto ao código ?..

Muitíssimo obrigado por sua observação.

J

Desculpem da pergunta, mas porque é presciso colocar um objeto Pessoa na classe Coracao e na Trabalho, a referências das mesmas na classe Pessoa não basta para eu trabalhar com essas classes???

C

Repondendo a primeira pergunta…

No código não muda nada a parte de programação, mas precisamos ter sempre especificado no class diagram, pra vc ter uma ideia conseitual da agrecação da uma olhada AQUI, que vai esta a parte conseitual, mas basicamente falando…

Agregação é quanto você fala de um objeto que compoem outro

E sobre a segunda pergunta… estava somente sitando um exemplo pra o irmão da pergunta acima, como disse, foi um exemplo pra destacar a diferença, ok ?

Criado 3 de outubro de 2006
Ultima resposta 9 de out. de 2006
Respostas 4
Participantes 3