خالد مرتضى نشر 29 أغسطس 2021 أرسل تقرير نشر 29 أغسطس 2021 قرأت في كتيب رىى اكت ان الinheritance يفضل عن الcomposition فلا افهم ما الفرق بينهم وماهو الcomposition اصلا 1 اقتباس
0 شرف الدين حفني نشر 29 أغسطس 2021 أرسل تقرير نشر 29 أغسطس 2021 الinheritance "الميراث" عندما يكن لدينا الكلاس A وكلاس اخر من نفس نوعه ولكن مزود بخصائص اكثر يسمى class B , وعادة يتم استخدام الميراث كما قلنا عندما يكون B فعلا صنف ممتد من A مثل الuser وال adminUser يتم الميراث كما فى المثال: class User{ String name; int age; /////////getters and setters/ } class SuperUser extends User{ banUser(){ //////logic to ban user } unbanUser(){ ////logic to unban user } } في المثال السابق نجد ان الSuperUser لديه جميع خصائص الكلاس User ولديه بالاضافة إلى ذلك وظائف جديدة كحظر وفك الحظر عن المستخدمين ولكن إذا كان لدينا كلاس أخر يدعى book ,فهنا ليس من العقل ان يتم ميراثه من قِبل الكلاس user لإنهم ليسوا نفس النوع ,فهنا يتم استخدام الcomposition وهو أن يتم وضع الbook على هيئة خاصية للكلاس user كما في المثال class book{ String name; int price; ///////getters and setters//// } class User{ String name; int age; Book b; ///////getters and setters////// } هنا يمكننا استخدام دوال الكلاس book بدون ميراثه عن طريق استدعاء الكائن b وبوجه عام فإن الcomposition يتم تفضيله عن الinheritance(ميراث) لعدة اسباب من ضمنها : عدد من لغات البرمجة لا يدعم تعدد الميراث, بالإضافة الى أن تعدد الميراث يسبب مشاكل وتعقيد الcomposition يمكنك من تغيير نوع الكلاس المستخدم فى مرحة التشغيل(runtime) مثلاً إذا كان لدينا كلاس يسمى SuperBook وكلاس يسمى OrdinaryBook وكلاً منهم يشترك في نفس الواجهة البرمجية interface يمكنك في مرحلة الruntime أن تقم بتغيير خاصية الbook لدى الuser إلى الSuperBook او الOrdinaryBook ,بينما الميراث لا يحدث إلا في مرحلة الترجمة(compile time) الcomposition اسهل في عملية الاختبار 1 اقتباس
السؤال
خالد مرتضى
قرأت في كتيب رىى اكت ان الinheritance يفضل عن الcomposition فلا افهم ما الفرق بينهم وماهو الcomposition اصلا
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.