CodeBlanks Logo Icon CodeBlanks

Getter ve setter

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

main.cpp
#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

main.cpp
#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

Soru
std::string get____() { return name; }
Cevap
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;)

main.cpp
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

Orta seviye bölümündeki tüm dersler