Setterių ir getterių pranašumai OOP JavaScripte

Ankstesnėje pamokoje mes sukūrėme kiekvienam savybei getterį ir setterį. Gali kilti klausimas, kam reikalingi tokie sudėtingumai, nes iš esmės to pačio efekto galima pasiekti, jei savybes padarytume viešas, o ne privačias.

Esmė ta, kad getteriai ir setteriai turi pranašumą: prieš kreipiantis į savybę galima atlikti tam tikrus patikrinimus. Pavyzdžiui, mūsų atveju, įrašant vardą ir pavardę, galime patikrinti, ar nauja reikšmė nėra tuščias eilutė:

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

Patikrinkime, kaip tai veikia. Pirmiausia sukurkime klasės objektą:

javascriptlet user = new User;

Dabar pabandykime įrašyti teisingą reikšmę:

javascriptuser.setName('john');

O dabar pabandykime įrašyti neteisingą:

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

Klasėje Employee setteryje amžiaus atlikite patikrinimą, kad amžius turi būti nuo 0 iki 120.

Задание 2

Klasėje Employee getteryje atlyginimo padarykite taip, kad skaitant atlyginimą prie jo reikšmės galo būtų pridedamas dolerio ženklas.