عرض مشاركة واحدة
  #1  
قديم 02-22-2010, 01:54 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الثاني والعشرون : ال polymorphism دورة .net 2008

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

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

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

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

c#:
كود PHP:
public int calc(int fuel)
{
return 
fuel 10;

vb.net:

كود PHP:
Public Function calc(ByVal fuel As Integer) As Integer 
    
    
Return fuel 10 
    
End 
Function 
ولكن بعد عملنا للسيارة BMW اكتشفنا ان هذه السيارة لا تسير على نفس القاعدة ، إذ انها تصرف جالوناً لكل 5 كيلومترات فقط ، في هذه الحالة نحن بحاجة إلى اعادة تعريف الدالة calc في الكلاس المشتق ، هذا هو ما يعرف باسم اعادة القيادة Overridding وهو احد مبادئ ال polymorphism . يتم ذلك عن طريق تعريف الدالة الاساسية في ال **** class من نوع virtual بالشكل التالي :

c#:
كود PHP:
public virtual int calc(int fuel)
{
return 
fuel 10;

vb.net:
كود PHP:
 
Public Overridable Function calc(ByVal fuel As Integer) As Integer 
    
    
Return fuel 10 
    
End 
Function 
ال virtual او ال overriddeable تعني ان هذه الدالة يمكن اعادة تعريفها في الكلاس المشتق ، كما يمكن عدم تعريفها ايضاً ، لاعادة تعريفها نكتب الكود التالي في الكلاس المشتق :

c#:
كود PHP:
public override int calc(int fuel)
{
return 
fuel 5;

vb.net:
كود PHP:
Public Overloads Overrides Function calc(ByVal fuel As Integer) As Integer 
    
    
Return fuel 
    
End 
Function 
ايضاً يمكنك ترك ال implementation فارغاً في الكلاس الرئيسي ومن ثم قم ببرمجته في الكلاسات الأبناء ، يعرف الكلاس الفارغ من ال implementation باسم Abstract class وهو غير ال interface الذي سنتعرف عليه في مرحلة قادمة .


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس