إذا كان للفئة مرجع كيان، يُعرف ذلك باسم التجميع. يمثل التجميع علاقة HAS-A.
قائمة سلسلة جافا
خذ بعين الاعتبار موقفًا ما، يحتوي كائن الموظف على العديد من المعلومات مثل المعرف والاسم ومعرف البريد الإلكتروني وما إلى ذلك. ويحتوي على كائن آخر يسمى العنوان، والذي يحتوي على معلومات خاصة به مثل المدينة والولاية والبلد والرمز البريدي وما إلى ذلك كما هو موضح أدناه.
class Employee{ int id; String name; Address address;//Address is a class ... }
في مثل هذه الحالة، يكون لدى الموظف عنوان مرجعي للكيان، وبالتالي فإن العلاقة هي عنوان الموظف HAS-A.
قراءة ملف اكسل في جافا
لماذا استخدام التجميع؟
- من أجل إعادة استخدام الكود.
مثال بسيط على التجميع
في هذا المثال، قمنا بإنشاء مرجع فئة العملية في فئة الدائرة.
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
متى استخدم التجميع؟
- من الأفضل أيضًا تحقيق إعادة استخدام التعليمات البرمجية من خلال التجميع عندما لا تكون هناك علاقة.
- يجب استخدام الميراث فقط إذا تم الحفاظ على العلاقة طوال عمر الكائنات المعنية؛ وإلا فإن التجميع هو الخيار الأفضل.
فهم مثال مفيد للتجميع
في هذا المثال، لدى الموظف كائن عنوان، ويحتوي كائن العنوان على معلومات خاصة به مثل المدينة والولاية والبلد وما إلى ذلك. وفي مثل هذه الحالة، تكون العلاقة هي عنوان الموظف HAS-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قم بتنزيل هذا المثال