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

33 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!

Qual a sua opinião?