タイトル: カプセル化の概念と必要性
本稿はカプセル化の記事です。
カプセル化とは
カプラセル化とはオブジェクト(クラス)の保持するプロパティ(変数)を外部から直接参照、更新できないようにすることです。
外部から変数を直接操作させいないということは、変数のアクセス修飾子はprivateとなります。
オブジェクトの保持する変数の値を変更するにはオブジェクトが用意したメソッドを使用します。
主にgetter, setterメソッドと呼ばれるものです。(詳細は後述)
メソッドのアクセス修飾子はpublicのように外部から変更できるものにします。
なぜカプセル化が必要なのか?
通常、変数に値を代入する際は、データ型が合えば代入可能です。
しかし、例えば、あるクラスのある変数には数値の1~10までしか代入させたくない、という場合があるとします。
この場合、変数に値を直接を代入させると1~10の範囲チェックを行うことができません。
しかし、setterメソッド(変数に値を代入する用のメソッド)を定義すれば、メソッド内で引数として受け取った値が範囲内であるかどうかをチェックすることができます。
getterメソッド(変数の値を参照する用のメソッド)も同様で、変数から直に値を取得したくない場合はメソッド内で値を加工してreturnさせることができます。(日付の表記など)
このようにカプセル化の概念通りオブジェクトを設計すれば、オブジェクトの変数は想定した通りの設定値と取得値にすることができます。