JavaScript-da OOP-da Himoyalangan Usullar

Shaxsiy usullar meros qilinmaydi va class tashqarisida ko‘rinmaydi. Biroq, ba'zida meros qilinadigan, lekin class tashqarisida ko‘rinmaydigan usullar kerak bo‘ladi. Bunday usullar himoyalangan (protected) deb ataladi. Afsuski, JavaScript bunday usullarni qo‘llab-quvvatlamaydi.

Shuning uchun men bunday usullarni yaratishga imkon beradigan kelishuvni joriy qilishni taklif qilaman. Bunday usullarning nomlarini pastki chiziq bilan boshlaymiz. Aslida biz shaxsiy usullar uchun eski, keng tarqalgan kelishuvdan foydalanamiz. Faqatgina ular meros qilinadiganligi sababli, ularni himoyalangan deyamiz, lekin biz ularni tashqaridan ishlatmaymiz. Garchi, aynan shu tarzda ular qadimgi kelishuv asosida qo‘llanilgan bo‘lsa ham.

Xo'sh, keling, himoyalangan usuli bo‘lgan ota-class yozamiz:

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this._capeFirst(this.name);
  }
  
  _capeFirst(str) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

Keling, ushbu himoyalangan usuldan voris classda foydalanamiz:

javascriptclass Student extends User {
  setSurn(surn) {
    this.surn = surn;
  }
  getSurn() {
    return this._capeFirst(this.surn);
  }
}
Задание 1

Quyidagi kodda yordamchi usulni himoyalangan qiling:

javascriptclass User {
  setName(name) {
    if (this._notEmpty(name)) {
      this.name = name;
    }
  }
  getName() {
    return this.name;
  }
  
  _notEmpty(str) {
    return str.length > 0;
  }
}
class Employee extends User {
  setSurn(surn) {
    if (this._notEmpty(surn)) {
      this.surn = surn;
    }
  }
  getSurn() {
    return this.surn;
  }
}