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

ملاحظة : <strong>في</strong> المثال السابق نضع تعريف TnewDate ضمن نفس الوحدة التي عرفنا ا Tdate لإن المنهج<br />

يستخدم المتحول الخاصfDate المعرف ك<br />

ولتوضيح ذلك أكثر دعنا ننتقل للفقرة التالية<br />

GetText<br />

Private ضمن<br />

Tdate ولايمكن الوصول إلية من خارج الوحدة<br />

.<br />

:<br />

التغليف والحقول المحمية<br />

: Protected Fields and Encapsulation<br />

كما لاحظت أن شفرة المنهج GetText الخاصة بالصنف TnewDate ستترجم بلا أخطاء فقط إن تمت إضافتها <strong>في</strong> نفس<br />

وحدة الصنف الأساس<br />

. Tdate<br />

لإا كما وضحنا تحاول دخول المتحول fDate والذي هو متحول موضعي<br />

، Private<br />

إذا أردنا أن نضع الصنف المشتق <strong>في</strong> وحدة جديدة بدون أن نجعل المتحول fDate متحول عام Public يمكن الوصول إلية<br />

، من أي مكان<br />

فإننا سنجد طريقتين تحققان ذلك<br />

تعريف المتحول fDate كمتحول محمي أي<br />

(Protected)<br />

هذا النوع يسمح فقط للأصناف المشتقة من الصنف الأساسي بالدخول للبيانات<br />

ترك المتحول Private وإضافة منهج محمي Protected يؤمن الوصول لة<br />

.<br />

.<br />

بدلا من المتحول العام أو المحلي ، إذا كنت تتذكر إن<br />

-<br />

-<br />

ربما لاحظت معي أن الطريقة الأولى هي الأفضل لإا أكثر عمومية عندما نورث الصنف لعدد كبير من الأصناف<br />

الفرعية ، وأنصحك بإتباعها دائما ، حتى لو لم تجد حاجة حاليا لتعريف معطيات محمية قم بذلك من أجل توريث<br />

أصناف جديدة مستقبلا<br />

،<br />

البيانات المحمية تجعل الصنف قابل للوصول بشكل مناسب لتقنية الوراثة<br />

.<br />

ربما تقول إن ذلك خروج عن قاعدة التغليف الكامل <strong>في</strong> <strong>البرمجة</strong> <strong>الغرضية</strong> ‏(التي تقول بيانات محلية مناهج عامة)‏ ، الجواب<br />

نعم إلى حد ما ، ولذلك علينا أن نكون منتبهين أننا لن نحصل على كامل ميزات التغليف مالم نتبعة بشكل جيد<br />

لاحظ مثلا <strong>في</strong> حالة قمنا بتوريث عشرات الأصناف من صنف ما<br />

الصنف ربما يضطرنا لتغير مايقابلها <strong>في</strong> كل من الأصناف المشتقة<br />

،<br />

،<br />

.<br />

إن تغيير البيانات المحمية Protected <strong>في</strong> هذا<br />

بكلمة أخرى المرونة<br />

، التغليف ، قابلية التوسع ،<br />

عندما يحصل ذلك عليك أن تفضيل التغليف من بينها<br />

غالبا ما تكون أهداف متنازعة<br />

،<br />

ومن الصعب تحقيقها جميعا<br />

،<br />

.<br />

إذا كان من الممكن تحقيق ذلك بدون التضحية بالمرونة فإن<br />

٣٢

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

Saved successfully!

Ooh no, something went wrong!