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