درس هشتم : کلاس ها ، اشیا ، توابع عضو و اعضای داده

اجازه دهید این بحث را با مثال ساده ای که شما را در فهم مفاهیم کلاس و محتویات آن کمک می کند شروع کنیم . فرض کنید می خواهید رانندگی کنید  و با فشار بر روی پدال گاز ماشین را وادارید تا با سرعت بیشتری حرکت کند . قبل از اینکه بتوانید این کار را انجام دهید ، چه اتفاقی باید رخ دهد ؟ قبل از اینکه بتوانید رانندگی کنید ، ابتدا باید کسی ماشین را طراحی کند و آن را بسازد . ساحت یک ماشین معمولا با طراحی نقشه های آن آغاز می شود . این نقشه ها ، شامل طراحی لازم برای پدال گاز نیز میباشد تا راننده توسط آن بتواند ماشین را وادار نماید تا سریعتر حرکت کند . به عبارت دیگر ، پدال گاز مکانیزم های پیچیده ای  که موجب می شوند تا ماشین سریعتر حرکت کند را پنهان می کند . پدال ترمز نیز مکانیزم هایی که موجب تغییر مسیر ماشین می شوند را پنهان می نماید و سایر بخش های ماشین نیز به همین صورت عمل پنهان سازی را انجام می دهند . بدین ترتیب افرادی که هیچ اطلاعی از نحوه ی طراحی و ساخت یک ماشین ندارند نیز می توانند رانندگی کند و این کار را به سادگی با استفاده از پدال گاز ، پدال ترمز ، فرمان و سایر قسمت های ماشین که به صورت رابط های کاربر پسند ( user-firendly ) طراحی و ساخته شده اند تا پیچیدگی های داخلی ماشین را پنهان سازند ، انجام دهند .
متاسفانه ، نمی توانید نقشه های یک ماشین را برانید . قبل از اینکه بتوانید بر روی ماشینی رانندگی کنید شخصی باید از روی نقشه هایی که ماشین را توصیف می کنند ، آن را بسازد . یک ماشین کامل یک پدال واقعی گاز خواهد داشت که از طریق آن می توان ماشین را وادار به سریعتر حرکت کردن نمود . اما این نیز به تنهایی کافی نیست و پدال گاز به خودی خود نمی تواند ماشین را به حرکت سریعتر وادارد . بنابراین راننده باید با فشار آوردن بر روی پدال گاز ، به ماشین بگوید که سریعتر حرکت کند .
حال اجازه دهید با استفاده از این مثال ، به بیان مفاهیم کلیدی برنامه نویشی شی گرا بپردازیم . انجام یک کار در یک برنامه مستلزم داشتن یک تابع ( مثال تابع main که در دروس گذشته در مورد آن بحث کردیم ) است . تابع مکانیزم هایی را که واقعا برای انجام وظایفش به کار می برد ، توصیف می کند. تابع کارهای پیچیده ی لازم جهت حرکت سریعتر ماشین را پنهان می کند . در C++ با ایجاد یک واحد برنامه موسوم به کلاس ( class ) که خانه ی یک تابع محسوب می شود کار را آغاز می کنیم . همان طور که قبلا هم گفته شد ، تابعی که متعلق به یک کلاس باشد را تابع عضو ان کلاس می گویند . در هر کلاس یک یا چند تابع وجود دارد . این توابع برای انجام وظایف کلاس طراحی و ایجاد شده اند . مثلا کلاسی که نمایانگر یک حساب بانکی باشد ، احتمالا شامل تابع عضوی برای گذاشتن پول در حساب ، تابع عضوی برای برداشتن پول از حساب و تابع عضوی دیگری که مانده ی حساب را مشخص می کند .
درست همان طور که نمی توانید با نقشه های یک ماشین رانندگی کنید ، از کلاس نیز نمی توانید استفاده کنید و درست همان طوری که ابتدا باید کسی از روی نقشه های ماشین ، ماشین را بسازد تا بتوانید واقعا  آن را برانید ، قبل از اینکه بتوانید برنامه ای داشته باشید تا وظایف  توصیف شده توسط کلاس را انجام دهد باید شی ای از کلاس ایجاد کنید . این یکی از دلایلی است که C++ به عنوان یک زبان برنامه نویسی شی گرا شناخته شده است . همان طور که از روی نقشه یک ماشین می توانید چندین ماشین را بسازید از یک کلاس هم می توانید شی های زیادی را تولید و یا ایجاد کنید .
در هنگام رانندگی ، با فشردن پدال گاز ، پیامی صادر می شود تا ماشین کاری را انجام دهد که در این مورد سریعتر حرکت کردن ماشین است .همین طور پیام هایی به شی ارسال می کنید . هر پیام به صورت فراخوانی یک تابع عضو ( member function call ) است . این فراخوانی به تابع عضو می گوید تا کارش را انجام دهد . این فراخوانی غالبا به درخواست یک سرویس از یک شی یا ( requesting a service from an object ) موسوم میباشد .
خب تا الان با استفاده از مثال ماشین ، کلاس ها ، اشیا  و توابع عضو را معرفی کردیم . یک ماشین علاوه بر قابلیت هایی که فراهم می سازد ، خصوصیات زیادی نظیر رنگ ، تعداد درب ها ، میزان گنجایش سوخت ، سرعت فعلی و تست شده ی نهایی را نیز دارد . این خصوصیات نیز همانند قابلیت های ماشین به عنوان  بخشی از طراحی آن در نقشه اش ارائه می گردد و همان طور که رانندگی می کنید این خصوصیات نیز همواره با ماشین در ارتباط هستند . هر ماشین خصوصیات خود را دارد .مثلا هر ماشین از گنجایش ظرفیت باک سوخت خود آگاه است ، اما نمی داند که باک سایر ماشین ها تا چه اندازه گنجایش دارد . این موضوع در مورد اشیا نیز صادق است . هر شی که در یک برنامه استفاده می شود خصوصیاتی نیز به همراه خود دارد . این خصوصیات به عنوان بخشی از کلاس شی مشخص شده اند . به طور مثال شی حساب بانکی ، یک خصوصیت مانده حساب دارد که نمایانگر مقداری پولی که هم اکنون در حساب است می باشد . هر شی حساب بانکی از مقدار پولی که در حساب بانکی مربوط به خود مانده آگاه است . اما از مقدار پولی که در حساب سایر اشیا بانک  وجود دارد مطلع نیست . خصوصیات هر کلاس توسط اعضای داده ی آن کلاس مسخص می شود .

درس هشتم : کلاس ها ، اشیا ، توابع عضو و اعضای داده
۵ (۱۰۰%) ۱ رای

(434 نوشته)

C# Programmer , Web Design And Developer , MVC , ASP.NET

فکر شما چیست؟

آدرس ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *

حاصل جمع اعداد را وارد کنید : *