#مقالک#برنامه_نویسی_شئ_گراقسمت سوم: چگونگی تعریف شئ در زبان های برنامه نویسی
خوب توی این قسمت قراره ببینیم اکثر زبان های برنامه نویسی که شئ گرایی را ساپورت می کنند چطور راه حلی برای پیاده سازی این ایده (ایده شئ گرایی) پیدا کردند و اساسا در این زبان ها چطور می توان یک شئ جدید را تعریف و ایجاد کرد.
زبان های مختلف راه های مختلفی برای پیاده سازی ایده شئ گرایی در پیش گرفتند ولی اکثر زبان های پرطرفداری که شئ گرایی را ساپورت می کنند در زمان نوشتن این متن از چیزی استفاده می کنند به اسم class.حالا برای اینکه دقیقا بفهمیم که این class چه چیزی هست باید ببینیم معنی class در زبان انگلیسی چیست:
معنی class: طبقه، نوع، رده، دسته، گروه، گونه.
بنابر این با توجه به معانی بالا ما کلمه class را در برنامه نویسی نه به معنای کلاس درس(!) که به عنوان کلمه ای برای مشخص کردن یک گونه از اشیا استفاده می کنیم.برای اینکه دقیق تر بشوم مثالی می زنم:
فرض کنید می خواهید ساختمانی درست کنید، اکثر افراد قبل از ساختن یک ساختمان روی نقشه ای طرحی که برای آن ساختمان در نظر دارند رو می کشند و بعد بر اساس آن طرح کلی ساختمان را می سازند.
پس یک کلاس طرح کلی یک گروه از اشیا هست همانطور که شما نمی توانید با طرح یک ماشین رانندگی کنید یا توی نقشه یک ساختمان زندگی کنید از class هم نمی توانید به عنوان یک شئ از آن گروه استفاده کنید اما همانطور که از نقشه و طرح کلی برای ساختن یک ساختمان یا ماشین جدید استفاده می شود می توانید از کلاس برای ساختن یک شئ جدید استفاده کنید.
همانطور که یک طرح یک ماشین را می کشیم و بعد می توانیم از روی آن هزاران نسخه از آن ماشین را تولید کنیم (به شرط داشتن منابع کافی)، کلاس را یک بار تعریف می کنیم و بعد هر چند بار که خواستیم از روی آن شئ جدید مربوط به آن کلاس را می سازیم.
پس تا اینجا می توانیم بفهمیم که یک کلاس قطعا یک اسم دارد (اسمی که به ما می گوید چه دسته ای را توصیف می کند) مثلا: ماشین، سیب.
و بنابر تعریف شئ که قبلا داشتیم باید ویژگی ها و احتمالا رفتارهایی داشته باشد.
ویژگی ها یعنی اینکه شئ ما چه داده هایی را درون خود دارد که وضعیت کنونیش را توصیف می کند مثل: رنگ، ارتفاع، حجم.
و رفتارها یعنی اینکه شئ ما چه کارهایی می تواند انجام دهد مثل: حرکت کردن، بسته شدن.
پس تا اینجای کار به دو نتیجه مهم می رسیم:
۱-ویژگی ها از جنس داده هستند.
۲-رفتار ها از جنس عمل(operation) یا فعل هستند.
اگر آشنایی کمی با برنامه نویسی داشته باشید باید با داده ها و تعریف کردن آنها آشنا باشید دادهایی مثل : Integer ,Float ,Char. و اگر برای بیشتر از ۱ ساعت برنامه نویسی کرده باشید با توابع یا function ها هم آشنایی دارید.
به داده هایی که ویژگی های یک شئ را مشخص می کنند Properties یا Attributes در اصلاح فنی گفته می شود و به توابعی که رفتارهای یک شئ را مشخص می کنند Method گفته می شود پس یک Property داده ای است که به یک شئ تعلق دارد و Method تابعی است که به یک شئ تعلق دارد.
خوب حالا که تعاریف را می دانیم بهتر است مقداری شبه کد با سینتکس کلی (این سینتکس به هیچ زبانی تعلق ندارد ولی بیشتر شبیه جاوا است) ببینیم تا بقیه مفاهیم را بهتر بفهمیم:
فرض کنید می خواهیم یک شئ حساب بانکی در برنامه خود داشته باشیم پس اول باید کلاس شئ حساب بانکی را بسازیم، قدم اول این است که یک اسم مناسب برای class این شئ استفاده کنیم پس اسم BankAccount را انتخاب می کنیم:
class BankAccount {
}
خوب این از قدم اول، قدم دوم این هست که از خودمان بپرسیم که یک حساب بانکی چه داده هایی را در خود نگهداری می کند؟ جوابی که برای هر حساب ساده ای به ذهن من می رسد این است: اسم صاحب حساب و مقدار پولی که درون حساب است؛ حالا باید از خودمان بپرسیم که هریک از این داده ها چه جنسی دارند؟ واضح است که اسم صاحب حساب از جنس string است و برای مقدار پول درون اکانت هم با مقداری تسامح می توانیم جنس float را انتخاب کنیم و بعد برای هر یک از این داده ها اسم مناسب انتخاب می کنیم من برای نام صاحب ownerName و برای مقدار پول balance را انتخاب می کنم پس تا به اینجای کار class ما به این شکل در می آید:
class BankAccount {
string ownerName;
float balance;
}
در مرحله بعد باید از خودمان بپرسیم که این حساب بانکی چه رفتارهایی دارد؟ رفتارهایی که به ذهن می رسد یکی اعلام مقدار پول درون حساب ، تعیین نام صاحب حساب، اعلام نام صاحب حساب، واریز پول به حساب و برداشت پول از حساب.
برای اعلام پول درون حساب مقدار balance را بر می گردانیم.
برای تعیین نام صاحب حساب مقدار ownerName را برابر نام داده شده قرار می دهیم.
برای اعلام نام صاحب حساب مقدار ownerName را بر می گردانیم.
برای واریز پول به حساب باید توجه