L’agrégation est un terme utilisé pour désigner une relation à sens unique entre deux objets. Par exemple, une classe d’étudiant peut avoir une référence de classe d’adresse mais vice versa n’a pas de sens.
En Java, l’agrégation représente une relation HAS-A, ce qui signifie qu’une classe contient la référence d’une autre classe connue pour avoir une agrégation.
La relation HAS-A est basée sur l’utilisation plutôt que sur l’héritage. En d’autres termes, la classe A a – une relation avec la classe B, si la classe A a une référence à une instance de la classe B.
Permet de la comprendre par un exemple et de considérer deux classes Student et Address. Chaque élève a sa propre adresse qui fait une relation, mais l’adresse de l’élève n’a aucun sens. Nous pouvons le comprendre plus clairement en utilisant du code Java.
Ici, dans le code ci-dessus, nous pouvons voir que la classe d’étudiant a – une relation avec la classe d’adresse. Nous avons également dessiné une image pour démontrer la relation entre ces deux classes..
La classe Student
a une variable d’instance de type Address
. Comme nous avons une variable de type Address
dans la classe Student
, elle peut utiliser la référence d’adresse qui est ad
dans ce cas, pour invoquer des méthodes de la classe Address
.
Avantage de l’agrégation
Le principal avantage de l’agrégation est de maintenir la réutilisabilité du code. Si une entité a une relation avec une autre entité, elle peut réutiliser le code simplement en y faisant référence.
Exemple d’agrégation
Permet maintenant de le comprendre en utilisant un exemple, ici nous avons créé deux classes Author et Book et la classe Book a une relation avec la classe Author en ayant sa référence. Maintenant, nous sommes en mesure d’obtenir toutes les propriétés des deux classes.
Nom du livre: Java pour le prix du livre de début: 800———— Détails de l’Auteur———- Nom de l’utilisateur: JohnAuther Âge: 42Auther lieu: États-Unis
Prenons un autre exemple pour comprendre l’agrégation. Supposons que nous ayons un éditeur de classe de plus, la classe Book peut réutiliser les détails de la classe Publisher en utilisant simplement sa référence en tant que classe d’auteur. Permet de le comprendre par le code Java.
Composition en Java
La composition est une forme d’agrégation plus restreinte. La composition peut être décrite comme lorsqu’une classe qui comprend une autre classe en dépend de telle sorte qu’elle ne peut pas exister fonctionnellement sans la classe qui est incluse. Par exemple, une classe Car
ne peut pas exister sans Engine
, car elle ne sera plus fonctionnelle.
D’où le mot Composition qui signifie les éléments dont quelque chose est fait et si nous changeons la composition des choses qu’ils changent, de même dans les classes Java, une classe comprenant une autre classe est appelée composition si la classe incluse fournit une signification fonctionnelle de base à la classe externe.
class Car{ private Engine engine; Car(Engine en) { engine = en; }}
Ici, en examinant le code, nous pouvons comprendre que si la classe de voiture n’a pas de relation avec la classe de moteur, alors la voiture n’a pas d’existence.
La composition est une technique de conception, pas une caractéristique de Java, mais nous pouvons l’atteindre en utilisant du code Java.
Q. Quand utiliser l’héritage et l’agrégation ?
Lorsque vous souhaitez utiliser une propriété ou un comportement d’une classe sans qu’il soit nécessaire de la modifier ou d’y ajouter plus de fonctionnalités, dans ce cas, l’agrégation est une meilleure option car en cas d’agrégation, nous utilisons simplement n’importe quelle classe externe dans notre classe comme variable.
Alors que lorsque vous souhaitez utiliser et modifier une propriété ou un comportement d’une classe externe ou que vous souhaitez ajouter plus de fonctions, il est préférable d’utiliser l’héritage.
Pour en savoir plus sur l’héritage, vous pouvez visiter notre tutoriel détaillé ici. Cliquez ici pour voir l’héritage en Java