JavaScriptにおけるOOPのセッターとゲッターの利点

前のレッスンでは、それぞれのプロパティに対してゲッターとセッターを作成しました。 なぜそのような複雑さが必要なのか、実際にはプロパティをプライベートではなくパブリックにすれば同じ効果が得られるのではないか、という疑問が生じるかもしれません。

問題は、ゲッターとセッターには利点があることです:プロパティにアクセスする前に、いくつかのチェックを実行することができます。 たとえば、私たちの場合、名前と姓を書き込むときに、新しい値が空の文字列ではないことを確認できます:

javascriptclass User {
  #name;
  #surn;
  
  setName(name) {
    if (name.length > 0) {
      this.#name = name;
    } else {
      throw new Error('名前が正しくありません');
    }
  }
  setSurn(surn) {
    if (surn.length > 0) {
      this.#surn = surn;
    } else {
      throw new Error('姓が正しくありません');
    }
  }
  
  getName() {
    return this.#name;
  }
  getSurn() {
    return this.#surn;
  }
}

これがどのように機能するか確認してみましょう。 まず、クラスのオブジェクトを作成します:

javascriptlet user = new User;

次に、正しい値を書き込んでみます:

javascriptuser.setName('john');

そして今度は、正しくない値を書き込んでみます:

javascriptuser.setName(''); // エラー
Задание 1

Employee クラスの年齢セッターで、 年齢が 0 から 120 の間でなければならないというチェックを行ってください。

Задание 2

Employee クラスの給与ゲッターで、 給与を読み取るときに、その値の最後にドル記号が追加されるようにしてください。