Si una classe té una referència d'entitat, es coneix com a agregació. L'agregació representa la relació HAS-A.
Penseu en una situació, l'objecte Employee conté moltes informacions com ara id, nom, emailId, etc. Conté un objecte més anomenada adreça, que conté la seva pròpia informació com ara ciutat, estat, país, codi postal, etc. tal com es mostra a continuació.
ipconfig a Ubuntu
class Employee{ int id; String name; Address address;//Address is a class ... }
En aquest cas, l'empleat té una adreça de referència d'entitat, de manera que la relació és l'adreça de l'empleat TÉ-A.
corda invertida en c
Per què utilitzar l'agregació?
- Per a la reutilització del codi.
Exemple simple d'agregació
En aquest exemple, hem creat la referència de la classe Operació a 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); } }Prova-ho ara
Output:78.5
Quan s'utilitza l'agregació?
- La reutilització del codi també s'aconsegueix millor mitjançant l'agregació quan no hi ha una relació.
- L'herència només s'ha d'utilitzar si la relació és-a es manté durant tota la vida dels objectes implicats; en cas contrari, l'agregació és la millor opció.
Entendre un exemple significatiu d'agregació
En aquest exemple, l'empleat té un objecte d'adreça, l'objecte d'adreça conté la seva pròpia informació com ara ciutat, estat, país, etc. En aquest cas, la relació és l'adreça de l'empleat TÉ-A.
Address.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(); } }Prova-ho ara
Output:111 varun gzb UP india 112 arun gno UP indiadescarregueu aquest exemple