Digital_Neko

フリーランスプログラマー

Excel VBA 情報隠蔽 クラスモジュール

Excel VBAにはクラスモジュールがあるので、今回はJavaと同じように情報隠蔽をしてみよう
という内容です。

まず図1のように「Neko」というクラスモジュールを用意します。オブジェクト名を「Neko」に
変更します。

図1.クラスモジュール オブジェクト名Neko

そしてクラスモジュール内に図2のようにプログラムを記述します。

図2 クラスモジュール

ここで「name」はネコの名前、「color」はネコの色としています。ここで変数を「Private」
とすることで、外部からフィールドに直接アクセスできないようにします。

アクセスできないままだと困るので、setter、getterを用意します。「Property Let」
がsetter、「Property Get」がgetterとなっています。またClass_Initializeとしてコンストラクタ
も用意します。

そしてメソッドとして「Jump()」を用意します。次に標準モジュールでインスタンスを生成し
setterを使ってフィールドの値を設定します。

標準モジュールのプログラムは図3となります。

図3.標準モジュール

図3では、最初に「nanaShineko」というフィールドに値を設定していない、ネコのインスタンス
を生成しています。この状態でJump()メソッドを使用すると、コンストラクタの値が設定されます。「色なしネコ名無しは塀を飛び越えた」と表示されます。

次に、kuroNekoインスタンスを生成し、setterを利用してフィールドに値を設定すると、

「黒ネコタマは塀を飛び越えた」となります。

このようにExcelVBAでも一応、情報隠蔽ができます。クラスモジュールのフィールドに
直接アクセスして欲しくない時に利用してみてください。

また、getterも設定してあるので、「kuroNeko.myName」とする事で「name」の値を
取り出すことが可能です。