
今回は…
というテーマでお送りします。


【1】 カプセル化とは

カプセル化、本来の意味は…
クラスにまとめること。
をカプセル化といいます。

フィールドを非公開にして…
必要に応じて、公開されたメソッドからのみ
アクセスできるようにします。
これを情報隠蔽といいます。
クラスにまとめること。
✅ フィールドを非公開にして
公開されたメソッドからのみ
アクセスできるようにする。
(情報隠蔽)
【2】 アクセサメソッド(イメージ)

次に、アクセサメソッドについて
見ていきましょう。
このアクセサメソッドは
設定・取得するメソッド。
のことです。
設定するメソッドを setter といい
取得するメソッドを getter といいます。
設定・取得するメソッド。
✅ 設定するメソッドを
setter という。
✅ 取得するメソッドを
getter という。
イメージを見ていきましょう。
フィールドは 非公開となっています。
private指定(情報隠蔽)ですね。

そうすると、外部からこのフィールドへは
直接アクセスできません。
ここで、このオブジェクトを
インスタンス化する時に呼び出されるコンストラクタは…
外部から呼び出されて、フィールドの初期化を行えます。

そして、それ以外で、フィールドに値を設定したい
場合には、setter を呼び出すことになります。
属性と操作が、カプセル化されていますね。

また、フィールドの値を取得したい場合には
getter を呼び出します。
すると、この getterがフィールドの値を取得して
戻り値として返すこととなるのです。
属性と操作が カプセル化されています。

この、setter と getter を合わせて
アクセサメソッドといいます。
このイメージで 押さえておきましょう。

また、アクセサメソッドの名称についてですが
一般的に、このように命名します。
getterの場合…
とします。この時の、フィールド名の先頭を
大文字とします。
そして、setterのについては
となります。
フィールド名の先頭が、大文字です。
例えば、salesAmt というフィールドがあった場合
getter / setter はそれぞれ…
となります。

Javaの慣習としての意味合いもありますし…
eclipse 等のツールで自動生成する場合の名称も
この方式になっていること、押さえておきましょう。
※フィールド名の先頭大文字
✅ setter:setフィールド名
※フィールド名の先頭大文字
(例)
・フィールド:salesAmt の場合
getSalesAmt / setSalesAmt

隠す感じがしてしまいますが…。
大切な情報を隠しておく…という意味なんですね。
理解しました。

みたいな感じですか…。
アクセサメソッドを 適切に作っておけば
「秘伝のタレ」は守られそうですね…。
【3】 効果

カプセル化の効果について見ていきましょう。
❷変更に対する影響範囲の限定
該当のオブジェクトから見ると。
まず、❶不正な操作からの保護 が挙げられます。
例えば人を表すクラスがあって
年齢を表すフィールドがあったとします。
このフィールドは 0以上を設定する必要があります。

この場合に、カプセル化して
アクセスレベルを適切に設定していれば…
setter の中で
チェックを行って不正を知らせる事ができます。

また、❷変更のに対する影響範囲が限られる
という利点もあります。

例えば、フィールド名や型が変更になっても
…利用側の修正は最小限に抑えられます。
殆どの場合、影響の範囲は該当のクラスに
限定できることとなります。

❷複雑さの隠蔽
また、利用する側の利点として
❶ 公開された操作のみに着目できる
という点が挙げられ、併せて…
❷複雑さが隠蔽されていて
枠組みを限定的に考えやすいという事もいえます。

イメージ的にはこのような感じです。
データ構造が複雑になっていても…
それを情報隠蔽してあれば利用側としては
公開された「操作」に着目してオブジェクトを利用できます。

シンプルに 考えやすいですね。
ここまで、カプセル化の効果を見てきましたが…
正直なところ、この効果については…
プログラムを作り込んでいって
段々と実感できてくる ことと思います。
ですので、最初の段階では…
という感覚で、進めてみるのが良いかと思います。

これに従って、やってみます…。

【4】 注意点

アクセサメソッドの注意点を1点お伝えしておきます。
それは…
必要に応じてアクセサメソッドを作成する。
ということです。

安易にアクセサメソッドを作る事
…は お勧めできません。
非公開、読み取り専用、読み書き可能など…
必要かどうか検討してから
外部に公開することを考えましょう。
アクセサメソッドを作成する。
【まとめ】

公開されたメソッドからのみ
アクセスできるようにする。
(情報隠蔽)
設定・取得するメソッド。
❶不正な操作から保護
❷変更に対する影響範囲の限定
(利用する側)
❶公開された操作のみに着目
❷複雑さの隠蔽
アクセサメソッドを
作成する。
今回も、ご覧いただき、ありがとうございます。