JavaScript OOP'de Setter ve Getter'ların Avantajları

Önceki derste her bir özellik için getter ve setter oluşturduk. Aklınıza şu soru gelebilir: neden böyle karmaşıklıklara ihtiyaç var? Çünkü aslında aynı etki, özellikleri özel yerine kamuya açık yaparak da elde edilebilir.

Olay şu ki, getter ve setter'ların bir avantajı var: bir özelliğe erişmeden önce bazı kontroller yapabilirsiniz. Örneğin, bizim durumumuzda isim ve soyadı yazarken, yeni değerin boş bir dize olmadığını kontrol edebiliriz:

javascriptclass User {
  #name;
  #surn;
  
  setName(name) {
    if (name.length > 0) {
      this.#name = name;
    } else {
      throw new Error('name is incorrect');
    }
  }
  setSurn(surn) {
    if (surn.length > 0) {
      this.#surn = surn;
    } else {
      throw new Error('surn is incorrect');
    }
  }
  
  getName() {
    return this.#name;
  }
  getSurn() {
    return this.#surn;
  }
}

Bunun nasıl çalıştığını test edelim. Önce sınıfın bir nesnesini oluşturalım:

javascriptlet user = new User;

Şimdi doğru bir değer yazmayı deneyelim:

javascriptuser.setName('john');

Ve şimdi yanlış bir değer yazmayı deneyelim:

javascriptuser.setName(''); // hata
Задание 1

Employee sınıfında, yaş setter'ında yaşın 0 ile 120 arasında olması gerektiğini kontrol edin.

Задание 2

Employee sınıfında, maaş getter'ında, maaş okunurken değerinin sonuna dolar işareti eklenmesini sağlayın.