الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن الinterface and abstract class

بدأه ayash في 22 أغسطس 2011 · 2 رد · 1,073 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم

----------------------------------

متي يتم استعمال الinterface عندما اريد ان اعمل مشروع معين؟ما الهدف منه؟

متى يتم استخدام الabstract class ؟ما الهدف منه؟

هل يمكن ان استخدم الabstract class بديلا عن الinterface?

وشكرا

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#2
اقتباس
متي يتم استعمال الinterface عندما اريد ان اعمل مشروع معين؟ما الهدف منه؟

يتم إستخدامها عندما يكون لديك اكثر من class يقوموا بمهام مختلفه و لكن لهما نفس الـ interface، مثلا معادلة الحصول على مساحة المثلث تختلف عن معادلة الحصول على مساحة الدائره لذا لا نستطيع كتابة دالة واحده تعيد لنا المساحه الخاصه بالشكل المدخل لها1، لذا سنقوم بعمل interface تحتوى على داله تعيد المساحه سنطلق عليها IShape و سنقوم بتضمينها داخل الفئتين Triangle و Circle.

اقتباس

متى يتم استخدام الabstract class ؟ما الهدف منه؟

عندما يوجد لديك كود مشترك بين اكثر من فئه و مهام مختلفه لكل فئه و الدوال المستخدمه فى تأدية هذه المهام لها نفس البصمه، حينها انت لا تستطيع استخدام interface لإنها ستعبر فقط عن الدوال ذات البصمه الواحده و الكود المشترك لن تستطيع وضعه بها، هنا يأتى دور الـ abstract class حيث يمكنك ان تضع بها الكود المشترك و ايضا هيكل الدوال و لن يستطيع المستخدم انشاء كائن منها و ذلك لإحتواها على abstract methods. مثلا انت تقوم يتصميم برنامج ليحاكى حياة البشر لذا ستقوم بصنع الفئه Human و التى تحتوى على الخصائص Name و Age و الدوال Wake و Sleep و Eat و ستقوم بوراثة هذه الفئه داخل الفئتين Male و Female.

على إفتراض ان الفئات تمثل اشخاص مسلمين فلابد من وضع فعل الصلاه لكل منهم و حيث ان كيفية تنفيذ هذا الفعل واحد لكلاهما ألا ان المكان الذى يتم تنفيذ الصلاه مختلف فالمرأه تصلي بالمنزل اما الرجل فيصلي بالمسجد لذا سنقوم بوضع الداله Pary داخل الفئه Human و سنجعلها Abstract Method و بداخل الفئتين Male و Female سنقوم بكتابة الكود الخاص بكل منهم.

اقتباس
هل يمكن ان استخدم الabstract class بديلا عن الinterface?

نعم يمكن و لكن يعتبر تصميم سيء و السبب هو ان لكل من النوعين استخدام يختلف عن الأخر حتى و ان تشابه عملهما، و ايضا امكانيات اللغه التى تستخدمها ستقبدك بشده فمثلا لغة الجافا و لغات الدوت نت تسمح لك بتضمين اى عدد تريده من الواجهات و لكن تسمح لك بوراثة فئه واحده فقط و بالتالي إن قمت بإستخدام abstract class بدلا من الـ interface و بعدها احتجت ان تقوم بوراثة فئه اخرى داخل شجرة التصميم ستجد ان الأمور اصبحت صعبه و مشتته و ستحتاج لإعادة هيكلة التصميم من جديد.

الخلاصه

إستخدم الـ Interface عندما تكون لديك مجموعه من الدوال بتضمين مختلف لكل فئه.

إستخدم الـ Base class عندما يكون لديك كود مشترك بين أكثر من فئه.

إستخدم الـ Abstract class عندما يكون لديك كود مشترك بين اكثر من فئه و ايضا دوال بتضمين مختلف لتلك الفئات.


[/line]

1 يمكن ذلك عن طريق الـ Up-casting حيث إذا كانت كلتا الفئتين لهما نفس الـ base class و اللغه تدعم run-time type identification يمكن كتابة الكود داخل داله واحده و استخدام هذه الطريقه للحصول على المساحه التى تريد و لكن هذا إسلوب سيء يفضل تجنبه.

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 23 أغسطس 2011 في 19:22

3

مدونتي: C++ Tips and Tricks

#3

مشكور اكثير اكثير اخوي وبارك الله فيك

شرح اكثر من رائع

ازلت عني الالتباس بينها

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

مواضيع مشابهة