کپسوله سازی (Encapsulation)
کپسوله سازی (تلفیق دادهها با یکدیگر) یا مخفی کردن اطلاعات، فرایندی است که طی آن اطللاعات حساس یک موضوع از دید کاربر مخفی میشود و فقط اطلاعاتی که لازم باشد، برای او نشان داده میشود.
وقتی که یک کلاس تعریف میکنیم معمولاً تعدادی اعضای دادهای (فیلد) برای ذخیره مقادیر مربوط به شیء نیز تعریف میکنیم. برخی از این اعضای دادهای توسط خود کلاس برای عملکرد متدها و برخی دیگر از آنها به عنوان یک متغیر موقت به کار میروند. به این اعضای دادهای، اعضای مفید نیز می گویند چون فقط در عملکرد متدها تأثیر دارند و مانند یک داده قابل رویت کلاس نیستند. لازم نیست که کاربر به تمام اعضای دادهای یا متدهای کلاس دسترسی داشته باشد. اینکه فیلدها را طوری تعریف کنیم که در خارج از کلاس قابل دسترسی باشند بسیار خطرناک است چون ممکن است کاربر رفتار و نتیجه یک متد را تغییر دهد. به برنامه ساده زیر توجه کنید :
1: package myfirstprogram; 2: 3: class Test 4: { 5: public int five = 5; 6: 7: public int AddFive(int number) 8: { 9: number += five; 10: return number; 11: } 12: } 13: 14: public class MyFirstProgram 15: { 16: public static void main(String[] args) 17: { 18: Test x = new Test(); 19: 20: x.five = 10; 21: System.out.println(x.AddFive(100)); 22: } 23: }
110
متد داخل کلاس Test به نام AddFive دارای هدف سادهای است و آن اضافه کردن مقدار 5 به هر عدد میباشد. در داخل متد main() یک نمونه از کلاس Test ایجاد کردهایم و مقدار فیلد آن را از 5 به 10 تغییر میدهیم (در اصل نباید تغییر کند چون ما از برنامه خواستهایم هر عدد را با 5 جمع کند ولی کاربر به راحتی آن را به 10 تغییر میدهد). همچنین متد AddFive() را فراخوانی و مقدار 100 را به آن ارسال میکنیم. مشاهده میکنید که قابلیت متد AddFive() به خوبی تغییر میکند و شما نتیجه متفاوتی مشاهده میکنید. اینجاست که اهمیت کپسوله سازی مشخص میشود. اینکه ما در درسهای قبلی فیلدها را به صورت public تعریف کردیم و به کاربر اجازه دادیم که در خارج از کلاس به آنها دسترسی داشته باشد کار اشتباهی بود. فیلدها باید همیشه به صورت private تعریف شوند.
باسلام، من برای جاوا هرچی باز کردم نتونستم ببینم چون سما اشتراک میخواهین. ولی منم به عنوان کاربر باید بتونم تا حدی این مطالب رو ببینم که اگر مفید بود و راضی بودم. اشتراک بگیرم. اینطور با قفل و دربسته بودن همه چی، نمیشه اشتراک گرفت