オブジェクト指向のツボ 〜Vol2. クラスを知る〜

オブジェクト指向で、欠かせない存在なのが「クラス」です。よくクラスとオブジェクトが頭の中でごっちゃになってしまって、結局理解できずにいる人を見かけるので、このページではっきりさせておきましょう。

クラスは定義するもの、オブジェクトは生成するもの

「クラスとはオブジェクトの雛型のことを言います。」よく目にするこの文章、この一言につきます。

クラスは、そのオブジェクトがどのような構造になっているのかを記述するための機能を持ちます。クラスを元にした生成物がオブジェクトということになります。生成といっても、その現象は、実際はPCのメモリの中で行われているので、そのオブジェクトのための「メモリ確保」「初期化」がそれに当てはまります。

クラスを定義し、そのクラスが持つメンバ変数に必要な分だけメモリ領域を確保する。そのメモリ領域を1つのオブジェクトと見なし、初期化を行う。これがクラス定義からオブジェクト生成の流れになるのです。

クラスを定義するには

ActiveBasicではClass 〜 End Classステートメントを用いてクラスを定義できます。例えば、CMoterCycleというオートバイを題材としたクラスを定義し、そのクラスを元にオブジェクトを生成しようとすると、下のようなコードになります。

'クラスの定義し、オブジェクトを生成するには
Class CMotorCycle
    メンバ情報...
End Class

'オブジェクトの生成
Dim obj_zrx As CMotorCycle
Dim obj_xjr As CMotorCycle
Dim obj_zzr As CMotorCycle

クラス定義に必要な要素

クラスは、メンバ変数、メンバ関数という要素から構成されます。更に、アクセシビリティというややこしいものが関わってくるのですが、この段階では、Publicを指定しておきましょう。アクセシビリティについては、「継承とアクセシビリティ」で説明します。

Class CTest

Public

    'メンバ変数の定義
    x As Long
    y As Long

    'メンバ関数の定義
    Sub show()
        ...
    End Sub
End Class

オブジェクトメンバの参照方法

クラス定義ができるようになったら、そのクラスを元に生成されたオブジェクトのメンバへのアクセスはどのように行うのか、気になるところです。メンバ変数へのアクセスは、構造体のときと同様です。メンバ関数は、メンバ変数を参照する要領で、パラメータを指定して関数呼び出しを行う形にします。

'オブジェクトobjを生成
Dim obj As CTest

'objのメンバ変数xに10を代入
obj.x = 10

'objのメンバ変数yに、objのメンバ変数xの内容をコピー
obj.y = obj.x

'objのメンバ関数showを呼び出す
obj.show()


講座インデックスへ戻る ©2005 Discoversoft