Si une classe a une référence d’entité, elle est appelée agrégation. L'agrégation représente la relation HAS-A.
Considérons une situation, l'objet Employee contient de nombreuses informations telles que l'identifiant, le nom, l'emailId, etc. Il contient un autre objet nommé adresse, qui contient ses propres informations telles que la ville, l'état, le pays, le code postal, etc., comme indiqué ci-dessous.
class Employee{ int id; String name; Address address;//Address is a class ... }
Dans ce cas, l'employé a une adresse de référence d'entité, la relation est donc l'adresse HAS-A de l'employé.
Pourquoi utiliser l'Agrégation ?
- Pour la réutilisabilité du code.
Exemple simple d'agrégation
Dans cet exemple, nous avons créé la référence de la classe Operation dans la classe Circle.
class Operation{ int square(int n){ return n*n; } } class Circle{ Operation op;//aggregation double pi=3.14; double area(int radius){ op=new Operation(); int rsquare=op.square(radius);//code reusability (i.e. delegates the method call). return pi*rsquare; } public static void main(String args[]){ Circle c=new Circle(); double result=c.area(5); System.out.println(result); } }Testez-le maintenant
Output:78.5
Quand utiliser l’agrégation ?
- La réutilisation du code est également mieux réalisée par l'agrégation lorsqu'il n'y a pas de relation est-une.
- L'héritage ne doit être utilisé que si la relation est-a est maintenue tout au long de la durée de vie des objets impliqués ; sinon, l'agrégation est le meilleur choix.
Comprendre un exemple significatif d'agrégation
Dans cet exemple, l'employé a un objet d'adresse, l'objet d'adresse contient ses propres informations telles que la ville, l'état, le pays, etc. Dans ce cas, la relation est l'adresse de l'employé HAS-A.
Adresse.java
public class Address { String city,state,country; public Address(String city, String state, String country) { this.city = city; this.state = state; this.country = country; } }
Emp.java
public class Emp { int id; String name; Address address; public Emp(int id, String name,Address address) { this.id = id; this.name = name; this.address=address; } void display(){ System.out.println(id+' '+name); System.out.println(address.city+' '+address.state+' '+address.country); } public static void main(String[] args) { Address address1=new Address('gzb','UP','india'); Address address2=new Address('gno','UP','india'); Emp e=new Emp(111,'varun',address1); Emp e2=new Emp(112,'arun',address2); e.display(); e2.display(); } }Testez-le maintenant
Output:111 varun gzb UP india 112 arun gno UP indiatéléchargez cet exemple