JavaScript OOP-де сеттерлер мен геттерлердің артықшылықтары

Алдыңғы сабақта біз әрбір қасиет үшін геттер мен сеттер жасадық. Неге мұндай күрделіліктер қажет деген сұрақ туындауы мүмкін, себебі іс жүзінде бірдей әсерге қол жеткізуге болады, егер қасиеттерді жеке емес, жалпыға болатын етіп жасасақ.

Мәселе мынада, геттерлер мен сеттерлердің артықшылығы бар: қасиетке жүгінуге дейін кейбір тексерулерді орындауға болады. Мысалы, біздің жағдайда біз аты мен тегіні жазған кезде жаңа мәннің бос жол емес екенін тексере аламыз:

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

Бұл қалай жұмыс істейтінін тексерейік. Алдымен сынып нысанын жасайық:

javascriptlet user = new User;

Енді дұрыс мәнді жазуға тынайық:

javascriptuser.setName('john');

Енді дұрыс емес мәнді жазуға тынайық:

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

Employee сыныбында жасты орнатушыда жас 0-ден 120-ға дейін болуы керек екенін тексеріңіз.

Задание 2

Employee сыныбында жалақы геттерінде жалақыны оқыған кезде оның мәнінің соңына доллар белгісі қосылатындай етіп жасаңыз.