کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Aggregation در Java

آموزش Java - Aggregation یا رابطه ی یک طرفه کل به جز یا Has-A در Java

زمانی که یک کلاس جاوایی حاوی اشاره گری به کلاس دیگری باشد (entity reference یا آبجکت از جنس کلا دیگر)، این امر تحت عنوان Aggregation یا رابطه ی یک طرفه ی Has-A شناخته می شود.

شرایطی را در نظر بگیرید که آبجکت Employee اطلاعات زیادی نظیر id، name، emailId و غیره ... را دارد. این کلاس بعلاوه یک آبجکت به نام address دارد که اطلاعات خود نظیر اسم شهر (city)، استان (state)، کشور (country)، کد پستی (zip code) و غیره را مانند زیر شامل می شود.

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

در چنین شرایطی، Employee داخل خود یک اشاره گر به نام address به کلاس (موجودیت) Address دارد. بنابراین رابطه به این صورت است: Employee Has-A address که یک رابطه ی یک طرفه ی کل به جز محسوب می شود.

چرا باید از Aggregation استفاده کرد؟

  • قابلیت استفاده ی مجدد از کد (code reusability) آموزش Java

در مثال جاری، یک آبجکت (اشاره گر) از جنس کلاس 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);  
 }  
}  

خروجی:

78.5

چه زمانی باید از Aggregation استفاده کرد؟

  • قابلیت استفاده ی مجدد کد زمانی با aggregation بهترین نتجیه را می دهد که رابطه ی is-a (جز به کل) وجود نداشته باشد.
  • ارث بری (Inheritance) باید تنها زمانی استفاده شود که رابطه ی is-a در تمام و سرتاسر چرخه ی حیاط (lifetime) آبجکت های درگیر در رابطه حفظ شود، در غیر این صورت aggregation بهترین گزینه می باشد.

درک مفهوم aggregation به وسیله ی یک مثال کاربردی

در مثال جاری، Employee دارای آبجکتی از جنس کلاس Address می باشد. آبجکت address اطلاعات و داده های اختصاصی خود نظیر شهر (فیلد city)، استان (state)، کشور (country) و غیره ... می باشد. در چنین شرایطی، رابطه بدین صورت می باشد: Employee HAS-A address یا کلاس address دارای رابطه ی جز به کل با Employee می باشد.

فایل: 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();   
}  
}  

خروجی:

111 
varun
gzb UP india
112 arun
gno UP india      
1396/07/02 8014 2027
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...