JavaScript-daky OOP-de setter we getterleriň artykmaçlyklary

Öňki sapakda her bir häsiýet üçin getter we setter ýasadyk. Soňam näme üçin şeýle çylşyrymlylyklar gerek, diýen sowal ýüze çykyp biler, sebäbi şol bir netijä ýetmek mümkün, eger häsiýetleri gizlin däl, umumy etsekem.

Mesele şonda, getter we setterleriň artykmaçlygy bar: häsiýete ýüz tutmazdan öň käbir barlaglar ýerine ýetirip bolýar. Mysal üçin, bizim ýagdaýymyzda ady we familiýany ýazdyrylanda, täze bahanyň boş setir däldigini barlap bolýar:

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;
  }
}

Geliň, munyň nädip işleýändigini barlalyň. Ilki bilen klasyň objektini döredeliň:

javascriptlet user = new User;

Indi bolsa dogry bahany ýazmaga synanyşalyň:

javascriptuser.setName('john');

Indi bolsa ýalňyşyny ýazmaga synanyşalyň:

javascriptuser.setName(''); // ýalňyş
Задание 1

Employee klasynda ýaşyň setterinde şunuň ýaly barlag ediň, ýaş 0-dan 120 çenli bolmaly.

Задание 2

Employee klasynda aýlyk hakyň getterinde şeýle ediň, ýöne aýlyk hak okalanda onuň bahasyňyň ahyryna dollar nyşany goşulsyn.