26.04.2015 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>البرمجة</strong> <strong>الغرضية</strong> <strong>التوجه</strong> <strong>في</strong> دل<strong>في</strong><br />

عروة عيسى<br />

(MyAnimal as TDog).Eat;<br />

إذا كنت تريد فقط إستدعاء Eat بإمكانك إستخدام حالة أبسط<br />

:<br />

نتيجة التعبير ستكون غرض من الصنف Tdog وبإمكانك إستخدام إي منهج من هذا الصنف<br />

السابق والتحويل بإستخدام<br />

نحاول تحويلة إلية<br />

،<br />

، as<br />

،<br />

وهذا الإستثناء هو<br />

.<br />

الفارق بين التحويل<br />

أن as سيختبر الغرض ويرفع إستثناء إذا كان الغرض غير متوافق مع الصنف الذي<br />

("EInvalidCast ")<br />

if MyAnimal is TDog then<br />

TDog(MyAnimal).Eat;<br />

إذا أردت تجنب حدوث الإستثناء بإمكانك إستخدام الطريقة الأولى<br />

لكني لا أرى داع لإستخدام is و<br />

as وراء بعضهما والقيام بعملية المقارنة مرتين<br />

.<br />

هذان المعاملان أساسيان و م<strong>في</strong>دان جدا <strong>في</strong> دل<strong>في</strong><br />

الطريقة<br />

،<br />

.<br />

أهم مثال يخطر ببالي هو إستخدام المتحول الوسيطي Sender <strong>في</strong> كل أحداث دل<strong>في</strong><br />

الجد Tobject الذي يقبل جميع الأغراض<br />

طلب الحدث :<br />

،<br />

،<br />

لإنك عادة ما تريد كتابة شفرة عامة تستخدم من عدة عناصر بنفس<br />

Sender هو متحول من الصنف<br />

وبالتالي دائما تحتاج لردة إلى الغرض الأصلي لمعرفة من هو هذا الغرض الذي<br />

إا تقنية شائعة <strong>في</strong> دل<strong>في</strong><br />

للغاية<br />

procedure TForm1.Button1Click(Sender: TObject);<br />

begin<br />

if Sender is TButton then<br />

...<br />

end;<br />

،<br />

وتستخدم <strong>في</strong> كثير من الحالات<br />

،<br />

،<br />

ويعتبران من طرق <strong>البرمجة</strong> القياسية التي تتبعها بورلاند <strong>في</strong> شفرة عناصر<br />

الحالات الخاصة لتفضيل إستخدام طرق أخرى عليهما<br />

أنصحك بالعمل مع تعددية الأشكال<br />

،<br />

معاملا معلومات نمط زمن التشغيل RTTI هذين قويان<br />

VCL<br />

،<br />

ولكن رغم ذلك توجد بعض<br />

عندما تريد حل مشكلة معقدة تستخدم أصناف متنوعة ومتداخلة<br />

والقاعدة الآن هي أن لا تستخدم RTTI مكان تعددية الأشكال<br />

مشكله ال RTTI أا يجب أن تسير <strong>في</strong> الشجرة الوراثية للتأكد من أن الصنف مطابق<br />

،<br />

.<br />

ربما يسبب ذلك أثرا سيئا للأداء<br />

٤١

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

Saved successfully!

Ooh no, something went wrong!