次の方法で共有


クラスとは

更新 : 2007 年 11 月

このレッスンでは、クラスを使用してプログラム内でオブジェクトを表現する方法を説明します。

以前のレッスンで説明したように、Visual Basic プログラムは、フォームやコントロールなどのオブジェクトを使用して作成されます。またオブジェクトを使用すると、現実世界のもの (人やコンピュータなど) や、もっと抽象的なもの (銀行口座など) を表現することもできます。

クラスとは、オブジェクトの種類を表すものに過ぎません。オブジェクトを表現する設計図であるとも言えます。1 枚の設計図から複数の建築物を建造できるように、1 つのクラスからオブジェクトの複数のコピーを作成できます。

実は、これまでのレッスンで既にクラスを使用しています。たとえば、TextBox コントロールは、その外観と機能を定義する TextBox クラスによって定義されます。TextBox コントロールをフォームにドラッグするたびに、TextBox クラスの新しいインスタンスが実際に作成されます。

各 TextBox コントロールは、それを定義するクラスである TextBox クラスの完全なコピーですが、それぞれ独立しています。各オブジェクトはクラスの個別の "インスタンス" であるため、クラスを作成する操作はインスタンス化と呼ばれます。

これまでのレッスンでは、ツールボックスから TextBox コントロールをドラッグすることによってフォームに追加しましたが、次に示すように、コードで New キーワードと共に TextBox オブジェクトを宣言することでも、これをインスタンス化できます。

Dim Textbox1 As New TextBox

クラスの作成および使用については、次からの一連のレッスンで詳しく説明します。

クラスに含まれるもの

前のレッスン (「詳細情報 : プロパティ、メソッド、イベントについて」) で、すべてのオブジェクトには、属性を示すプロパティ、操作を示すメソッド、応答を示すイベントがあることを説明しました。同様に、オブジェクトを定義するクラスにも、そのクラスのすべてのインスタンスに受け継がれる独自のプロパティ、メソッド、およびイベント (メンバとも呼ばれる) があります。

たとえば、銀行口座を表すクラスには、AccountNumber や AccountBalance などのプロパティ、CalculateInterest などのメソッド、BalanceChanged などのイベントがあることが考えられます。銀行口座オブジェクトをインスタンス化すると、TextBox などのオブジェクトと同様に、そのプロパティ、メソッド、およびイベントにアクセスできます。

クラスの一部のメンバはプライベートです。つまり、クラス内のコードからのみアクセスできます。たとえば、銀行口座クラスには、残高を計算するメソッドがあることが考えられます。この場合、プログラムからその残高を読み込むことができるようにはしても、残高を直接変更できるようにはしない方がよいと考えられます。

クラスのメンバを隠ぺいするには、そのメンバを Private として宣言し、公開するには、Public として宣言します。プロパティへのアクセスは許可するが、値の変更を許可しない場合は、そのプロパティを ReadOnly として宣言します。次のコードは、BankAccount クラスの例を示しています。

Class BankAccount
    Private AccountNumber As String
    Private AccountBalance As Decimal
    Public Sub UpdateBalance()
        ' add code to recalculate balance.
    End Sub
    ReadOnly Property Balance() As Decimal
        Get
            Return AccountBalance
        End Get
    End Property
End Class

次の手順

このトピックでは、クラスの基本と共に、いくつかの新しい技術について説明しました。次のレッスンでは、クラスを作成する方法を説明します。

次のレッスン : 「現実世界のオブジェクトのモデリング : 初めてのクラスの作成

参照

概念

詳細情報 : プロパティ、メソッド、イベントについて

クラス : オブジェクトの設計図

その他の技術情報

オブジェクトによるプログラミング : クラスを使用する