توضيح معاني Override / Abstract / Dynamic / Virtual
#4
وعليكم السلام ورحمة الله وبركاته
إقتباس :بالنسبة ل Abstract ... الله اعلم ... لم افهم اهميتها .
توجيه Abstract يستخدم للدلالة على أن المنهج يجب تعريفه في كل الأصناف المورثة، ولا يمكن تعريفه في الصنف الحالي (أي لا يمكن عمل Implement له).
ملاحظة: مثلما يمكن إنشاء مناهج Abstract (ليس لها Implement في الصنف الحالي). يمكن إنشاء صنف بكامله Abstract (أي ليس له Implement). إذا ما الفرق بينه وبين Interface؟ الجواب: الأصناف المعرفة Abstract يمكن أن تحوي حقول (Fields) بينما Interface لا، الرسم النحوي بهذا الشكل:
PHP كود :
type
  TAbstractedClass
= class abstract (TObject)
   
Field: integer;
   
procedure DoSomething;
end; 

بنفس الطريقة يمكن جعل الصنف "عقيم" لا يمكن توريثه باستخدام الموجه sealed بهذا النحو:
PHP كود :
type
  TSealedClass
= class sealed (TObject)      
  
end;
   
//Error occured here
  
TImpossibleClass= class (TSealedClass)
  
end; 
يمكن تعريف المنهج بتوجيه Final (تضاف بعد override) لمنع الأصناف المورثة من العبث بها.
أهميته (كأهيمة OOP عموما) تظهر وتتضح عندما نعمل في فريق برمجة متكامل، ونتبادل الأصناف والمناهج فيما بيننا...
استخدام منهج Virtual يعني للـ Compiler التركيز على السرعة أكثر (Optimized for Speed)، واستخدام Dynamic يعني التركيز على الحجم بشكل أكبر (Optimized for Size)، إذا لم يكن المنهج Dynamic أو Virtual فهو إذا Static ولا حاجة لكتابة هذه الأخيرة (أي أنها الحالة الافتراضية لكل منهج)، ولها استعمال خاص متعلق بالعناصر المعرفة بشكل variable class. حيث variable class هي المناهج أو الحقول التي يمكن استخدامها دون إنشاء نسخة (Instance) من الصنف، (وهو ما يقابله Static Method في لغة NET.) مثال:
كود :
type MyClass = class (TObject) [color=Red]class var[/color] MyStringVar: string; [color=Red]class procedure[/color] PopupMessage(Msg: string); end; //... procedure TForm1.FormCreate(Sender: TObject); begin [color=Red]MyClass.MyStringVar[/color] := 'Hi TF6M!'; [color=Red]MyClass.PopupMessage[/color](MyClass.MyStringVar); end; { MyClass } class procedure MyClass.PopupMessage(Msg: string); begin ShowMessage(Msg); end;
ملاحظة:
- لا فرق بين Virtual و Dynamic في Delphi .NET
- المكتوب بهذا اللون خاص بإصدارات Delphi 2006 فما فوق فقط.
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


الردود في هذا الموضوع
توضيح معاني Override / Abstract / Dynamic / Virtual - بواسطة kachwahed - 19-12-2009, 09:21 PM

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


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