البرمجة الغرضية التوجه في دلفي
البرمجة الغرضية التوجه في دلفي
البرمجة الغرضية التوجه في دلفي
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>البرمجة</strong> <strong>الغرضية</strong> <strong>التوجه</strong> <strong>في</strong> دل<strong>في</strong><br />
عروة عيسى<br />
التحديد المتأخر وتعددية الأشكال<br />
:<br />
تعتمد توابع الباسكال وإجراءاا عادة على التحديد الساكن أو المبكر<br />
،<br />
(static or early binding)<br />
وهذا يعني أن<br />
المترجم سيقوم بتحليل الإستدعاء وإستبدال الطلب بإستدعاء لموقع الذاكرة الحاوي على التابع أو الإجراء (عنوان الروتين)<br />
، وهذا يعني التحديد المسبق للتابع أو الإجراء الذي سوف يتم إستدعاءة<br />
،<br />
المشروع وبالتالي التصرف <strong>في</strong> وقت التن<strong>في</strong>ذ معروف ومحدد منذ ترجمة المشروع<br />
لغات <strong>البرمجة</strong> <strong>الغرضية</strong> التوجة<br />
.<br />
(OOP)<br />
،<br />
(late binding<br />
ويقوم المترجم ذا التحديد لحظة ترجمة<br />
تسمح بنوع آخر من التحديد يسمى التحديد الديناميكي أو المتأخر( dynamic or<br />
و<strong>في</strong> هذا الحالة فإن العنوان الفعلي الذي سوف يستدعى لن<br />
التحديد على نمط المنتسخ الذي قام بالطلب<br />
تسمى هذة التقنية تعددية الأشكال<br />
أنك تقوم بإستدعاء منهج<br />
يتم تحديدة حتى<br />
، وقت التشغيل<br />
.<br />
polymorphism)،<br />
،<br />
نمط الغرض الذي نسب إلية المتغيير<br />
، تنسبة لمتحول<br />
،<br />
ميزة تعددية الأشكال أا تسمح بكتابة أكواد أبسط<br />
الحصول على التصرف المناسب <strong>في</strong> زمن التشغيل<br />
ويعتمد<br />
)باليونانية تعني(forms many)بالإنكليزية ، تعددية الأشكال تعني<br />
ولكن ماهو المنهج الذي قامت دل<strong>في</strong> فعليا بإستدعاءة فإن ذلك يعتمد على<br />
ودل<strong>في</strong> لن تستطيع تحديد صنف غرض هذا المتغير حتى وقت التشغيل<br />
.<br />
،<br />
.<br />
والتعامل مع أغراض متباينة النمط كما لوأا متشاه بحيث يتم<br />
لتوضيح ذلك دعنا على سبيل المثال نفترض أن صنف ما وصنف مشتق منه يعرفان نفس المنهج ، ولهذا المنهج تحديد<br />
متأخر ، مثلا الصنفان<br />
Tdog و Tanimal<br />
يعرف كل منهما المنهج Voice والذي يخرج صوت الحيوان المختار<br />
فإذا عرفنا المتغير MyAnimal والذي سيشير <strong>في</strong> زمن التشغيل إما لغرض من النوع Tanimal أو لغرض من النوع<br />
،<br />
Tdog<br />
،<br />
بالتالي فإن المنهج الذي سيتم إستدعاءة فعليا يتم تحديدة وقت التشغيل إذا كان منهج Voice الخاص ب<br />
الخاص بTdog Voice<br />
، حسب النمط الذي يشير إلية<br />
لتحقيق ذلك نعرف المنهج Voice على شكل<br />
(مهيمن) <strong>في</strong> الصنف المشتق<br />
Tanimal أو<br />
.<br />
MyAnimal<br />
Virtual<br />
،<br />
بإستخدام الكلمتان المفتاحيتان<br />
(إفتراضي) <strong>في</strong> الصنف الأساسي<br />
وعلى شكل ،<br />
OverRide<br />
override و virtual<br />
Type<br />
Tanimal = class<br />
public<br />
function Voice: string; virtual;<br />
Tdog = class (Tanimal)<br />
public<br />
function Voice: string; override;<br />
.<br />
٣٦