Ha egy osztálynak van entitáshivatkozása, azt összesítésnek nevezzük. Az aggregáció a HAS-A kapcsolatot képviseli.
Tekintsünk egy helyzetet, az Employee objektum sok információt tartalmaz, például azonosítót, nevet, emailId-t stb. Tartalmaz még egy objektum nevű címet, amely tartalmazza a saját információkat, például várost, államot, országot, irányítószámot stb. az alábbiak szerint.
class Employee{ int id; String name; Address address;//Address is a class ... }
Ebben az esetben az alkalmazottnak van egy entitás hivatkozási címe, így a kapcsolat a Munkavállaló HAS-A címe.
Miért érdemes az Aggregációt használni?
- A kód újrafelhasználhatósága érdekében.
Egyszerű példa az aggregációra
Ebben a példában létrehoztuk az Operation osztály hivatkozását a Circle osztályban.
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); } }Tesztelje most
Output:78.5
Mikor használjuk az Aggregációt?
- A kód újrafelhasználása akkor is aggregálással érhető el a legjobban, ha nincs is-a kapcsolat.
- Az öröklődést csak akkor szabad használni, ha a kapcsolat az érintett objektumok teljes élettartama alatt fennmarad; egyébként az összesítés a legjobb választás.
Az aggregáció értelmes példájának megértése
Ebben a példában az alkalmazottnak van egy Cím objektuma, a címobjektum pedig saját információkat tartalmaz, mint például város, állam, ország stb. Ebben az esetben a kapcsolat az alkalmazott HAS-A címe.
Cím.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(); } }Tesztelje most
Output:111 varun gzb UP india 112 arun gno UP indiatöltse le ezt a példát