Getter ve setter
- C++ kursu
- Orta seviye
- Ders 25/116
- 5 dk
Getter ve setter ile kontrollü erişim öğrenirsin.
Getter ve setter
Private üyelere kontrollü erişim sağlayan metotlara getter ve setter denir. Getter okur, setter yazar. İsim genelde get veya set önekiyle üye adından türetilir: getName(), setName().
Örnek: class Student { private: std::string name; public: std::string getName() { return name; } void setName(std::string n) { name = n; } };. Getter name'i döndürür; setter name'e değer atar. Setter içine doğrulama eklenebilir: if (!n.empty()) name = n; gibi. Böylece boş isim engellenir. Bu desen, kapsüllemenin standart yoluwdur.
Setter'da doğrulama
Setter'ın gücü, yazmadan önce kontrol yapabilmesinde yatar. Doğrudan atama yapsaydın kontrol edemezdin. Setter içinde parametreyi test eder, yalnız geçerliyse üye değişkene atarsın.
Örnek: void setAge(int a) { if (a >= 0 && a <= 150) age = a; }. Bu setter 0–150 aralığı dışındaki yaşları reddeder. setAge(-5) veya setAge(200) çağrıları age'i değiştirmez. Böylece nesne her zaman tutarlı durumda kalır. Setter'a ayrıca kenar durum loglaması veya hata fırlatma da eklenebilir.
Uygulama Student sınıfına getter ve setter ekle
Student sınıfını tanımla. private: altına int age; üye değişkeni ekle. public: altına int getAge() { return age; } ve void setAge(int a) { if (a >= 0) age = a; } metotlarını ekle. main içinde bir örnek oluştur, setAge(20) ve setAge(-5) çağır, sonra std::cout ile getAge()'yi yazdır.
Başlangıç kodu
#include <iostream>
// Student sınıfını tanımla
int main() {
// Student örneği oluştur, setAge çağır ve getAge yazdır
return 0;
}Örnek çözüm
#include <iostream>
class Student {
int age;
public:
int getAge() {
return age;
}
void setAge(int a) {
if (a >= 0) age = a;
}
};
int main() {
Student s;
s.setAge(20);
s.setAge(-5);
std::cout << s.getAge();
return 0;
}Beklenen çıktı
20
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Getter adını tamamla
std::string get____() { return name; }
std::string getName() { return name; }
Açıklama: Getter adı get + üye adı (PascalCase): getName().
2 setAge(-5) çağrısı ne yapar? (gövde: if (a >= 0 && a <= 150) age = a;)
void setAge(int a) { if (a >= 0 && a <= 150) age = a; }- age = -5 yapar
- Derleme hatası verir
- age'i değiştirmez Doğru cevap
- age = 0 yapar
Açıklama: -5, 0–150 aralığında olmadığı için age değişmez.
3 Metodu rolüne eşle
| Kavram | Anlamı |
|---|---|
getName() |
Okuma (getter) |
setName(n) |
Yazma (setter) |
if (a >= 0) age = a |
Doğrulama |
private: int age; |
Gizli veri |