مهدیه
مهدیه
خواندن ۲ دقیقه·۴ سال پیش

چطور مفاهیم شی گرایی را برای یک کودک توضیح دهیم؟ - قسمت اول: encapsulation

قسمت اول: کپسوله‌سازی (encapsulation)

4 اصل برنامه‌نویسی شی‌گرا عبارتند از: کپسوله‌سازی (encapsulation )، انتزاع (abstraction )، وراثت (inheritance )، و چندریختی (Polymorphism)

این کلمات ممکن است برای یک برنامه‌نویس تازه‌کار ترسناک و پیچیده به نظر بیاید. خصوصا با تعاریف عریض و طویل ویکیپدیا که گاهی باعث سردرگمی بیشتر می‌شوند.

به همین دلیل در اینجا قصد داریم توضیحی ساده، مختصر و واضح از هر کدام از این اصول ارائه دهیم. طوری که انگار قصد توضیح آن به یک کودک را داریم.

کپسوله‌سازی

فرض کنید من برنامه‌ای دارم. این برنامه دارای اشیایی با منطق مختلف است که با توجه به قوانینی که در برنامه تعریف شده است، با یکدیگر ارتباط دارند.

کپسوله‌سازی زمانی حاصل می‌شود که هر شی، درون کلاس، وضعیت (state) خود را private نگاه دارد. سایر اشیا دسترسی مستقیم به این وضعیت ندارند. در عوض، تنها می‌توانند لیستی از توابع public که متد نامیده می‌شوند، فراخوانی کنند.

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

بیایید یک بازی انجام دهیم. این بازی شامل آدم و گربه است. آن‌ها با هم ارتباط برقرار می‌کنند. قصد ما اجرای کپسوله‌سازی است پس تمام منطق گربه را درون کلاس Cat کپسوله می‌کنیم. نتیجه ممکن است چنین چیزی باشد:

شما می‌توانید به گربه غذا دهید، اما نمی‌توانید مستقیما تعیین کنید که این گربه چقدر گرسنه است.
شما می‌توانید به گربه غذا دهید، اما نمی‌توانید مستقیما تعیین کنید که این گربه چقدر گرسنه است.


در اینجا "وضعیت" گربه شامل متغیرهای private زیر است:

mood، hungry و energy

کلاس گربه همچنین دارای متد private ای است به نام ()meow. گربه می‌تواند هر زمان که بخواهد این تابع را فراخوانی کند و کلاس‌های دیگر (آدم‌ها) نمی‌توانند به گربه بگویند که چه زمانی میو کند. تنها کارهایی که می‌توانند، در متدهای public زیر تعریف شده است:

sleep()، play()و feed(). هر کدام از آن‌ها وضعیت داخلی گربه را تغییر می‌دهند و ممکن است متد میو را فراخوانی کنند. بنابراین چفت و بست (binding ) میان وضعیت private و متدهای public ایجاد شده است.

کپسوله‌سازی این است.

قسمت دوم: Abstraction

قسمت سوم: Inheritance

منبع: مدیوم

برنامه‌نویسیشی گراییبرنامه نویسیEncapsulation
شاید از این پست‌ها خوشتان بیاید