Excel VBA 情報隠蔽 クラスモジュール
Excel VBAにはクラスモジュールがあるので、今回はJavaと同じように情報隠蔽をしてみよう
という内容です。
まず図1のように「Neko」というクラスモジュールを用意します。オブジェクト名を「Neko」に
変更します。
そしてクラスモジュール内に図2のようにプログラムを記述します。
ここで「name」はネコの名前、「color」はネコの色としています。ここで変数を「Private」
とすることで、外部からフィールドに直接アクセスできないようにします。
アクセスできないままだと困るので、setter、getterを用意します。「Property Let」
がsetter、「Property Get」がgetterとなっています。またClass_Initializeとしてコンストラクタ
も用意します。
そしてメソッドとして「Jump()」を用意します。次に標準モジュールでインスタンスを生成し
setterを使ってフィールドの値を設定します。
標準モジュールのプログラムは図3となります。
図3では、最初に「nanaShineko」というフィールドに値を設定していない、ネコのインスタンス
を生成しています。この状態でJump()メソッドを使用すると、コンストラクタの値が設定されます。「色なしネコ名無しは塀を飛び越えた」と表示されます。
次に、kuroNekoインスタンスを生成し、setterを利用してフィールドに値を設定すると、
「黒ネコタマは塀を飛び越えた」となります。
このようにExcelVBAでも一応、情報隠蔽ができます。クラスモジュールのフィールドに
直接アクセスして欲しくない時に利用してみてください。
また、getterも設定してあるので、「kuroNeko.myName」とする事で「name」の値を
取り出すことが可能です。