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

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

26.04.2015 Views

البرمجة الغرضية التوجه في دلفي عروة عيسى يتم تعريف الواجهات بالشكل العام التالي : type interfaceName = interface (ancestorInterface) ['{GUID}'] memberList end; type ICanFly = interface ['{EAD9C4B4-E1C5-4CF4-9FA0-3B812C880A21}'] function Fly: string; end; : مثلا . حيث أن تعريف كل من (ancestorInterface) و ['{GUID}'] خياري حسب الحالة ancestorInterface هو الجد الذي سنورث عنة صنفنا . (Globally Unique إختصار ل(‏Identifier GUID تستطيع تعريف هذا الرقم تلقائيا بضغط Ctrl+Shift+G في محرر دلفي هو رقم معرف يستخدم لتعريف الواجهة بشكل فريد . . كما تلاحظ فإن تعريف الواجهه شبية بتعريف الصنف في كثير من الحالات في الحسبان ، : ولكن توجد بعض الفروقات لوضعها . قائمة العناصر ‏(التي سميناها memberList في الشكل العام للتعريف)‏ يمكن أن تحوي فقط إما مناهج أو خصائص تعريف حقول غير مسموح به في الواجهات بما أنه لاتوجد للواجهه حقول مناهج حتما . فإن محددات ، Read و . كل عناصر الواجهة تكون عامة ليس للواجهة باني أو هادم ، (Public) Write الخاصتان بتعريف الخصائص يجب أن يكونا ولا مجال لتقييد الرؤيا . (constructors or destructors) . يعرفان ضمنها - - - - ٤٣

البرمجة الغرضية التوجه في دلفي عروة عيسى وهذا مثال على تعريف واجهة مأخوذ من دلفي:‏ type IMalloc = interface(IInterface) ['{00000002-0000-0000-C000-000000000046}'] function Alloc(Size: Integer): Pointer; stdcall; function Realloc(P: Pointer; Size: Integer): Pointer; stdcall; procedure Free(P: Pointer); stdcall; function GetSize(P: Pointer): Integer; stdcall; function DidAlloc(P: Pointer): Integer; stdcall; procedure HeapMinimize; stdcall; end; وبعدما تقوم بتعريف الواجهة تستطيع تعريف صنف من أجل إستخدامها بواستطة . type TAirplane = class (TInterfacedObject, ICanFly) function Fly: string; end; مثلا : الآن أصبحنا جاهزين لإستخدام غرض من هذا الصنف الذي يمثل الواجهة ، مع صنف من الواجهة وليس مع الواجهة مباشرة طريقة الإستخدام هي نفسها لإننا نتعامل var Flyer1: ICanFly; begin Flyer1 := TAirplane.Create; Flyer1.Fly; end; : ٤٤

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

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

يتم تعريف الواجهات بالشكل العام التالي<br />

:<br />

type interfaceName = interface (ancestorInterface)<br />

['{GUID}']<br />

memberList<br />

end;<br />

type<br />

ICanFly = interface<br />

['{EAD9C4B4-E1C5-4CF4-9FA0-3B812C880A21}']<br />

function Fly: string;<br />

end;<br />

: مثلا<br />

.<br />

حيث أن تعريف كل من<br />

(ancestorInterface) و ['{GUID}'] خياري حسب الحالة<br />

ancestorInterface هو الجد الذي سنورث عنة صنفنا<br />

.<br />

(Globally Unique إختصار ل(‏Identifier GUID<br />

تستطيع تعريف هذا الرقم تلقائيا بضغط Ctrl+Shift+G <strong>في</strong> محرر دل<strong>في</strong><br />

هو رقم معرف يستخدم لتعريف الواجهة بشكل فريد<br />

.<br />

.<br />

كما تلاحظ فإن تعريف الواجهه شبية بتعريف الصنف <strong>في</strong> كثير من الحالات<br />

<strong>في</strong> الحسبان<br />

،<br />

:<br />

ولكن توجد بعض الفروقات لوضعها<br />

.<br />

قائمة العناصر ‏(التي سميناها memberList <strong>في</strong> الشكل العام للتعريف)‏ يمكن أن تحوي فقط إما مناهج أو خصائص<br />

تعريف حقول غير مسموح به <strong>في</strong> الواجهات<br />

بما أنه لاتوجد للواجهه حقول<br />

مناهج حتما<br />

.<br />

فإن محددات ،<br />

Read و<br />

.<br />

كل عناصر الواجهة تكون عامة<br />

ليس للواجهة باني أو هادم<br />

،<br />

(Public)<br />

Write الخاصتان بتعريف الخصائص يجب أن يكونا<br />

ولا مجال لتقييد الرؤيا<br />

.<br />

(constructors or destructors)<br />

. يعرفان ضمنها<br />

-<br />

-<br />

-<br />

-<br />

٤٣

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

Saved successfully!

Ooh no, something went wrong!