logo

Агрегиране в Java

Ако даден клас има препратка към обект, той е известен като Aggregation. Агрегирането представлява връзката HAS-A.

Помислете за ситуация, обектът Employee съдържа много информация като id, име, emailId и т.н. Той съдържа още един обект с име адрес, който съдържа собствена информация като град, щат, държава, пощенски код и т.н., както е дадено по-долу.

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

В такъв случай Служителят има референтен адрес на обект, така че връзката е Служителят ИМА адрес.

Защо да използвате Aggregation?

  • За повторно използване на кода.

Прост пример за агрегиране

В този пример създадохме препратка към клас Operation в класа 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); } } 
Тествайте сега
 Output:78.5 

Кога се използва Aggregation?

  • Повторното използване на код също се постига най-добре чрез агрегиране, когато няма връзка 'е-а'.
  • Наследяването трябва да се използва само ако връзката is-a се поддържа през целия живот на включените обекти; в противен случай агрегацията е най-добрият избор.

Разбиране на смислен пример за агрегиране

В този пример Служителят има обект на Адрес, адресният обект съдържа собствена информация като град, щат, държава и т.н. В такъв случай връзката е Служителят ИМА адрес.

Адрес.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(); } } 
Тествайте сега
 Output:111 varun gzb UP india 112 arun gno UP india 
изтеглете този пример