As composições são um caso especial das
associações
de agregação. Elas representam a noção de composição e apenas têm sentido em
associações “um para muitos” e, mais raramente, em associações “muitos
para muitos”. Enquanto que nas associações anteriormente referidas não existem
classes mais importantes, nas agregações
existem uma classe (supra classe) que representa a agregação dos
objetos
da outra classe (sub classe). A título de exemplo, considere-se os itens (linhas)
de uma fatura. Usualmente uma fatura é (ou pode ser) composta por vários itens,
cada um deles diz respeito a um produto faturado. Os itens têm atributos
próprios (quantidade, preço unitário, descrição do produto, etc.) e entidade
própria (é possível distinguir um item de outro na mesma fatura). Uma possível
representação deste domínio é o diagrama abaixo. Uma fatura possui vários itens,
mas um item apenas diz respeito a uma fatura. Uma agregação tem um losango
fechado apontando para a parte contendo o todo.

É importante observar que os itens apenas existem enquanto existir
a fatura da qual fazem parte. Dito de outra forma, uma fatura é uma
agregação, ou seja uma composição de itens. Se removermos uma fatura,
os itens dessa fatura também serão removidos. Neste caso temos um tipo
de agregação conhecido como Composição. Uma composição representa
uma relação mais forte entre o objeto agregador e os objetos componentes