مشخصات مقاله
-
2027
-
0.0
-
8014
-
0
-
0
آموزش 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 آموزش 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
