Wenn eine Klasse eine Entitätsreferenz hat, wird dies als Aggregation bezeichnet. Aggregation stellt eine HAS-A-Beziehung dar.
Stellen Sie sich eine Situation vor: Das Mitarbeiterobjekt enthält viele Informationen wie ID, Name, E-Mail-ID usw. Es enthält ein weiteres Objekt mit dem Namen Adresse, das seine eigenen Informationen wie Stadt, Bundesland, Land, Postleitzahl usw. enthält, wie unten angegeben.
class Employee{ int id; String name; Address address;//Address is a class ... }
In einem solchen Fall verfügt der Mitarbeiter über eine Entitätsreferenzadresse, sodass die Beziehung die HAS-A-Adresse des Mitarbeiters ist.
Warum Aggregation verwenden?
- Für die Wiederverwendbarkeit von Code.
Einfaches Beispiel für Aggregation
In diesem Beispiel haben wir die Referenz der Operation-Klasse in der Circle-Klasse erstellt.
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); } }Testen Sie es jetzt
Output:78.5
Wann wird Aggregation verwendet?
- Die Wiederverwendung von Code lässt sich auch am besten durch Aggregation erreichen, wenn keine Ist-Ein-Beziehung besteht.
- Vererbung sollte nur verwendet werden, wenn die is-a-Beziehung während der gesamten Lebensdauer der beteiligten Objekte aufrechterhalten wird; Andernfalls ist die Aggregation die beste Wahl.
Verstehen eines aussagekräftigen Beispiels der Aggregation
In diesem Beispiel hat der Mitarbeiter das Objekt „Adresse“. Das Adressobjekt enthält seine eigenen Informationen wie Stadt, Bundesland, Land usw. In diesem Fall ist die Beziehung die HAS-A-Adresse des Mitarbeiters.
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(); } }Testen Sie es jetzt
Output:111 varun gzb UP india 112 arun gno UP indiaLaden Sie dieses Beispiel herunter