logo

Aggregation i Java

Om en klass har en enhetsreferens kallas det aggregation. Aggregation representerar HAS-A relation.

reactjs karta

Tänk på en situation, Employee-objektet innehåller många uppgifter som id, namn, emailId etc. Det innehåller ytterligare ett objekt med namnet adress, som innehåller sin egen information som stad, stat, land, postnummer etc. enligt nedan.

 class Employee{ int id; String name; Address address;//Address is a class ... } 

I sådana fall har anställd en enhetsreferensadress, så förhållandet är anställd HAS-A-adress.

Varför använda Aggregation?

  • För återanvändbarhet av kod.

Enkelt exempel på aggregation

I det här exemplet har vi skapat referensen för klassen Operation i klassen 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); } } 
Testa det nu
 Output:78.5 

När använder du aggregering?

  • Återanvändning av kod uppnås också bäst genom aggregering när det inte finns något är-ett förhållande.
  • Arv bör endast användas om förhållandet är-a upprätthålls under hela livslängden för de inblandade objekten; annars är aggregering det bästa valet.

Förstå meningsfullt exempel på aggregation

I det här exemplet har den anställde ett adressobjekt, adressobjektet innehåller sin egen information såsom stad, stat, land etc. I sådana fall är förhållandet anställd HAS-A-adress.

Adress.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(); } } 
Testa det nu
 Output:111 varun gzb UP india 112 arun gno UP india 
ladda ner det här exemplet