المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثاني والعشرون : ال polymorphism دورة .net 2008


khaledbelal
02-22-2010, 01:54 PM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

عد بداية للدرس السابع عشر للتعرف على المبدأ العام لل polymorphism :
http://vb4arab.com/vb/showthread.php?t=10904

التعريف الماضي والذي يسمح لك بتعريف 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 . يتم ذلك عن طريق تعريف الدالة الاساسية في ال **** 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 الذي سنتعرف عليه في مرحلة قادمة .