În programarea computerizată și mai precis în programarea orientată obiect , agregarea face posibilă definirea unei entități ca fiind legată de mai multe entități de clasă diferite. Este o generalizare a compoziției , care nu implică apartenență.
De exemplu, o universitate este formată din mai multe facultăți și fiecare facultate este un agregat de mai mulți profesori. Distrugerea universității implică distrugerea facultăților care o compun, în timp ce distrugerea unei facultăți nu implică distrugerea profesorilor legați de această facultate printr-o relație de agregare. Putem scrie acest exemplu în C ++ :
class Professeur; class Departement { ... private: // Agrégation Professeur* enseignants[5]; ... }; class Universite { ... private: // Composition Departement facultes[20]; ... };Acest lucru se datorează faptului că profesorii sunt declarați ca indicatori . Ar fi nevoie de o linie for(long i = 0;i<5;i++)delete enseignants[i]} în distrugătorul facultăților pentru a le distruge.
Pe de altă parte, facultățile sunt declarate ca o variabilă membru (și nu un pointer) și, prin urmare, vor fi distruse automat atunci când o instanță este distrusă.
În UML , agregarea este notată printr-o linie între două clase împodobite cu un diamant alb pe partea clasei agregate.