آموزش پاسکال شی‌گرا

بیاید یک کلاس در پاسکال شی‌گرا بسازیم

بیاید یک کلاس در پاسکال شی‌گرا بسازیم

من همیشه اعتقاد دارم که تاثیر تفهیم ابزار از طریق مثال و کاربرد از ارایه تنوری مهم تر است
اما در بعضی مسائل نمیتوان بدون ذکر مقدمات تئوری به سراغ مثال رفت
لذا مجبور شدم که با مطالب قبلی ذهن شما را آماده سازم
حال وقت آن رسیده که مبحث کلاس را از طریق یک مثال عملی درک کنیم
برای این منظور بهتر است در پشت کامپیوتر قرار گرفته و کد مربوط را تایپ کنید
تعجب مکنید توضیح خواهم داد
همان طور که از توضیحات قسمت های قبلی متوجه شده اید
در حقیقت کلاس را میتوان به صورت یک قالب تصور کرد که با استفاده از آن میتوانیم نمونه های متعددی ایجاد کنیم
برای مثال ما میتوانیم یک قالب اتومبیل داشته باشیم و با استفاده از آن اتومبیل‌های متعددی را به وجود اوریم
بهتر است به یونیت بعدی که شامل کد یک کلاس با عنوان TCar است
نگاهی انداخته و سپس توضیحات بعدی را مطالعه کنید

unit CarUnit;

interface

type
 Tcar = class
 private
  stared : Boolean;
  speed  : Byte;
 Protected
  procedure StartEngine;
  procedure StopEngine;virtual;
  procedure SetSpeed(S : Byte);
  function  GetSpeed : Byte;
 Public
  function  SendMassage (Mess, Param : Byte: Var Response : Byte ):Boolean;
  Constructor Create;
end;

implementation

Constructor TCar.Create;
begin
 inherited Create;
 Started := False;
 speed   := 0;
end;

procedure TCar.StartEngine;
begin
 Started := True;
end;

procedure TCar.StopEngine;
begin
 Started := False;
end;

procedure TCar.SetSpeed(S : Byte);
begin
 Speed:= S;
end;

function  Tcar.GetSpeed : Byte;
begin
 Result := Speed;
end;

function  TCar.SendMessage (Mess, Param : Byte: Var Response : Byte ):Boolean;

begin
 Result := Ture;

 case Mess of 
  0 : StartEngine;
  1 : StopEngine;
  2 : SetSpeed(Param);
  3 : Response := GetSpeed;
  else ReSulf  := False;
 end;
end;

end.

بهتر است ابتدا به معرفی کلاس که در بخش Interface قرار داده شده است نگاهی بیندازید
همان طور که مشاهده میکنید تنها راه دسترسی به فیلدهای بخش Private است
که از متدهای بخش Public استفاده شود
برای مثال کاربران این کلاس میتوانند سرعت اتومبیل را با ارسال پیغام تغییر دهند !
حتما می پرسید که چگونه پیغام ارسال میکنند ؟1
در حقیقت با فراخوانی متد SendMessage کاربران کلاس قادر به ارسال پیغام خواهند بود
در حقیقت تابع SendMassage بااستفاده از یک عبارات Case نوع پیغام ارسال شده را شناسایی کرده
و سپس عمل لازم را انجام میدهد
توجه داشته باشید که کاربران کلاس قادر به فراخوانی پروسیجر های درون بخش Protected نخواهد بود
و این پروسیجر از دورن تابع SenMassage فراخوانی خواهند شد

فکر میکنم این کلاس به غیر از کلمه Virtual برای شما قابل فهم است
در رابطه یا کلمه Virtual در ادامه توضیح خواهم داد
اما با عنوان یک توضیح کوتاه بدانید که متد Virtual  به متدی گفته میشود
که اگر در کلاس های منشعب شده متد هم نامی وجود داشته باشد
متد Virtual  به صورت خودکار فراخوانی خواهد شد

[adinserter block="1"]
4.5/5 - (6 امتیاز)

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا