وعليكم السلام ورحمة الله وبركاته
ملاحظة: مثلما يمكن إنشاء مناهج Abstract (ليس لها Implement في الصنف الحالي). يمكن إنشاء صنف بكامله Abstract (أي ليس له Implement). إذا ما الفرق بينه وبين Interface؟ الجواب: الأصناف المعرفة Abstract يمكن أن تحوي حقول (Fields) بينما Interface لا، الرسم النحوي بهذا الشكل:
بنفس الطريقة يمكن جعل الصنف "عقيم" لا يمكن توريثه باستخدام الموجه sealed بهذا النحو:
يمكن تعريف المنهج بتوجيه Final (تضاف بعد override) لمنع الأصناف المورثة من العبث بها.
أهميته (كأهيمة OOP عموما) تظهر وتتضح عندما نعمل في فريق برمجة متكامل، ونتبادل الأصناف والمناهج فيما بيننا...
استخدام منهج Virtual يعني للـ Compiler التركيز على السرعة أكثر (Optimized for Speed)، واستخدام Dynamic يعني التركيز على الحجم بشكل أكبر (Optimized for Size)، إذا لم يكن المنهج Dynamic أو Virtual فهو إذا Static ولا حاجة لكتابة هذه الأخيرة (أي أنها الحالة الافتراضية لكل منهج)، ولها استعمال خاص متعلق بالعناصر المعرفة بشكل variable class. حيث variable class هي المناهج أو الحقول التي يمكن استخدامها دون إنشاء نسخة (Instance) من الصنف، (وهو ما يقابله Static Method في لغة NET.) مثال:
ملاحظة:
- لا فرق بين Virtual و Dynamic في Delphi .NET
- المكتوب بهذا اللون خاص بإصدارات Delphi 2006 فما فوق فقط.
بالتوفيق.
إقتباس :بالنسبة ل 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;
أهميته (كأهيمة 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 فما فوق فقط.
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...

