プロパティ
提供:AB開発Wiki
ナビゲーションに移動検索に移動
プロパティは、クラスのメンバにアクセスする要領でメソッド呼び出しを行う概念です。 プロパティを使用すると、直観的な表現によってソースコードの可読性の向上が期待できます。
プロパティの定義
プロパティを定義するには、定義したいプロパティの名前と同名のメソッドを定義します。 具体的な定義方法はクラス#メソッドの定義を参照してください。
Get アクセッサ
プロパティを評価する操作は、そのプロパティと同じ名前で引数を持たない同名のメソッドの呼び出しに置換されます。 値を取得 (get) するので、このメソッドをGetアクセッサといいます。
Set アクセッサ
プロパティに値を代入する操作は、そのプロパティと同じ名前で引数が 1 つのメソッドの呼び出しに置換されます。 値を代入 (set) するので、このメソッドをSetアクセッサといいます。
使用例
具体的なプロパティの使用方法を示します。
Class CFoo m_value As Long Public ' Value プロパティの定義 ' Get アクセッサ Function Value() As Long Value = m_value End Function ' Set アクセッサ Sub Value(num As Long) ' num は 1 .. 100 の範囲内でなければならないとする If (num < 1) Or (num > 100) Then ' num が範囲外なので、ここで何らかのエラー処理を行う Else m_value = num End If End Sub End Class Dim x As CFoo 'x.m_value = 10 ' NG: m_value は CFoo クラスの Private メンバなので、直接アクセスはできない。 ' 次の 2 文は等価 x.Value = 10 ' Value プロパティへの代入 x.Value(10) ' Value() メソッド(Set アクセッサ)の呼び出し Dim y As Long ' 次の 2 文は等価 y = x.Value ' Value プロパティの取得 y = x.Value() ' Value() メソッド(Get アクセッサ)の呼び出し
メソッドのプロパティ性
0 個ないし 1 個の引数を持つメソッドはすべてプロパティとなりえます。プロパティへのアクセスはメソッドの呼び出しと完全に等価です。 よって、クラスの提供者がメソッドとして呼び出されることを意図して設計したとしても、クラスの利用者はその意図を無視してプロパティとしてアクセスできます。 逆に、クラスの提供者がプロパティとして呼び出されることを意図して定義したメソッドを、通常のメソッドとして呼び出すこともできます。 このように設計者の意図に反した形式でプロパティ/メソッドを使用してもプログラムの動作に支障はありませんが、コードの可読性はかえって低下するおそれがあります。 プロパティを使用するときは以上のことをよく心得ておいてください。