تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثاني والعشرون - ال polymorphism
#1
كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

عد بداية للدرس السابع عشر للتعرف على المبدأ العام لل polymorphism

التعريف الماضي والذي يسمح لك بتعريف class بدون اي implementation ، يوفر لك ايضاً كتابة كود ولكن في المقابل يسمح لك بتغيير ال implementation الخاص بالدالة بين الكلاس والآخر ، وهو ما يعرف باسم Overridding .

لنفترض مثال السيارة الخاص بنا ، لو افترضنا وجود الدالة التالية الخاصة بحساب المسافة المتبقية للسيارة قبل ان ينفد البنزين ، وحيث ان السيارة (مثلاً) تصرف جالوناً لكل 10 كيلومتر .
c#:

كود :
public int calc(int fuel)
{
return fuel * 10;
}
vb.net:


كود :
Public Function calc(ByVal fuel As Integer) As Integer

Return fuel * 10

End Function
ولكن بعد عملنا للسيارة BMW اكتشفنا ان هذه السيارة لا تسير على نفس القاعدة ، إذ انها تصرف جالوناً لكل 5 كيلومترات فقط ، في هذه الحالة نحن بحاجة إلى اعادة تعريف الدالة calc في الكلاس المشتق ، هذا هو ما يعرف باسم اعادة القيادة Overridding وهو احد مبادئ ال polymorphism . يتم ذلك عن طريق تعريف الدالة الاساسية في ال base class من نوع virtual بالشكل التالي :


c#:

كود :
public virtual int calc(int fuel)
{
return fuel * 10;
}
vb.net:


كود :
Public Overridable Function calc(ByVal fuel As Integer) As Integer

Return fuel * 10

End Function
ال virtual او ال overriddeable تعني ان هذه الدالة يمكن اعادة تعريفها في الكلاس المشتق ، كما يمكن عدم تعريفها ايضاً ، لاعادة تعريفها نكتب الكود التالي في الكلاس المشتق :

c#:


كود :
public override int calc(int fuel)
{
return fuel * 5;
}
vb.net:


كود :
Public Overloads Overrides Function calc(ByVal fuel As Integer) As Integer

Return fuel * 5

End Function
ايضاً يمكنك ترك ال implementation فارغاً في الكلاس الرئيسي ومن ثم قم ببرمجته في الكلاسات الأبناء ، يعرف الكلاس الفارغ من ال implementation باسم Abstract class وهو غير ال interface الذي سنتعرف عليه في مرحلة قادمة .
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الأول : تحميل .net 2008 ومميزات استخدامه oneyemenweb2 1 669 07-03-13, 02:04 AM
آخر رد: abdoojh
  اعلان - انتهاء الدورة - الدرس التاسع والسبعون -) RaggiTech 0 598 14-10-12, 11:23 PM
آخر رد: RaggiTech
  الدرس الثامن والسبعون - Ajax RaggiTech 2 868 14-10-12, 11:22 PM
آخر رد: RaggiTech
  الدرس السابع والسبعون - ASP.net وقواعد البيانات RaggiTech 2 906 14-10-12, 11:19 PM
آخر رد: RaggiTech
  الدرس السادس والسبعون - ASP.net - الجزء الثالث RaggiTech 7 1,144 14-10-12, 11:14 PM
آخر رد: RaggiTech
  الدرس الخامس والسبعون - ASP.net - الجزء الثاني RaggiTech 5 1,310 14-10-12, 11:07 PM
آخر رد: RaggiTech
  الدرس الرابع والسبعون - ASP.net RaggiTech 6 1,084 14-10-12, 10:58 PM
آخر رد: RaggiTech
  الدرس الثالث والسبعون - مقدمة إلى تطوير المواقع RaggiTech 4 843 14-10-12, 10:44 PM
آخر رد: RaggiTech
  الدرس الثاني والسبعون - مقدمة إلى Mono RaggiTech 0 594 14-10-12, 10:37 PM
آخر رد: RaggiTech
  الدرس الواحد والسبعون - XML Commenting RaggiTech 2 793 14-10-12, 10:35 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم