26.04.2015 Views

البرمجة الغرضية التوجه في دلفي

البرمجة الغرضية التوجه في دلفي

البرمجة الغرضية التوجه في دلفي

SHOW MORE
SHOW LESS

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 />

٣٦

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!