logo

Agregavimas Java

Jei klasė turi objekto nuorodą, ji vadinama agregacija. Agregacija reiškia HAS-A ryšį.

java objektas į json

Apsvarstykite situaciją: Darbuotojo objekte yra daug informacijos, tokios kaip ID, vardas, el. pašto adresas ir tt Jame yra dar vienas objektas, pavadintas adresu, kuriame yra sava informacija, pvz., miestas, valstija, šalis, pašto kodas ir tt, kaip nurodyta toliau.

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

Tokiu atveju darbuotojas turi subjekto nuorodos adresą, taigi ryšys yra darbuotojo HAS-A adresas.

Kodėl naudoti agregaciją?

  • Dėl kodo pakartotinio naudojimo.

Paprastas agregavimo pavyzdys

Šiame pavyzdyje mes sukūrėme Operation klasės nuorodą apskritimo klasėje.

 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); } } 
Išbandykite dabar
 Output:78.5 

Kada naudoti agregaciją?

  • Pakartotinis kodo naudojimas taip pat geriausiai pasiekiamas sujungiant, kai nėra ryšio.
  • Paveldėjimas turėtų būti naudojamas tik tuo atveju, jei ryšys yra palaikomas per visą susijusių objektų gyvavimo laikotarpį; kitu atveju agregavimas yra geriausias pasirinkimas.

Prasmingo agregavimo pavyzdžio supratimas

Šiame pavyzdyje darbuotojas turi adreso objektą, o adreso objektas turi savo informaciją, tokią kaip miestas, valstija, šalis ir tt Tokiu atveju ryšys yra darbuotojo HAS-A adresas.

Adresas.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(); } } 
Išbandykite dabar
 Output:111 varun gzb UP india 112 arun gno UP india 
atsisiųskite šį pavyzdį