クラス定義に必要なステートメントの基本的な使い方とユーザ定義クラスの基本的な構造についてまとめます。
使用するステートメント
クラス定義に使用するステートメントは主に次の通りです。
ステートメント | 役割 |
Class | クラスをユーザ定義します。 |
Property Get/Set | クラスにプロパティを定義します。 |
Function Sub |
クラスにメソッドを定義します。 |
Function と Sub については、クラス定義以外でも使用するので、なじみがあると思います。
クラスの定義
まずはクラスの定義方法です。
Class ステートメントで記述を開始し、クラス名を指定します。以下の例では Employee がクラス名となります。そして、Class ~ End Class の間に作成するクラスの中身を記述します。
Class Employee (クラスの定義を記述) End Class |
ドミノデザイナーでは、クラスを作成すると左側のオブジェクトのリストに追加されます。
プロパティとメンバ変数
プロパティはインスタンスに対して値の取得と設定ができます。Property の後ろに Get をつけるとプロパティから値を取得でき、Set でプロパティに値を設定できるようになります。また、As 以降でプロパティの型を定義します。下記の例では、Birthday というプロパティは Variant 型で設定と取得ができる定義となっています。
Class Employee zvBD As Variant Property Get Birthday As Variant Birthday = zvBD End Property Property Set Birthday As Variant zvBD = Birthday End Property End Class |
当たり前ですが、Get / Set とも同じ型になります。なお、Property は Get だけを記述すると取得のみ、Set だけだと設定のみのプロパティとなります。
Class ステートメント直下には変数を宣言できます。この変数はインスタンス内の値を保持するエリアとして使用されます。
Property Get / Set ステートメントではプロパティ名が値のインターフェースとなります。例えば Set の場合は、Birthday にコール元の値が入ってきます。メンバ変数 zvBD をセットすることでインスタンス内に保持させています。
メソッド
値を返すメソッドの作成には Function、戻り値が不要の場合は Sub ステートメントを使用します。Class ステートメント内に記述すること以外は、通常の関数作成とほぼ同様です。以下の例では使用していませんが、引数を定義することもできます。
違いがあるとすれば、メンバ変数にアクセスできることが挙げられます。
Class Employee ・・・ Function GetAge() As Integer Dim iAge As Integer ' 現在日付と誕生日(zvBD)から年齢を計算 iAge = ・・・ GetAge = iAge '戻り値をセット End Function End Class |
デザイナーとユーザ定義クラス
ここまで作成するとデザイナーでは次のように表示されます。
作成したプロパティやメソッド、メンバ変数はクラス配下のエントリとしてリストされます。リストはソートされており、クリックするとその部分のソースコードが表示できるので、効率的に開発できますね。
クラスの利用
ユーザ定義型クラスは、以下のように変数宣言の New でインスタンスが作成できます。
Dim oEmp As New Employee |
そして、定義済みのクラスと同様に、"."(ピリオド)を入力することにより、プロパティやメソッドにアクセスできます。
前回 | クラス化に挑戦 | 次回 |
0 件のコメント:
コメントを投稿