قسمت اول: کپسولهسازی (encapsulation)
4 اصل برنامهنویسی شیگرا عبارتند از: کپسولهسازی (encapsulation )، انتزاع (abstraction )، وراثت (inheritance )، و چندریختی (Polymorphism)
این کلمات ممکن است برای یک برنامهنویس تازهکار ترسناک و پیچیده به نظر بیاید. خصوصا با تعاریف عریض و طویل ویکیپدیا که گاهی باعث سردرگمی بیشتر میشوند.
به همین دلیل در اینجا قصد داریم توضیحی ساده، مختصر و واضح از هر کدام از این اصول ارائه دهیم. طوری که انگار قصد توضیح آن به یک کودک را داریم.
فرض کنید من برنامهای دارم. این برنامه دارای اشیایی با منطق مختلف است که با توجه به قوانینی که در برنامه تعریف شده است، با یکدیگر ارتباط دارند.
کپسولهسازی زمانی حاصل میشود که هر شی، درون کلاس، وضعیت (state) خود را private نگاه دارد. سایر اشیا دسترسی مستقیم به این وضعیت ندارند. در عوض، تنها میتوانند لیستی از توابع public که متد نامیده میشوند، فراخوانی کنند.
بنابراین، شی مورد نظر، وضعیت خود را از طریق متدها مدیریت میکند و هیچ کلاس دیگری حق تاثیر گذاشتن بر آن را ندارد مگر اینکه به طور صریح به آن اجازه داده شده باشد. اگر بخواهید با شی ارتباط برقرار کنید، باید از متدهای ارائه شده استفاده نمایید. اما (به طور پیش فرض)، امکان تغییر وضعیت را ندارید.
بیایید یک بازی انجام دهیم. این بازی شامل آدم و گربه است. آنها با هم ارتباط برقرار میکنند. قصد ما اجرای کپسولهسازی است پس تمام منطق گربه را درون کلاس Cat کپسوله میکنیم. نتیجه ممکن است چنین چیزی باشد:
در اینجا "وضعیت" گربه شامل متغیرهای private زیر است:
mood
، hungry
و energy
کلاس گربه همچنین دارای متد private ای است به نام ()meow. گربه میتواند هر زمان که بخواهد این تابع را فراخوانی کند و کلاسهای دیگر (آدمها) نمیتوانند به گربه بگویند که چه زمانی میو کند. تنها کارهایی که میتوانند، در متدهای public زیر تعریف شده است:
sleep()، play()و feed(). هر کدام از آنها وضعیت داخلی گربه را تغییر میدهند و ممکن است متد میو را فراخوانی کنند. بنابراین چفت و بست (binding ) میان وضعیت private و متدهای public ایجاد شده است.
کپسولهسازی این است.
منبع: مدیوم