Hvis en klasse har en enhetsreferanse, er den kjent som aggregering. Aggregering representerer HAS-A-forhold.
Tenk på en situasjon, Employee-objektet inneholder mange opplysninger som id, navn, emailId osv. Det inneholder enda et objekt med navn adresse, som inneholder sin egen informasjon som by, stat, land, postnummer etc. som gitt nedenfor.
class Employee{ int id; String name; Address address;//Address is a class ... }
I slike tilfeller har ansatt en enhetsreferanseadresse, så forholdet er ansatt HAS-A-adresse.
Hvorfor bruke aggregering?
- For gjenbruk av kode.
Enkelt eksempel på aggregering
I dette eksemplet har vi laget referansen til Operation-klassen i Circle-klassen.
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); } }Test det nå
Output:78.5
Når bruker du aggregering?
- Gjenbruk av kode oppnås også best ved aggregering når det ikke er en er-en-relasjon.
- Arv bør kun brukes hvis forholdet er-a opprettholdes gjennom hele levetiden til de involverte objektene; ellers er aggregering det beste valget.
Forstå meningsfullt eksempel på aggregering
I dette eksemplet har ansatt et objekt med adresse, adresseobjekt inneholder sin egen informasjon som by, stat, land osv. I slike tilfeller er forholdet ansatt HAS-A-adresse.
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(); } }Test det nå
Output:111 varun gzb UP india 112 arun gno UP indialast ned dette eksemplet