オブジェクト指向で、欠かせない存在なのが「クラス」です。よくクラスとオブジェクトが頭の中でごっちゃになってしまって、結局理解できずにいる人を見かけるので、このページではっきりさせておきましょう。
「クラスとはオブジェクトの雛型のことを言います。」よく目にするこの文章、この一言につきます。
クラスは、そのオブジェクトがどのような構造になっているのかを記述するための機能を持ちます。クラスを元にした生成物がオブジェクトということになります。生成といっても、その現象は、実際は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 |