って、私は思ったんですよ。
名前は名前のまんまでしょ。
変わるわけないんだから。
関数で結婚させるとかないんだからさ。
カプセル化に戻り値があるのよ…
カプセル化の「戻り値」は、ゲッター(getter)メソッドがある。
なんでこれがあるのか?
ゲッターやセッターが存在する理由は、将来の拡張性や一貫性にあります。最初はただの値を返すだけに見えても、次のようなことを考えた場合に役立つんです。
- 値に対して何らかの検証を追加する(たとえば名前のフォーマットチェック)
- ログを記録する(「この名目は何回取得されたか」記録する)
- 別の処理を付け加える(たとえばデータベースからの読み取り
これらを後で実現するために、最初からゲッターとセッターを仕込んでおくというわけです。だから、「面倒だな」という感覚も理解しつつ、その背後には「保守性」や「拡張性」が隠れているんですね。
言ってる意味わからないけど、
なるほど!証拠を残そうとしているわけね!関所みたいなものか!
確かにゲッターやセッターを使うカプセル化は、
関所のような役割と似ています。
「通行証を見せてください!確認したら通してあげますよ!」という感じで、
外部からアクセスするデータを一度チェックする仕組みを持たせているわけです。
- 関所の役割:プライベート変数は関所の奥に隠されています。そして、ゲッターやセッターが「このデータにあくせるするにはルールを守ってね!」とチェックポイントのように動く
- 証拠を残す:必要な時に、過去に何が通過したのか(つまりどんなデータをアクセスしたか)を記録したり、場合によってはルールに従わないものを通過させない仕組みも設けられています。
カプセル化は単にデータを隠すだけじゃなく、きちんと「通行の管理」をするところに意義がありますよね。