Setteru un getteru priekšrocības OOP JavaScript

Iepriekšējā nodarbībā mēs izveidojām katram īpašumam getteri un setteri. Var rasties jautājums, kāpēc ir vajadzīgi šādi sarežģījumi, jo faktiski tādu pašu efektu var sasniegt, ja padara īpašumus publiskiem, nevis privātiem.

Lieta ir tāda, ka getteriem un setteriem ir priekšrocība: pirms piekļūšanas īpašumam var veikt dažas pārbaudes. Piemēram, mūsu gadījumā, ierakstot vārdu un uzvārdu, mēs varam pārbaudīt, ka jaunā vērtība nav tukša virkne:

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

Pārbaudīsim, kā tas darbojas. Vispirms izveidosim klases objektu:

javascriptlet user = new User;

Tagad mēģināsim ierakstīt korektu vērtību:

javascriptuser.setName('john');

Un tagad mēģināsim ierakstīt nekorektu:

javascriptuser.setName(''); // kļūda
Задание 1

Klasē Employee setterī vecuma veiciet pārbaudi, ka vecumam jābūt no 0 līdz 120.

Задание 2

Klasē Employee getterī algas izdariet tā, lai lasot algu beigās tās vērtībai tiktu pievienota dolāra zīme.