بایگانی برچسب: s

Object-oriented

آموزش شئ گرایی Java – کپسوله سازی Encapsulation

کپسوله سازی Encapsulation قسمت سوم شی گرایی

تو قسمت‌های گذشته‌ی شئ‌گرایی گفتم که هر Property یا خاصیت سطح دسترسی‌های مختلف مثل Public ، Private و Protected داره که این قسمت به مفهوم این‌ها و راه استفاده ازشون اختصاص داده شده.
خوب اول از سطح دسترسی Public شروع میکنیم؛ سطح دسترسی Public در Propertyها یعنی اون پراپرتی در تمام کلاس‌ها در برنامه قابل استفاده هستش؛ اگه دقت کرده باشین دیدین که ما Name‌ رو تو کلاس گربه‌سانان ساختیم و تو یه کلاس دیگه تو تابع Main از اون استفاده کردیم و به اون مقدار دادیم.
سطح دسترسی بعدی Protected هستش که این نوع فقط قابل تغییر تو کلاس خودش هست و طریق Inheritance ارث‌بری که تو قسمت‌های بعد بهتون آموزش میدیم قابل تغییر هست.
و اما سطح دسترسی Private که فقط تو کلاس خودش قابل استفاده هستش و تو کلاس دیگه و یا از طریق Inheritance ارث‌بری که تو قسمت‌های بعد بهتون آموزش میدیم قابل تغییر نیست.
کپسوله سازی Encapsulation همونطور که از اسمش پیداست باید کاملا کپسوله بشه و راه‌های ورود و خروجش رو تا حد امکان کم کرد؛ پس برای کپسوله سازی Encapsulation نیازه که از Private برای Propertyهامون استفاده کنیم. (سطح دسترسی اگه تنظیم نشه به طور پیشفرض Private هستش).
خوب پس برای کپسوله سازی Encapsulation پراپرتی‌ها باید سطح دسترسی همه رو کم کنیم.
طبق کد زیر و پروژه‌ی گربه‌سانان پراپرتی‌ها رو Private کنید.

خوب کد شما الان کپسوله سازی Encapsulation شد.
ولی صبر کنید… الان نه میتونید مقداری ازش بگیرید نه میتونید مقداری روش تنظیم کنید 😐 راه حل چیه؟
خوب بهتون گفتم که سطح دسترسی Private فقط از تو کلاس خودش قابل تغییره پس یک تابع برای setکردن مقدار و گرفتن مقدار تو همون کلاس بنویسید که سطح دسترسی اون تابع public باشه که فقط با صدا زدن تابع کار خدشو بکنه.
به این تابع‌ها Getter – Setter گفته میشه؛ getter برای گرفتن اطلاعات و Setter برا تنظیم مقدار.
طبق نمونه کد با طریقه نوشتنش آشنا بشید.

همونطور که توابع رو میبینید تابع get مقدار رو return میکنه و تابع set خروجی نداره و void هستش و فقط یک عمل رو انجام میده.
این توابع getter setter رو برای همه‌ی Propertyها بنویسید تا کپسوله سازی Encapsulation به طور کلی انجام بشه.
کد کامل رو میتونید تو نمونه کد زیر ببینید

دقت کنید که Property با متغیر Boolean به جای تابع با اسم get عبارت is هستش.
آخرین نکته اینه که قرار نیست همه‌ی این کد ها رو دستی بنویسید و شرکت Jet Brains به فکر شما بوده.
برای اضافه کردن راحت و سریع getter setterها طبق عکس به منو‌ی کد
IntelliJ IDEA
گزینه‌ی Generate رو بزنید و تو پنجره‌ی باز شده Getter Setter رو بزنین.
Generate
تو پنجره‌ی جدید همه‌ی Propertyها انتخاب کنید و OK رو بزنین تا Getter Setter ها اضافه بشه.
GetterSetter

با پنگوئن همراه باشید 🐧