منتدى رياض الجنة - Riad Al-Ganah

منتدى رياض الجنة - Riad Al-Ganah (https://montada.khaledbelal.com/index.php)
-   دورة .NET 2008 من منتدى فيجوال بيسك للعرب (https://montada.khaledbelal.com/forumdisplay.php?f=57)
-   -   الدرس الثاني والعشرون : ال polymorphism دورة .net 2008 (https://montada.khaledbelal.com/showthread.php?t=547)

khaledbelal 02-22-2010 01:54 PM

الدرس الثاني والعشرون : ال 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 الذي سنتعرف عليه في مرحلة قادمة .


الساعة الآن 08:47 PM.

Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية

Ads Management Version 3.0.1 by Saeed Al-Atwi

a.d - i.s.s.w