کپسولهسازی (Encapsulation)
پنهانسازی داده با private و کنترل دسترسی با getter و setter.
کپسولهسازی چیست؟
پنهانکردن جزئیات داخلی کلاس و ارائه دسترسی کنترلشده — مثل قرص دارو: ماده مؤثر داخل پوشش است!
سطوح دسترسی
| سطح | دسترسی |
|---|---|
private | فقط داخل همان کلاس |
(پیشفرض) | کلاس + پکیج |
protected | + زیرکلاسها |
public | همهجا |
الگوی getter/setter
public class BankAccount {
private double balance; ← private! مستقیم قابل دسترسی نیست
// getter — خواندن
public double getBalance() {
return balance;
}
// setter — نوشتن با اعتبارسنجی
public void deposit(double amount) {
if (amount > 0) { ← کنترل!
balance += amount;
}
}
public boolean withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
return true;
}
return false;
}
}
چرا کپسولهسازی؟
// بدون کپسولهسازی — خطرناک!
account.balance = -1000; ← هر کسی هر چیزی ست میکند!
// با کپسولهسازی — امن
account.deposit(500); ← فقط روشهای مجاز
account.withdraw(999999); ← رد میشود (بودجه کافی نیست)
مزایا
- کنترل: داده فقط از مسیر مجاز تغییر میکند
- اعتبارسنجی: مقادیر نامعتبر رد میشوند
- انعطاف: پیادهسازی داخلی قابل تغییر بدون شکستن کد بیرونی
- نگهداری: باگها راحتتر پیدا میشوند
قاعده سرانگشتی: فیلدها private، متدهای لازم public — این قلب کپسولهسازی است.
این مبحث بخشی از دوره آموزش کامل جاوا است.