JavaScript හි OOP හි ආරක්ෂිත ක්‍රම

පුද්ගලික ක්‍රම උරුම නොවන අතර පන්තියෙන් පිටතින් පෙනෙන්නේ නැත. කෙසේ වෙතත්, සමහරවිට අවශ්‍ය වන්නේ උරුම වන නමුත් පන්තියෙන් පිටතින් නොපෙනෙන ක්‍රම වේ. එවැනි ක්‍රම ආරක්ෂිත (protected) ලෙස හැඳින්වේ. අවාසනාවකට, JavaScript එවැනි ක්‍රම සඳහා සහය නොදක්වයි.

එමනිසා, එවැනි ක්‍රම සෑදීමට ඉඩ සලසන යම් එකඟතාවක් හඳුන්වා දෙන ලෙස මම යෝජනා කරමි. අපි එවැනි ක්‍රමවල නම් යටි ඉරින් ආරම්භ කරමු. ඇත්ත වශයෙන්ම, අපි පැරණි සාමාන්‍යයෙන් පිළිගත් පුද්ගලික ක්‍රම සඳහා වන එකඟතාවය භාවිතා කරන්නෙමු. ඒවා උරුම වන නමුත් අපි ඒවා පිටතින් භාවිතා නොකරන බව පෙන්වීමට අපි එවැනි ක්‍රම ආරක්ෂිත ලෙස හඳුන්වමු. කෙසේ වෙතත්, පැරණි එකඟතාවය අනුව ඒවා භාවිතා වන්නේ හරියටම එලෙසයි.

ඉතින්, අපි ආරක්ෂිත ක්‍රමයක් සහිත මව් පන්තියක් ලියමු:

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

මෙම ආරක්ෂිත ක්‍රමය දූ පුත්‍ර පන්තියකින් භාවිතා කරමු:

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

පහත කේතයේ, සහායක ක්‍රමය ආරක්ෂිත කරන්න:

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