Agrégation (programmation)

Pour les articles homonymes, voir Agrégation.

symbole graphique de l'agrégation dans les diagrammes de la modélisation UML.

En programmation informatique et plus précisément en programmation orientée objet, l'agrégation permet de définir une entité comme étant liée à plusieurs entités de classe différentes. C'est une généralisation de la composition, qui n’entraîne pas l'appartenance.

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++ :

class Professeur;

class Departement

...
private:
// Agrégation
Professeur* enseignants[5];
...

class Universite

...
private:
// Composition
Departement facultes[20];
...

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.

Diagramme UML des classes de l'exemple précédent.

## Voir aussi

[modifier | modifier le code]

* Composition

v · m

Unified Modeling Language

Organismes |

* ISO
* Object Management Group
* Partenaires UML

Personnalités |

* Grady Booch
* Ivar Jacobson
* James Rumbaugh

Concepts |  | Orientation objet |

* POO
* Méthode d'analyse et de conception d'applications orientées objet
* Encapsulation
* Héritage
* Polymorphisme

|

Structure |

* Acteur
* Artéfact
* Attribut
* Classe
* Composant
* Interface
* Objet
* Package
* Propriété

Comportement |

* Activité
* Événement
* Message
* Méthode
* État
* Cas d'utilisation

Relation |

* Agrégation
* Association
* Composition
* Dépendance
* Généralisation
* Héritage

Autres |

* Cardinalité
* Profil
* Stéréotype

Diagrammes |  | Structure |

* Classes
* Composants
* Structure composite
* Déploiement
* Objets
* Paquetages
* Profils

|

Comportement |

* Activité
* État
* Cas d'utilisation

Interaction |

* Communication
* Séquence
* Global d'interaction
* Temps

Articles liés |

* Unified Process
* Systems Modeling Language
* Colorisation d'UML
* XMI

* Portail de la programmation informatique

*[v]: Voir ce modèle.
*[m]: Modifier ce modèle. Merci de prévisualiser avant de sauvegarder.