الفئات ومقدمة إلى البرمجة كائنية التوجه
#9
المهدمات Destructor
عكس ال ،Constructor يتم اطلاق هذا الحدث مع انهاء استخدام الObject
يمكن كتابة هادم خاص لة . ويقوم بالعمل المعاكس حيث يحرر أي ذاكرة قام الباني بحجزها ولم تحرر فيما بعد . ويبدأ بالكلمة المفتاحية destructor و يكون إسمة Destroy .
سترى لاحقا إمكانية إستخدام الهادم القديم ضمن الجديد من أجل أن يقوم الصنف ببعض عمليات التنظيف دون أن نشغل بالنا فيها من جديد .
لا تستخدم أبدا إسم للهادم غير الإسم Destroy , لإن الأغراض يتم تحريرها عادة بالمنهج الشهير Free ومبدأ هذا المنهج(Free): هو إختبار إذا كانت قيمة الغرض Nil قبل أن يستدعي المنهج الهادم Destroy , وبالتالي فإن Free لن يتعرف على الهادم الجديد الذي قمنا ببناءة إذا لم يكن إسمة Destroy وستنتج أخطاء .
إن Free هي منهج للصنف الأب Tobject والذي ترثة كل الأغراض الأخرى .
والجدير بالذكر هنا أن Free لن تقوم بضبط قيمة الغرض إلى Nil بعد تحرير الذاكرة الخاصة به .لذلك عليك أن تقوم بذلك بنفسك والسبب بسيط أن الغرض لن يعرف ما هي المتحولات التي نسبت إلية , ولن يستطيع التأكد من أنه ضبط قيمة جميع هذة المتحولات إلى Nil , لذلك تركت العملية إلى المستخدم , ولكن دلفي تملك بعض الدوال ال****** هنا مثل الدالة FreeAndNil التي قد تساعد أحيانا . حيث أنها تحرر الغرض وتلغي المرجع الذي يشير إلية (يصبح المؤشر معرفا مثل أي متحول ولكنة لايشير إلى أي قيمة بالذاكرة ) .

DELPHI

كود :
published Destructor Destroy;
كود :
destructor Mycalss.Destroy; begin Self._mMyField := ''; ShowMessage('هدم الكائن'); end;
كود :
procedure TForm1.Button1Click(Sender: TObject); var MyObeject : MyClassFile.Mycalss; begin MyObeject := MyClassFile.Mycalss.Create('تمرير فيمة افتراضية جديدة'); showmessage(MyObeject.MyField); FreeAndNil(MyObeject); end;

PRISM
كود :
public finalizer Finalize;
كود :
finalizer MyClass.Finalize; begin Self._mMyField := nil; MessageBox.Show('هدم الكائن'); end;
كود :
method MainForm.button1_Click(sender: System.Object; e: System.EventArgs); begin var MyObject := new MyProject.MyClass('تمرير فيمة افتراضية جديدة'); MessageBox.Show(MyObject.MyField); end;
الرد


الردود في هذا الموضوع
الفئات ومقدمة إلى البرمجة كائنية التوجه - بواسطة زكيري عبدالعالي - 29-06-2011, 11:05 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم