Encapsulation
Ek member ko private mark karna class ke bahar ke code ko use directly touch karne se rokta hai — ab class apne invariants guarantee kar sakta hai, kyunki uski state change karne ka ekmatra tarika un methods se hai jo woh expose karna chunta hai. Ek method jo const mark hai, woh promise karta hai ki jis object par woh call hoti hai use modify nahi karegi, jisko compiler check aur enforce karta hai.
#include <iostream>
using namespace std;
class BankAccount {
private:
double balance;
public:
BankAccount(double initial) {
balance = initial;
}
double getBalance() const {
return balance;
}
void deposit(double amount) {
balance += amount;
}
};
int main() {
BankAccount account(100.0);
account.deposit(50.0);
cout << "Balance: " << account.getBalance() << endl;
return 0;
}Balance: 150
balance ko BankAccount ke bahar se kabhi bhi ek invalid value par set nahi kiya ja sakta, kyunki class ke bahar koi bhi cheez use directly reach nahi kar sakti — har change ko deposit se guzarna padta hai, jise class completely control karta hai.
Aage: inheritance aur polymorphism — ek class hierarchy banana, aur runtime par sahi override par dispatch karna.
Practice exercise
Ek class Temperature define karo jiska ek private double celsius ho, ek constructor jo use set kare, aur ek const method getFahrenheit() jo celsius * 9.0 / 5.0 + 32.0 return kare. celsius 100.0 wali ek Temperature banao aur uska Fahrenheit value print karo.