JavaScript da OOP da Getter va Setterlarning afzalliklari

Oldingi darsda biz har bir xususiyat uchun getter va setter yaratdik. Savol tug'ilishi mumkin, nima uchun bunday murakkabliklar kerak, axir amalda bir xil ta'sirga xususiyatlarni ochiq, yashirin emas qilish orqali erishish mumkin.

Gap shundaki, getter va setterlar afzallikga ega: xususiyatga murojaat qilishdan oldin ba'zi tekshiruvlarni bajarish mumkin. Masalan, bizning holatda ism va familiyani yozishda yangi qiymat bo'sh satr emasligini tekshirishimiz mumkin:

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

Keling, bu qanday ishlashini tekshiramiz. Boshlash uchun klass obyektini yaratamiz:

javascriptlet user = new User;

Endi to'g'ri qiymatni yozishga harakat qilaylik:

javascriptuser.setName('john');

Endi noto'g'ri qiymatni yozishga harakat qilaylik:

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

Employee klassida yosh setterida yosh 0 dan 120 gacha bo'lishi kerakligini tekshiradigan qiling.

Задание 2

Employee klassida maosh getterida maoshni o'qiganda uning qiymati oxiriga dollar belgisi qo'shiladigan qiling.