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, kyunke uski state change karne ka ekmatra tareeqa un methods se hai jo woh expose karna chunta hai. Ek method jo const mark hai, woh promise karta hai ke 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, kyunke class ke bahar koi bhi cheez use directly reach nahi kar sakti — har change ko deposit se guzarna parta 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 karein 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 wapas kare. celsius 100.0 wali ek Temperature banayein aur uska Fahrenheit value print karein.