A getterek és setterek előnyei az OOP-ben JavaScriptben

Az előző leckében minden tulajdonsághoz készítettünk gettert és settert. Felmerülhet a kérdés, miért szükségesek ilyen bonyolultságok, hiszen gyakorlatilag ugyanazt az eredményt el lehet érni, ha a tulajdonságokat nyilvánossá tesszük, nem pedig priváttá.

A dolog az, hogy a gettereknek és settereknek van előnyük: a tulajdonsághoz való hozzáférés előtt végezhetünk néhány ellenőrzést. Például a mi esetünkben a név és vezetéknév beállításakor ellenőrizhetjük, hogy az új érték nem üres sztring-e:

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

Nézzük meg, hogyan működik ez. Először hozzunk létre egy objektumot az osztályból:

javascriptlet user = new User;

Most próbáljunk meg beállítani egy helyes értéket:

javascriptuser.setName('john');

És most próbáljunk meg beállítani egy helytelen értéket:

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

A Employee osztályban a kor setterében végezz ellenőrzést arra, hogy a kornak 0 és 120 között kell lennie.

Задание 2

A Employee osztályban a fizetés getterében állítsd be úgy, hogy a fizetés olvasásakor annak értéke végére dollárjel kerüljön.