ООПда JavaScriptда сеттер ва геттерларнинг афзалликлари

Олдинги дарсда биз ҳар бир хусусият учун геттер ва сеттер ясадик. Савол туғилиши мумкин, нега бундай мураккабликлар зарур, акси ҳолда худди шу эффектга эришиш мумкин, агар хусусиятларни хусусий эмас, оммавий қилиб қўйсак.

Гэп шундаки, геттер ва сеттерлар афзалликка эга: хусусиятга мурожаат қилишдан олдин баъзи текширишларни бажариш мумкин. Мисол учун, бизнинг ҳолимизда исм ва фамилияни ёзғанда, биз янги қиймат бўш сатр эмаслигини текширишимиз мумкин:

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 классасида маош геттерида маош ўқилганда унинг қиймати охирига доллар белгиси қўшиладиган қилинг.