クラスへのメソッドの追加
更新 : 2007 年 11 月
このレッスンでは、クラスにメソッドを追加して、処理を実行できるようにする方法を説明します。
前のレッスン (「詳細情報 : プロパティ、メソッド、イベントについて」) では、ほとんどのオブジェクトには実行できる処理があり、これらの処理はメソッドと呼ばれることを説明しました。「現実世界のオブジェクトのモデリング : 初めてのクラスの作成」のレッスンで作成した Persons クラスは人を表します。人間は、さまざまな処理を実行できます。Persons クラスでは、それらの処理がクラス メソッドとして表現されます。
クラス メソッド
クラスのメソッドとは、クラスで宣言されている Sub プロシージャまたは Function プロシージャです。たとえば、Account クラスには、残高を更新する Recalculate という名前の Sub プロシージャや、最新の残高を返す CurrentBalance という Function プロシージャがあることが考えられます。これらのメソッドを宣言するコードは、次のようになります。
Public Sub Recalculate()
' add code to recalculate the account.
End Sub
Public Function CurrentBalance(ByVal AccountNumber As Integer) As Double
' add code to return a balance.
End Function
ほとんどのクラス メソッドはパブリックですが、そのクラス自身のみが使用できるメソッドが必要な場合もあります。たとえば、Persons クラスには、その人の年齢を計算する固有の関数がある場合があります。関数を Private として宣言すると、その関数は、クラスの外部からは参照できなくなります。つまり、クラスの外部から呼び出すことはできません。
プライベート関数のコードは次のようになります。
Private Function CalcAge(ByVal year As Integer) As Integer
CalcAge = My.Computer.Clock.LocalTime.Year - year
End Function
CalcAge の値を計算するコードは後から変更できます。その場合、メソッドを使用する側のコードに変更を加えなくても、メソッドの動作に影響はありません。メソッドを実行するコードを隠蔽することを、カプセル化と呼びます。
Persons クラスで、フル ネームを返すパブリック メソッドと、年齢を計算するプライベート関数を作成してみましょう。
やってみよう
クラスにメソッドを追加するには
前のレッスンで作成した Persons プロジェクトを開きます。このプロジェクトを保存していない場合は、まず前のレッスンの「クラスへのプロパティの追加」に戻り、手順を完了する必要があります。
ソリューション エクスプローラで Persons.vb をクリックし、[表示] メニューの [コード] をクリックします。
プロパティ プロシージャの下に次のコードを追加します。
Public Function FullName() As String If middleNameValue <> "" Then FullName = firstNameValue & " " & middleNameValue & " " _ & lastNameValue Else FullName = firstNameValue & " " & lastNameValue End If End Function
Private Function CalcAge(ByVal year As Integer) As Integer CalcAge = My.Computer.Clock.LocalTime.Year - year End Function
Age プロパティ プロシージャ内のコードを次のように変更して、このプライベート関数を使用するようにします。
ReadOnly Property Age() As String Get ' Age = My.Computer.Clock.LocalTime.Year - birthDateValue Age = CalcAge(birthYearValue) End Get End Property
[ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。
次の手順
このレッスンでは、クラスにパブリック メソッドとプライベート メソッドを追加する方法を説明しました。メソッドの詳細について学習するには、「詳細情報 : オーバーロードを使用して同じメソッドの複数バージョンを作成する」を参照してください。次のレッスンでは、クラスにイベントを追加する方法について説明します。
次のレッスン : 「クラスへのイベントの追加」