کپسولهسازی یکی از اصول مهم 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 | 
نتیجه: کپسولهسازی به شما کمک میکند دادههای حساس را ایمن کنید و کنترل کامل روی نحوهی دسترسی و تغییر آنها داشته باشید.
 CSS3
          CSS3
        
                
           HTML
          HTML
        
                
           Tailwind Css
          Tailwind Css
        
                
           Bootstrap 5
          Bootstrap 5
        
                
           Java script
          Java script
        
                
           ++C
          ++C
        
                
           Python
          Python
        
                
           Three.js
          Three.js
        
                
           Gsap
          Gsap
        
                
           Sass
          Sass
        
                
           SQL
          SQL
        
                
           React
          React