Par exemple, une université est composée de plusieurs facultés, et chaque faculté est un agrégat de plusieurs professeurs. La destruction de l'université implique la destruction des facultés qui la composent, alors que la destruction d'une faculté n'implique pas la destruction des professeurs liés à cette faculté par une relation d'agrégation. On peut écrire cet exemple en C++ :
Cela est dû au fait que les professeurs sont déclarés en tant que pointeurs. Il faudrait donc une ligne
for(long i = 0;i<5;i++){delete enseignants[i]}
dans le destructeur de facultés afin de les détruire.
Les facultés sont par contre déclarées en tant que variable membre (et non pointeur) et seront donc détruites automatiquement lors de la destruction d'une instance.
En UML, l'agrégation se note par un trait entre deux classes orné d'un losange vide du côté de la classe agrégat.