private üyeler
- C++ kursu
- Orta seviye
- Ders 24/116
- 4 dk
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.
Başlangıç kodu
#include <iostream>
// Wallet sınıfını tanımla
int main() {
// Wallet örneği oluştur, setMoney çağır ve getMoney yazdır
return 0;
}Örnek çözüm
#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;
}Beklenen çıktı
50
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 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 Doğru cevap
- Yalnız main içinden
- Yalnız friend sınıflardan
Açıklama: private üyeye yalnız sınıfın kendi metotlarından erişilir.
2 Erişim belirleyiciyi yaz
class Account { ____: int balance; public: int getBalance(); };
class Account { private: int balance; public: int getBalance(); };
Açıklama: balance private yapılır, getBalance public açılır.
3 Belirleyiciyi erişime eşle
| Kavram | Anlamı |
|---|---|
private |
Yalnız sınıf içinden |
public |
Her yerden |
protected |
Miras alanlar da erişir |
int balance; |
private varsayılan |