Hvis en klasse har en enhedsreference, er den kendt som aggregation. Aggregation repræsenterer HAS-A-forhold.
Overvej en situation, Employee-objektet indeholder mange informationer såsom id, navn, emailId osv. Det indeholder endnu et objekt navngivet adresse, som indeholder sine egne oplysninger såsom by, stat, land, postnummer osv. som angivet nedenfor.
class Employee{ int id; String name; Address address;//Address is a class ... }
I sådanne tilfælde har medarbejder en enhedsreferenceadresse, så forholdet er medarbejderens HAS-A-adresse.
Hvorfor bruge aggregation?
- Til genbrug af kode.
Simpelt eksempel på aggregation
I dette eksempel har vi oprettet referencen 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 nu
Output:78.5
Hvornår bruger man aggregation?
- Kodegenbrug opnås også bedst ved aggregering, når der ikke er nogen er-en relation.
- Arv bør kun anvendes, hvis forholdet er-a opretholdes gennem hele levetiden af de involverede objekter; ellers er aggregering det bedste valg.
Forstå meningsfuldt eksempel på aggregation
I dette eksempel har medarbejder et adresseobjekt, adresseobjekt indeholder sine egne oplysninger såsom by, stat, land osv. I sådanne tilfælde er forholdet medarbejder 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 nu
Output:111 varun gzb UP india 112 arun gno UP indiadownload dette eksempel