کپسولهسازی یکی از اصول مهم OOP است که دادهها (متغیرها) و توابعی که روی آن دادهها عمل میکنند را داخل یک کلاس واحد قرار میدهد.
به این ترتیب جزئیات داخلی پنهان میمانند و فقط از طریق توابع مشخص (اینترفیس) قابل دسترسیاند.
🎯 هدفهای کپسولهسازی
-
مخفیسازی دادهها (Data Hiding)
-
کنترل دسترسی به متغیرها
-
امکان تغییر پیادهسازی داخلی بدون تغییر کدهای دیگر
-
افزایش امنیت و جلوگیری از تغییرات غیرمجاز
🔑 پیادهسازی در C++
کپسولهسازی با استفاده از:
-
اعضای
private
یاprotected
برای دادهها -
توابع
public
(Getter/Setter) برای دسترسی و تغییر دادهها
🟢 مثال ساده
#include <iostream>
using namespace std;
class BankAccount {
private:
double balance; // ✅ متغیر خصوصی (پنهان)
public:
// سازنده
BankAccount(double initialBalance) {
if (initialBalance >= 0)
balance = initialBalance;
else
balance = 0;
}
// متد واریز (Setter)
void deposit(double amount) {
if (amount > 0)
balance += amount;
}
// متد برداشت (Setter)
void withdraw(double amount) {
if (amount > 0 && amount <= balance)
balance -= amount;
}
// متد دریافت موجودی (Getter)
double getBalance() const {
return balance;
}
};
int main() {
BankAccount account(1000);
account.deposit(500); // ✅ افزایش موجودی
account.withdraw(200); // ✅ برداشت
cout << "Balance: " << account.getBalance() << endl;
// account.balance = 10000; // ❌ خطا: دسترسی مستقیم ممنوع
return 0;
}
🖨️ خروجی:
Balance: 1300
🏷️ نکات کلیدی
-
متغیرها private میشوند تا از تغییر مستقیم جلوگیری شود.
-
توابع public کنترل میکنند که دادهها چگونه تغییر کنند (قوانین اعتبارسنجی).
-
این کار همان Data Hiding است که بخشی از کپسولهسازی محسوب میشود.
💡 تفاوت با Abstraction (انتزاع)
-
Encapsulation: مخفی کردن دادههای داخلی و مدیریت دسترسی.
-
Abstraction: مخفی کردن پیادهسازی منطق و نمایش فقط قابلیتها.
✅ خلاصه
مفهوم | توضیح |
---|---|
تعریف | ترکیب داده و توابع در یک واحد (کلاس) |
هدف | امنیت، کنترل دسترسی، سادگی تغییرات |
ابزار | private/protected + public getters/setters |
نتیجه: کپسولهسازی به شما کمک میکند دادههای حساس را ایمن کنید و کنترل کامل روی نحوهی دسترسی و تغییر آنها داشته باشید.