「プロパティ」の版間の差分
提供:AB開発Wiki
ナビゲーションに移動検索に移動
編集の要約なし |
細 (+Category:言語仕様) |
||
| 8行目: | 8行目: | ||
===Get アクセッサ=== | ===Get アクセッサ=== | ||
プロパティを評価する操作は、そのプロパティと同じ名前で引数を持たない同名のメソッドの呼び出しに置換されます。 | プロパティを評価する操作は、そのプロパティと同じ名前で引数を持たない同名のメソッドの呼び出しに置換されます。 | ||
値を取得 (get) | 値を取得 (get) するので、このメソッドをGetアクセッサといいます。 | ||
===Set アクセッサ=== | ===Set アクセッサ=== | ||
プロパティに値を代入する操作は、そのプロパティと同じ名前で引数が 1 つのメソッドの呼び出しに置換されます。 | プロパティに値を代入する操作は、そのプロパティと同じ名前で引数が 1 つのメソッドの呼び出しに置換されます。 | ||
値を代入 (set) | 値を代入 (set) するので、このメソッドをSetアクセッサといいます。 | ||
==使用例== | ==使用例== | ||
| 54行目: | 54行目: | ||
このように設計者の意図に反した形式でプロパティ/メソッドを使用してもプログラムの動作に支障はありませんが、コードの可読性はかえって低下するおそれがあります。 | このように設計者の意図に反した形式でプロパティ/メソッドを使用してもプログラムの動作に支障はありませんが、コードの可読性はかえって低下するおそれがあります。 | ||
プロパティを使用するときは以上のことをよく心得ておいてください。 | プロパティを使用するときは以上のことをよく心得ておいてください。 | ||
[[Category:言語仕様|ふろはてい]] | |||
2007年8月6日 (月) 02:46時点における最新版
プロパティは、クラスのメンバにアクセスする要領でメソッド呼び出しを行う概念です。 プロパティを使用すると、直観的な表現によってソースコードの可読性の向上が期待できます。
プロパティの定義
プロパティを定義するには、定義したいプロパティの名前と同名のメソッドを定義します。 具体的な定義方法はクラス#メソッドの定義を参照してください。
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 個の引数を持つメソッドはすべてプロパティとなりえます。プロパティへのアクセスはメソッドの呼び出しと完全に等価です。 よって、クラスの提供者がメソッドとして呼び出されることを意図して設計したとしても、クラスの利用者はその意図を無視してプロパティとしてアクセスできます。 逆に、クラスの提供者がプロパティとして呼び出されることを意図して定義したメソッドを、通常のメソッドとして呼び出すこともできます。 このように設計者の意図に反した形式でプロパティ/メソッドを使用してもプログラムの動作に支障はありませんが、コードの可読性はかえって低下するおそれがあります。 プロパティを使用するときは以上のことをよく心得ておいてください。