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