プロパティ

 VB2010では、クラスの中にプロパティを定義することができます。このプロパティは、クラス作成者の側から見ると、メソッドのように記述をします。クラス利用者の側から見ると、フィールドのように利用できます。

プロパティのイメージ
プロパティのイメージ

プロパティ定義の書式
アクセス修飾子 Property プロパティ名 As データ型
 Get
  フィールド取得の記述
 End Get
 Set(value As データ型)
  フィールド設定の記述
 End Set
End Property

 修飾子ではアクセス権限を指定でき、「ReadOnly」「WriteOnly」を指定することにより、代入するか、参照するかの制限を指定することができます。

 次のプログラムが「ReadOnly」を指定した際のプログラムです。Getブロックのみ表示されます。

Public ReadOnly Property Speed As Integer
 Get

 End Get
End Property

 以下のプログラムは「WriteOnly」を指定した際のプログラムです。Setブロックのみ表示されます。

Public WriteOnly Property Speed As Integer
 Set(value As Integer)

 End Set
End Property

○ プロジェクト

 プロジェクトを作成して確認してみましょう。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 PropertyTest

サンプルダウンロード

○ 作成の準備

 サンプルにプロパティを追加しましょう。それに伴い、不要になるメソッドを削除しましょう。「ConstructorTest」をコピーしてプロジェクトを作成してください。

○ プログラム

 Carクラスに次のようにプロパティの追加記述をしてください。

Car.vb

  1. Public Class Car
  2.  'フィールド==========
  3.  'Public _speed As Integer 'スピード情報
  4.  Private _speed As Integer 'スピード情報(修正)
  5.  'Public _gas As Double 'ガソリン情報
  6.  Private _gas As Double 'ガソリン情報(修正)
  7.  'プロパティ==========
  8.  'スピード参照用
  9.  Public ReadOnly Property Speed As Integer
  10.   Get
  11.    Return Me.m_speed
  12.   End Get
  13.  End Property
  14.  'ガソリン参照・設定用
  15.  Public Property Gas As Double
  16.   Get
  17.    Return Me.m_gas
  18.   End Get
  19.   Set(value As Double)
  20.    If Value > 0 Then
  21.     Me.m_gas = Value
  22.    Else
  23.     Me.m_gas = 0
  24.    End If
  25.   End Set
  26.  End Property
  27.  'コンストラクタ===========
  28.  Public Sub New()
  29.   Me.New(20)
  30.  End Sub
(そのほかの記述…)
  1.  '初期化を行うメソッド
  2.  'Public Sub Init(gas As Double)
  3.  ' Me.m_speed = 0
  4.  ' Me.m_gas = gas
  5.  'End Sub
  6.  ''スピードを取得する
  7.  'Public Function GetSpeed() As Integer
  8.  ' Return Me.m_speed
  9.  'End Function
  10.  ''ガソリン量を取得する
  11.  'Public Function GetGas() As Double
  12.  ' Return Me.m_gas
  13.  'End Function
  14. End Class

○ プログラム

 オブジェクトを利用するプログラムも変更しましょう。

Form1.vb

  1. '表示用プロシージャ
  2. Private Sub showData()
  3.  'Me.TextBox1.Text = Me.obj.m_speed()
  4.  'Me.TextBox1.Text = Me.obj.GetSpeed
  5.  Me.TextBox1.Text = Me.obj.Speed
  6.  'Me.TextBox2.Text = Me.obj.m_gas()
  7.  'Me.TextBox2.Text = Me.obj.GetGas()
  8.  Me.TextBox2.Text = Me.obj.Gas
  9. End Sub

 プロパティを追加することにより、Carオブジェクトにとってはメソッドのように動作し、Carクラスを利用するオブジェクトからはフィールドを使うかのように利用することができるようになりました。

前へ   次へ