کپسوله سازی، وراثت

کپسوله سازی

کپسوله سازی عبارت است از توانائی نگهداری و کنترل دسترسی به گروهی از آیتم ها. کلاس ها یکی از معمول ترین راه های کپسوله کردن آیتم ها را فراهم می آورند. مثلا کلاس حساب بانکی (BankAccount) متد ها، فیلد ها و صفت هایی که یک حساب بانکی را توصیف می کنند کپسوله می کند.

بدون کپسوله سازی، شما می بایست زیربرنامه ها و متغییرهای ازهم جدایی برای ذخیره و مدیریت اطلاعات حساب بانکی تعریف می کردید، و برایتان مشکل بود که بخواهید در یک زمان با بیش از یک حساب بانکی کار کنید. با کپسوله سازی می توانید داده و زیربرنامه ها را درکلاس حساب بانکی به عنوان یک واحد به کار برید. می توانید همزمان و بدون تداخل با چندین حساب بانکی کار کنید زیرا هر حسابی توسط یک نمونه یکتا از کلاس بازنمائی شده است.

همچنین کپسوله سازی به شما امکان کنترل چگونگی استفاده از داده و زیربرنامه ها را می دهد. می توانید از مودیفایر های دسترسی مانند Private و Protected برای جلوگیری از اجرای متدهای کلاس  یا خواندن و تغییر داده فیلد ها و صفت ها توسط زیربرنامه های خارجی استفاده کنید. این تکنیک پنهان سازی داده نامیده می شود، و این گونه است که اطلاعات مشتری مانند موجودی حساب حفاظت می شود.

یک قانون اساسی در کپسوله کردن آن است که داده کلاس می بایست فقط از طریق زیربرنامه یا متد Property ذخیره یا بازیابی شود. پنهان سازی جزئیات طراحی کلاس  ها مانع استفاده از آن ها در راه های نا مطلوب می شود و به شما اجازه خواهد داد که آن ها را بدون مواجهه با ناسازگاری ویرایش کنید. برای مثال نسخه های جدیدتر کلاس حساب بانکی می توانند نوع داده فیلد AccountBalance را، بدون از کار انداختن سایر برنامه هائی که در ارتباط با این فیلد هستند و همان نوع داده را دارند، تغییر دهند.

وراثت

می توانید از کلاس ها برای تعریف انواع داده ای که گروهی از آیتم های مرتبط را کپسوله می کند استفاده کنید. کلاس های می توانند ارث ببرند و رفتارهای سایر کلاس ها را توسعه دهند.

کلاس های که به عنوان پایه برای کلاس های جدید استفاده می شوند کلاس پایه نامیده می شوند. کلاس هایی که از کلاس های پایه مشتق می شوند کلاس مشتق نام دارند. کلاس های مشتق همه فیلد ها، صفت ها، متد ها و رویداد های کلاس پایه را به ارث می برد. این بدین معناست که شما می توانید یک کلاس را یک بار طراحی، کدنویسی و دیباگ کنید، سپس آن را به عنوان کلاس پایه برای کلاس های دیگر مجددا استفاده نمایید