Tabla de Contenidos
L’agrégation est un type d’association entre des classes qui peut être effectuée dans divers langages de programmation orientés objet, tels que Java. C’est un processus qui permet de réutiliser le code rapidement et efficacement, ce qui rend les programmes beaucoup plus faciles à écrire et à exécuter plus efficacement.
De manière générale, l’agrégation fait référence à une classe dans une autre classe. Cela crée ce qu’on appelle une relation HAS-A entre la classe contenante et la classe contenante. Ces relations ont la particularité d’être unidirectionnelles, puisqu’elles impliquent que l’une des classes contient l’autre ; cela évite que le contraire se produise.
Par exemple, on peut dire qu’une entreprise, qui peut être vue d’un point de vue programmation comme une classe d’objets, a un ensemble d’employés ; ceux-ci, à leur tour, peuvent également être considérés comme des objets avec leurs propres attributs. Dans ce cas, la classe contenante est l’entreprise, tandis que la classe contenante est les employés. Cette relation n’a de sens que dans ce sens, c’est-à-dire de l’entreprise vers le salarié. La relation en sens inverse n’a pas de sens, puisque cela reviendrait à dire que l’employé contient l’entreprise. Le fait que cela n’ait pas de sens montre qu’il s’agit d’une relation à sens unique.
Agrégation dans les diagrammes de classes
Dans le langage de modélisation unifié (UML), qui est un type de langage visuel universel créé pour concevoir des systèmes logiciels complexes, les diagrammes de classes sont utilisés pour décrire la structure et les caractéristiques d’un système. Dans ces schémas, chaque classe et ses relations avec les autres sont représentées au moyen de figures géométriques. Dans le cas de l’agrégation, cette relation est représentée par un losange creux du côté de la classe contenante, qui est reliée au moyen d’un segment de droite à la classe contenante. Par exemple:
Il s’agit d’une relation d’agrégation indiquant que la classe Well contient la classe Duck.
Comment l’agrégation est-elle implémentée en Java ?
L’implémentation de l’agrégation en Java est relativement simple. Il s’agit simplement de créer deux classes, puis de référencer la première classe dans la seconde.
En plus d’établir une relation « avoir un » ou « devoir », l’agrégation Java se caractérise par une relation faible entre l’objet conteneur et le contenu. Cela signifie que la destruction de l’un n’implique pas la destruction de l’autre. Pour comprendre ce type de relation, la relation entre un enseignant et ses élèves peut être prise comme exemple. Dans ce cas, la disparition ou le décès de l’enseignant n’entraîne pas la disparition ou le décès de ses élèves.
Le cas contraire serait la relation entre un être humain et son cœur. Il ne fait aucun doute que le cœur est contenu dans l’être humain, mais cette relation est différente de celle de l’agrégation. En effet, dans ce cas, les deux dépendent l’un de l’autre. La destruction de l’être humain détruit également le cœur, car pour fonctionner, il a besoin des nutriments et de l’oxygénation que le corps lui fournit. D’autre part, la destruction du cœur détruit aussi l’être humain, puisque sans cœur on ne peut pas vivre (hors cas de greffes ou autres méthodes de survie artificielle).
Exemple d’agrégation
Le code suivant illustre l’implémentation de l’agrégation en tant que forme d’association entre deux classes à l’aide de Java. L’exemple concerne un programme permettant de savoir quels employés d’une entreprise ont leur propre voiture et lesquels n’en ont pas, ainsi que ceux qui ont des vélos et ceux qui n’en ont pas.
Puisque nous cherchons à établir une relation indiquant que le salarié « a » une voiture et/ou que le salarié « a » un vélo, il s’agit d’une relation d’agrégation entre la classe à laquelle appartiendra le salarié (que nous appellerons Salarié , pour des raisons évidentes) et deux classes supplémentaires, une pour la voiture et une pour le vélo.
La première chose à faire dans ces cas est de créer les classes respectives. Dans ce cas, il y a trois classes : une pour la voiture, une pour le vélo et une pour le salarié. La figure suivante montre le code de création de ces classes, nommées Car, Bicycle et Employee.
Dans le code ci-dessus, vous pouvez également voir que chaque classe est associée à certains attributs. Dans le cas de la voiture, il a comme attributs le modèle, la couleur et les plaques d’immatriculation, tous associés à la voiture. La même chose se produit avec le vélo, qui est associé à un numéro de plaque d’immatriculation et au modèle.
Lorsque nous regardons la classe Employé, nous remarquons que cette classe a les attributs monbreemp , qui représente le nom de l’employé, et empid, qui représente le numéro d’identification de l’employé ; il référence ensuite les classes Car et Bike, créant l’association d’agrégation entre ces classes. Enfin, la fiche d’un employé est créée avec sa voiture et son vélo.
Notez que dans cet exemple, référencer les classes Car et Bike dans la classe Employee permet d’accéder aux attributs bike et car depuis la classe Employee.
Le résultat de ce programme serait :
________Détails de l’employé________
Nom de l’employé : Xavier
Numéro d’identification de l’employé : 210921
________Détails de la voiture de l’employé________
Modèle de voiture : Corolle
Couleur de la voiture : vert
Plaque d’immatriculation : XFZ-043
________Détails du vélo de l’employé________
Modèle de vélo : MERIDA
Plaques de vélo : LAA-11B
Les références
- Agrégation en programmation Java . (2020). ICHI.PRO. https://ichi.pro/es/agregacion-en-programacion-java-144087060492693
- Barquinero, JMM (2019). Agrégation Vs Composition dans les diagrammes de classes. UML. | Blog des MERS . Blog des MERS. https://www.seas.es/blog/informatica/agregacion-vs-composicion-en-diagramas-de-clases-uml/
- Mentorat logiciel. (2019). POO8 – Programmation Orientée Objet en Java – Diagrammes UML & POO – Exercices [Vidéo]. Youtube. https://www.youtube.com/watch?v=-Gy7Rf_wOeY