nameになんで戻り値必要なの?名前は名前で返ってきて当たり前じゃん

って、私は思ったんですよ。

名前は名前のまんまでしょ。

変わるわけないんだから。

関数で結婚させるとかないんだからさ。

カプセル化に戻り値があるのよ…

 

カプセル化の「戻り値」は、ゲッター(getter)メソッドがある。

なんでこれがあるのか?

 

ゲッターやセッターが存在する理由は、将来の拡張性や一貫性にあります。最初はただの値を返すだけに見えても、次のようなことを考えた場合に役立つんです。

 

  • 値に対して何らかの検証を追加する(たとえば名前のフォーマットチェック)
  • ログを記録する(「この名目は何回取得されたか」記録する)
  • 別の処理を付け加える(たとえばデータベースからの読み取り

 

これらを後で実現するために、最初からゲッターとセッターを仕込んでおくというわけです。だから、「面倒だな」という感覚も理解しつつ、その背後には「保守性」や「拡張性」が隠れているんですね。

 

 

言ってる意味わからないけど、

なるほど!証拠を残そうとしているわけね!関所みたいなものか!

 

 

確かにゲッターやセッターを使うカプセル化は、

関所のような役割と似ています。

 

「通行証を見せてください!確認したら通してあげますよ!」という感じで、

外部からアクセスするデータを一度チェックする仕組みを持たせているわけです。

 

  • 関所の役割:プライベート変数は関所の奥に隠されています。そして、ゲッターやセッターが「このデータにあくせるするにはルールを守ってね!」とチェックポイントのように動く
  • 証拠を残す:必要な時に、過去に何が通過したのか(つまりどんなデータをアクセスしたか)を記録したり、場合によってはルールに従わないものを通過させない仕組みも設けられています。
  •  

カプセル化は単にデータを隠すだけじゃなく、きちんと「通行の管理」をするところに意義がありますよね。