この特集のトップページへ
Chapter 6:ビジネスロジックの設計



  COLUMN    コレクションビルダによるコレクションの実装

 独自のコレクションを作るときには,クラスビルダの「コレクションビルダ」を使うと,比較的容易に実装できる。ここで簡単にコレクションビルダの使い方を説明しておこう。

 クラスビルダは,Visual Basic 6.0のメニューから[アドイン]−[クラスビルダユーティリティ]を選択することで起動できる。クラスビルダを起動すると,Fig.6-49に示すウィンドウが表示される。

Fig.6-49 クラスビルダユーティリティ
fig6_49

 ここで,新規のクラスを作成するために,[ファイル]メニューから[新規作成]−[クラス]を選択する(Fig.6-50)。

Fig.6-50 新規クラスの作成
fig6_50

 すると,Fig.6-51のようにクラス名を尋ねられるので,[名前]の部分にクラス名を入力する。ここでは,Customerというクラス名にした。

Fig.6-51 クラス名の設定
fig6_51

 次に,作成したCustomerクラスに対して,プロパティを付け加える。プロパティを追加するには,プロパティを追加する対象となるクラス名を右クリックし,表示されたメニューから[新規作成]−[プロパティ]を選択する(Fig.6-52)。

Fig.6-52 プロパティの追加
fig6_52

 すると,プロパティの名前と型が尋ねられるので,それぞれ入力する。ここでは,顧客名を示すCUSTOMERNAME,電話番号を示すTELEPHONE,FAX番号を示すFAXの3つのプロパティをString型として付け加えることにする(Fig.6-53)。

Fig.6-53 プロパティの名前と型の設定(ここではCUSTOMERNAMEプロパティを追加しようとしている)
fig6_53

 CUSTOMERNAMETELEPHONEFAXの3つのプロパティを追加したのちの画面はFig.6-54のようになる。

Fig.6-54 3つのプロパティを追加したところ
fig6_54

 以上の設定によって,CustomerクラスをNewキーワードで実体化してオブジェクトとして扱い,CUSTOMERNAMETELEPHONEFAXという3つのプロパティを取り扱うことができるようになる。たとえば,List 6-46のようにして,1人分の顧客の名前,電話番号,FAX番号を格納できる。

 次に,このCustomerクラスを保持するコレクションを作る。そうすることによって,Customerオブジェクトを複数保持することができるコレクションのクラスができる。コレクションを作るには,クラスビルダウィンドウの[ファイル]メニューから[新規作成]−[コレクション]を選択する(Fig.6-55)。

Fig.6-55 コレクションの新規作成
fig6_55

 すると,Fig.6-56に示すように作成するコレクション名とメンバクラスを設定するウィンドウが表示される。メンバクラスとは,そのコレクションが保持するクラス(オブジェクト)の名前である。先に作成しておいたCustomerクラスをここに指定すると,作成したコレクションがそのメンバとしてCustomerオブジェクトを含むようになる。ここでは,コレクション名にCustomersと設定した。また,[このクラスを最上位オブジェクトにする]にもチェックを付けておく。チェックを付けておかないと,作成するCustomersコレクションがCustomerクラスの配下に含まれてしまう。

Fig.6-56 コレクションの名前とメンバクラスの設定
fig6_56

 Customersコレクションを作成した直後の画面は,Fig.6-57のようになる。

Fig.6-57 Customersコレクションを作成したところ
fig6_57

 以上で,Customersコレクションを使って複数のCustomerオブジェクトを保持することができるようになった。コレクションビルダを使うと,Fig.6-56で[メンバクラス]として指定したクラスを含む形態で,Addメソッド,Countメソッド,Itemメソッドなどが自動的に実装される。たとえば,List 6-47のようにすることで,2人分の顧客名,電話番号,FAX番号を保持することができる。

 作成したCustomersコレクションとCustomerクラスを使って,List 6-38に示したGetCustomer2メソッドと同等の機能を実装する場合は,List 6-48のようになる。

 List 6-48に示したGetCustomers5メソッドを呼び出してデータを取得する場合,そのプログラムはList 6-49のようになる。

prevpg.gif Chapter 6 32/92 nextpg.gif