Depois a doença da vida, que não dá ao mundo objetivo cores tão azuladas como o nome britânico de 
Ficarás tão adiantado agora, meu leitor, como se não lesses essas páginas, destinadas a não serem lidas.

orientação a objetos - Composição e agregação: quais as diferenças e como usar? - Stack Overflow em Português
Em orientação a objetos é comum que objetos de uma certa classe possuam referências a um ou mais objetos de outras classes. Um exemplo muito simples é um objeto de uma classe Pedido que possui referência a uma lista de Itens, de forma que cada objeto desse tipo possua referência a vários objetos de outro tipo.
Acontece que em alguns casos chamam isso de composição e em outros casos chamam isso de agregação. Pesquisando li que composição é quando um dos objetos não existe independente do outro e agregação é quando os dois podem existir independentemente. É só isso mesmo?
Mesmo se for só isso, eu ainda não consigo identificar quais as implicações disso na prática. Basicamente, nos dois casos basta ter uma propriedade no objeto cujo tipo é a classe do outro tipo. Não tem em código uma diferença entre agregação e composição, então quais as utilidades de diferenciar esses dois casos e qual a diferença dessas duas abordagens na prática?
A diferença entre composição e agregação tem relação com a existência dos objetos. Essa diferença não é tratada pelas linguagens de programação que seguem o paradigma orientado a objetos (pelo menos não as convencionais: java, c#, c++).
O comportamento de agregação não pertence exclusivamente ao paradigma orientado a objetos. Temos o mesmo comportamento no paradigma imperativo. É o caso das estruturas em C. Veja um exemplo: