# Java Encapsulation توضیح داده شد – انجمن DEV

کپسوله سازی یکی از چهار مفهوم اساسی برنامه نویسی شی گرا (OOP) در جاوا است، در کنار وراثت، چند شکلی و انتزاع. این مکانیسمی است که داده ها (متغیرها) و کدهایی را که روی داده ها (روش ها) عمل می کنند به عنوان یک واحد واحد در کنار هم قرار می دهد.
چرا کپسولاسیون مهم است؟
کپسوله سازی در جاوا به چند دلیل بسیار مهم است:
- پنهان کردن داده ها: به مخفی کردن جزئیات داخلی یک کلاس و محافظت از داده ها از دسترسی غیرمجاز کمک می کند.
- انعطافپذیری: انعطافپذیری کد را افزایش میدهد و به توسعهدهندگان اجازه میدهد تا پیادهسازی داخلی را بدون تأثیرگذاری بر سایر بخشهای کد تغییر دهند.
- قابلیت استفاده مجدد: کد کپسوله شده ماژولارتر است و استفاده مجدد آسان تر است.
- تست: تست واحد را آسانتر میکند زیرا تستهای واحد میتوانند بر رابط عمومی کلاس تمرکز کنند.
نحوه پیاده سازی کپسولاسیون در جاوا
کپسوله سازی در جاوا معمولاً از طریق مکانیسم های زیر حاصل می شود:
- اعلام کردن متغیرها به عنوان خصوصی
- ارائه متدهای دریافت کننده و تنظیم کننده عمومی برای دسترسی و اصلاح مقادیر متغیر
در اینجا یک مثال ساده آورده شده است:
public class Student {
private String name;
private int age;
// Getter for name
public String getName() {
return name;
}
// Setter for name
public void setName(String name) {
this.name = name;
}
// Getter for age
public int getAge() {
return age;
}
// Setter for age
public void setAge(int age) {
if (age > 0 && age 120) { // Basic validation
this.age = age;
} else {
System.out.println("Invalid age");
}
}
}
در این مثال:
- را
name
وage
متغیرها به عنوان خصوصی اعلام می شوند، به این معنی که نمی توان مستقیماً از خارج از کلاس به آنها دسترسی داشت. - متدهای دریافت کننده و تنظیم کننده عمومی برای دسترسی و اصلاح این متغیرها ارائه شده است.
- روش تنظیم کننده برای
age
شامل برخی از اعتبار سنجی اساسی است که نشان می دهد چگونه کپسوله سازی می تواند به حفظ یکپارچگی داده ها کمک کند.
استفاده از کلاس های کپسوله شده
در اینجا نحوه استفاده از این کپسوله آورده شده است Student
کلاس:
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.setName("Alice");
student.setAge(20);
System.out.println("Name: " + student.getName());
System.out.println("Age: " + student.getAge());
student.setAge(150); // This will print "Invalid age"
}
}
مزایای کپسولاسیون در عمل
-
حفاظت از داده ها: با خصوصی کردن متغیرها از دسترسی مستقیم و اصلاح خارج از کلاس جلوگیری می کنیم. این داده ها را از تغییرات ناخواسته محافظت می کند.
-
انعطاف پذیری: اگر لازم باشد نحوه ذخیره یا اعتبارسنجی داده ها را تغییر دهیم، می توانیم این کار را در متدهای setter بدون تغییر نحوه استفاده خارجی کلاس انجام دهیم.
-
کنترل کنید: ما می توانیم منطق سفارشی را در گیرنده ها و ستترها پیاده سازی کنیم. برای مثال، ما میتوانیم همه تغییرات را در یک متغیر ثبت کنیم یا قوانین اعتبارسنجی پیچیدهتری را پیادهسازی کنیم.
کپسولاسیون و سایر مفاهیم OOP
کپسولاسیون با سایر مفاهیم OOP کار می کند:
-
وراثت: کپسوله سازی می تواند کنترل کند که چه جنبه هایی از یک سوپرکلاس برای زیر کلاس ها قابل دسترسی است.
-
Abstraction: Encapsulation از انتزاع با پنهان کردن جزئیات پیاده سازی پیچیده و افشای تنها موارد ضروری پشتیبانی می کند.
تکنیک های کپسولاسیون پیشرفته
-
کلاس های تغییرناپذیر: با نهایی کردن تمام فیلدها و ارائه فقط دریافت کننده ها، می توانید کلاس های غیرقابل تغییر ایجاد کنید که ذاتاً از نظر thread ایمن هستند.
-
الگوی سازنده: برای کلاس هایی با ویژگی های زیاد، الگوی Builder راهی برای ساختن اشیاء گام به گام با حفظ کپسوله سازی ارائه می دهد.
-
دسترسی به اصلاح کننده ها: جاوا اصلاح کننده های دسترسی مختلف را فراهم می کند (
public
،private
،protected
، پیش فرض) برای تنظیم دقیق سطح کپسولاسیون.
نتیجه گیری
Encapsulation یک مفهوم قدرتمند در جاوا است که به ایجاد کد قوی تر و قابل نگهداری کمک می کند. با پنهان کردن جزئیات داخلی یک کلاس و ارائه دسترسی کنترل شده از طریق متدها، می توانیم برنامه های کاربردی انعطاف پذیرتر و ایمن تر بسازیم.
برای اطلاعات بیشتر در مورد اصول جاوا، این موضوعات مرتبط را بررسی کنید:
به یاد داشته باشید، کپسوله سازی خوب کلید نوشتن کد جاوا تمیز، قابل نگهداری و قوی است!