C++
private üyeler
private üyelerle bilgi gizlemeyi öğrenirsin.
private üyeler
Kapsülleme (encapsulation), nesnenin iç verisini dışarıdan gizlemektir. C++'ta bunu private erişim belirleyici ile yaparsın. Bir private üyeye yalnızca sınıfın kendi üye fonksiyonlarından erişilebilir; sınıf dışından doğrudan okunamaz veya değiştirilemez.
Örnek: class Account { private: int balance; };. Burada balance private'dır. Account a; a.balance = 100; yazarsan derleme hatası alırsın; çünkü balance'a sınıf dışından erişemezsin. Bu, balance'ın negatif gibi geçersiz değerler almasını engeller. Veriyi yalnızca kontrollü yollarla açmak, hataları erken yakalar.
Veriyi koruma
private yapmak, veriyi gizlemekle kalmaz; geçersiz değerleri engellemenin de temelidir. Üye değişkeni private yapıp, onu değiştiren public bir metot yazarsan, o metot içinde kontrol yapabilirsin.
Örnek: void setAge(int a) { if (a >= 0) age = a; }. Burada age private'dır. setAge(-5) çağrısı negatif yaşa izin vermez; age değişmez. Eğer age public olsaydı, w.age = -5; yazarak geçersiz değer atabilirdin ve kimse buna engel olamazdı. Kapsülleme, sınıfın değişmezlerini (invariants) korur.
Uygulama Wallet sınıfına private üye ekle
Wallet sınıfını tanımla. private: altına int money; üye değişkeni ekle. public: altına void setMoney(int m) { if (m >= 0) money = m; } ve int getMoney() { return money; } üye fonksiyonlarını ekle. main içinde bir örnek oluştur, setMoney(50) çağır ve std::cout ile getMoney()'yi yazdır.
Örnek çözümü göster
#include <iostream>
class Wallet {
private:
int money;
public:
void setMoney(int m) {
if (m >= 0) money = m;
}
int getMoney() {
return money;
}
};
int main() {
Wallet w;
w.setMoney(50);
std::cout << w.getMoney();
return 0;
}
Kendini test et
-
class Wallet { private: int money; }; tanımında money'ye dışarıdan erişilebilir mi?
class Wallet { private: int money; };
- Evet, her yerden
- Hayır, yalnız sınıf içinden
- Yalnız main içinden
- Yalnız friend sınıflardan
Cevabı göster
Hayır, yalnız sınıf içinden — private üyeye yalnız sınıfın kendi metotlarından erişilir.
-
Erişim belirleyiciyi yaz
class Account { ____: int balance; public: int getBalance(); };
Cevabı göster
class Account { private: int balance; public: int getBalance(); };
-
Belirleyiciyi erişime eşle
- private
- Yalnız sınıf içinden
- public
- Her yerden
- protected
- Miras alanlar da erişir
- int balance;
- private varsayılan
Sıradaki ders: Getter ve setter