Seções iMasters
Desenvolvimento + UML

UML: composição x agregação

Quem está iniciando com os diagramas de classe da UML geralmente sente uma grande dificuldade em entender a diferença das formas de associação entre objetos de uma classe “Agregação” e de uma classe “Composição”. Esse é sempre um assunto polêmico, pois, dependendo das regras de negócio, o mesmo relacionamento que acontece através de uma agregação, em determinado sistema, pode, em outro, se dar por uma composição.

Nosso objetivo aqui é tentar ajudar a esclarecer a diferença dessas formas utilizando um exemplo prático.

As associações representam o equivalente mais próximo dos relacionamentos utilizados no modelo Entidade-Relacionamento, ou seja, seu objetivo é definir a maneira como as classes estão unidas e se relacionam entre si, compartilhando informações – (Guedes, 2006, p. 72)

Vejamos dois relacionamentos para entender melhor as nomenclaturas:

Figura 01 – Todo-Parte

Os relacionamentos Todo-Parte acima são representado por:

  • Pedido (Objeto-Todo) e ItemPedido (Objeto-Parte)
  • Time (Objeto-Todo) e Atleta (Objeto-Parte)

Na Agregação, a existência do Objeto-Parte faz sentido, mesmo não existindo o Objeto-Todo. Vejamos o exemplo Time-Atleta:

Figura 02 – Agregação

Um time é formado por atletas, ou seja, os atletas são parte integrante de um time, mas os atletas existem independentemente de um time existir. Nesse caso, chamamos esse relacionamento de AGREGAÇÃO.

Já a Composição é uma agregação mais forte; nela, a existência do Objeto-Parte NÃO faz sentido se o Objeto-Todo não existir. Vejamos o exemplo Pedido-ItemPedido:

Figura 03 – Composição

Nesse caso, um pedido é composto por um ou vários itens, mas um produto NÃO é item de um pedido se não existe pedido. Assim, chamamos esse relacionamento de COMPOSIÇÃO.

Conclusão

Essas são as formas de se representar o relacionamento entre os objetos das classes do tipo part-of, em que a agregação é representada por um diamante branco, sempre do lado do “Objeto-Todo”, e a composição é representada por um diamante negro, também desenhado do lado do “Objeto-Todo”.

  • Bibliografia:

Guedes, G. T. (2006). UML – Uma abordagem prática 2° Edição. In: G. T. Guedes, UML – Uma abordagem prática 2° Edição (p. 72). Novatec.

Mensagem do anunciante:

Torne-se um Parceiro de Software Intel®. Filie-se ao Intel® Developer Zone. Intel®Developer Zone

Comente também

39 Comentários

massa…
gostei…
tira uma dúvida…
como que esses relacionamentos ficariam em código?

Parabéns Ricardo, muito bom o artigo.
Estou esperando pelo próximo, muito interessante.

Jean Nascimento

Muito bom o artigo, eu dou aula de UML na faculdade e semana passada tava passando agregação e composição. Deverias ver os exemplos que dei hehehehhe

Estou começando a estudar UML por conta própria agora e ainda não havia visto os conceitos de AGREGAÇÃO e COMPOSIÇÃO, mas este exemplo foi perfeito! Bem simples e didático!

eduardo

Show de bola! Direto ao ponto, com exemplos perfeitos.

Deize

Explicação mil vezes melhor que a do meu professor… Muito bom.

Yuri

Muito bom o artigo…. tbm sou estudante de eng. eletrica pela UFRN… meu professor explicou e não entendi nada…bom exemplo, bem simples e de fácil entendimento.

Vinícius

Show de bola cara, ficou muito simples de entender. Parabéns.

Zé da silva

Muito Didático e esclarecedor. Porém minha dúvida agora é no que se refere à implementação, o que muda?

Eliel Deuclides

Didática boa garoto. Simples e direta

Leonardo

Gostei muito das explicações acerca de agregação e composição. Ótimo!

Isaias Frederick

Ricardo Mendes, gostei muito do seu post! Parabéns!

felipe javinha

Melhor explicação que já li :)

Arthur

Gostaria de saber se nas composições é obrigatória a existência de pelo menos um objeto-parte.

Jardel

Muito boa explicação… finalmente entendi isso.

Wilkison Martins

Muita boa a explicação…tava precisando entender direito isso de agregação e composição com exemplos bem práticos… posso terminar os últimos capítulos do meu tcc agora…parabéns pela explicação.

Adriano

Muito boa explicação. Simples e direta. Finalmente farei diagramas consistentes. Associação simples não mais usarei.

Michael Leone

Excelente texto!!
Esclareceu todas as minhas dúvidas a respeito da diferença entre Composição / Agregação em 5 minutos!
Simples e objetivo!
Muito Obrigado! :D

Marcelo Silva

Gostei do post, muito bem explicado mesmo!

Ulisses

Os exemplos estão excelentes.
Parabéns Ricardo Mendes.

Marcelo

Vlw, de muito bom uso =)

thiago

Explicou tudo utilizando exemplos simples e de fácil entendimento. Parabéns

Paulo

Melhor explicação de Agregação / Composição que já li, parabéns!

Peter Zimmermann

Olá,

Também quero agradecer pelo seu post.

As definições são claras ao estudar, mas o momento da aplicação gera dúvidas, isso de “quem sobrevive sem quem”.

Muito didático o seu post, matou as dúvidas.

Abraço.

Carlos Benício

Amigos,
já vi classe que possui um atributo que é uma classe.p.ex.: a classe conta possui um atribui cliente. Ao que se deve isso?

Françoá C. Gonçalves

Gostei da explicação. Contudo, qual arelação da agregação x composição com o uso de ponteiros e valor?

Ricardo Constantino

Parabéns Ricardo Mendes,
boa definição, ótimo artigo.

Diego

Maravilha cara, agora entendi! Brigado

Washington S. Barroso

Parabéns ótimo artigo!

Henrique

Excelente!

carlos

bacana!

hugo

excelente! melhore que minha professora disparado

Iasmin Karoline

Muito bom jovem.

Gabriel98

Vlw fera ajudo bastante.

jailson de souza almeida

Nem sempre uma ferramenta è boa pelo seu preço mais sim pelo seu beneficio , e com bom plenejamento e gerênciamento do projeto contribuem para um bom desenvolvimento

Débora

Explicação excelente! Obrigada!

Qual a sua opinião?