更新 : 2007 年 11 月
このレッスンでは、クラスをテストするために、クラスのインスタンスを作成する方法について説明します。
これまでのレッスンでは、Persons クラスを作成し、そのプロパティ、メソッド、およびイベントを定義しました。これで、コードの追加は完了したため、Persons クラスを使用して、期待どおりに動作することを確認します。
クラスのインスタンスの作成
気付いていないかもしれませんが、以前の多くのレッスンで既にクラスを使用しています。フォームとコントロールは、実際にはクラスです。Button コントロールをフォームにドラッグすると、実際には Button クラスのインスタンスを作成していることになります。
New キーワードによる宣言を使用して、コードでクラスのインスタンスを生成することもできます。たとえば、Button クラスの新しいインスタンスを作成するには、次のコードを追加します。
Dim aButton As New Button
Persons クラスを使用してテストするには、テスト プロジェクトを作成してから、クラス モジュールに参照を追加する必要があります。
やってみよう
クラスのテスト プロジェクトを作成するには
前のレッスンで作成した Persons プロジェクトを開きます。このプロジェクトを保存していない場合は、まず前のレッスンの「クラスへのメソッドの追加」に戻り、手順を完了する必要があります。
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [テンプレート] ペインで、[Windows フォーム アプリケーション] をクリックします。
[プロジェクト名] ボックスに「PersonsTest」と入力し、[OK] をクリックします。
新しい Windows フォーム プロジェクトがソリューション エクスプローラに追加され、新しいフォームが表示されます。
ソリューション エクスプローラで PersonsTest プロジェクトをクリックし、[プロジェクト] メニューの [スタートアップ プロジェクトに設定] をクリックします。
ソリューション エクスプローラで PersonsTest プロジェクトをクリックし、[プロジェクト] メニューの [参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスが表示されます。
[プロジェクト] タブをクリックして [Persons] をクリックし、[OK] をクリックします。
フォームをダブルクリックしてコード エディタを開き、Public Class Form1 行のすぐ後に次の宣言を入力します。
Dim person1 As New Persons.Persons
これにより、Persons クラスの新しいインスタンスが宣言されます。Persons を 2 回入力する必要があるのは、1 つ目のインスタンスは Persons.vb クラス モジュールを示し、2 つ目のインスタンスがそのモジュール内の Persons クラスを示すためです。
[ファイル] メニューの [すべてを保存] をクリックします。
クラスのテスト
次の手順では、Persons クラスを使用するユーザー インターフェイスとコードを追加します。各プロパティ (読み取り専用の Age プロパティを除く) の値をユーザーが入力するためのテキスト ボックス、Married フィールドのチェック ボックス、および各パブリック メソッドをテストするためのボタンを追加します。
やってみよう
クラスをテストするには
ソリューション エクスプローラで Form1 を選択し、[表示] メニューの [デザイナ] をクリックします。
ツールボックス から、4 つの TextBox コントロール、1 つの CheckBox、および 2 つの Button コントロールをフォームにドラッグします。
1 つ目の Button コントロールを選択し、[プロパティ] ウィンドウで Text プロパティを Update に設定します。
2 つ目の Button コントロールを選択し、[プロパティ] ウィンドウで Text プロパティを Full Name に設定します。
1 つ目のボタン (Update) をダブルクリックしてコード エディタを開き、Button1_Click イベント ハンドラに次のコードを追加します。
With person1 .FirstName = Textbox1.Text .MiddleName = Textbox2.Text .LastName = Textbox3.Text .BirthYear = Textbox4.Text .Married = CheckBox1.Checked End With
入力すると、Persons クラスのメンバを含む一覧が表示されます。クラスは参照として追加されたため、IntelliSense は、その他のクラスの場合と同じように、クラスに関する情報を表示します。
Button2_Click イベント ハンドラに次のコードを追加します。
' Test the FullName method. MsgBox(person1.FullName) ' test the Age property and CalcAge method. MsgBox(CStr(person1.Age) & " years old") ' Test the Married property. If person1.Married = True Then MsgBox(person1.FirstName & " is married") Else MsgBox(person1.FirstName & " is single") End If
F5 キーを押してプロジェクトを実行し、フォームを表示します。
1 つ目のテキスト ボックスに名を入力します。
2 つ目のテキスト ボックスにミドル ネームを入力します。
3 つ目のテキスト ボックスに姓を入力します。
4 つ目のテキスト ボックスに、4 桁の誕生年 (たとえば 1983) を入力します。
既婚者の場合はチェック ボックスをオンにします。
[Update] ボタンをクリックしてクラスのプロパティを設定し、[Full Name] ボタンをクリックします。
3 つのメッセージ ボックスが表示されます。これらのメッセージ ボックスには、フル ネーム、年齢、既婚か独身かが表示されます。
[ファイル] メニューの [すべてを保存] をクリックします。
オーバーロードされたメソッドのテスト
オプションのレッスン「詳細情報 : オーバーロードを使用して同じメソッドの複数バージョンを作成する」を完了した場合、Persons クラスに追加した、オーバーロードされたメソッドをテストすることもできます。レッスンを完了していない場合は、戻って完了することも、次の手順に進むこともできます。
やってみよう
オーバーロードされたメソッドをテストするには
ソリューション エクスプローラで Form1 を選択し、[表示] メニューの [デザイナ] をクリックします。
ツールボックスから、フォームにさらに 2 つの Button コントロールをドラッグします。
3 つ目の Button コントロールを選択し、[プロパティ] ウィンドウで Text プロパティを With に設定します。
4 つ目の Button コントロールを選択し、[プロパティ] ウィンドウで Text プロパティを Without に設定します。
1 つ目のボタン (With) をダブルクリックしてコード エディタを開き、Button3_Click イベント ハンドラに次のコードを入力します。
MsgBox(person1.FirstName & " " & person1.MiddleInitial(True) & _ " " & person1.LastName)
入力すると、Persons クラスのすべてのメンバを含む一覧が表示されます。クラスは参照として追加されたため、IntelliSense は、その他のクラスの場合と同じように、クラスに関する情報を表示します。
Button4_Click イベント ハンドラに次のコードを追加します。
MsgBox(person1.FirstName & " " & person1.MiddleInitial & _ " " & person1.LastName)
F5 キーを押してプロジェクトを実行し、フォームを表示します。
1 つ目のテキスト ボックスに名を入力します。
2 つ目のテキスト ボックスにミドル ネームを入力します。
3 つ目のテキスト ボックスに姓を入力します。
4 つ目のテキスト ボックスに、4 桁の誕生年 (たとえば 1983) を入力します。
既婚者の場合はチェック ボックスをオンにします。
[Update] ボタンをクリックしてクラスのプロパティを設定し、[With] ボタンをクリックします。
メッセージ ボックスが表示されます。ここには、ミドル ネームのイニシャルの後にピリオドの付いた名前が表示されます。
[Without] ボタンをクリックします。
メッセージ ボックスが表示されます。ここには、ミドル ネームのイニシャルの後にピリオドのない名前が表示されます。
[ファイル] メニューの [すべてを保存] をクリックします。
イベント ハンドラのテスト
オプションのレッスンの「詳細情報 : イベントの処理」を完了している場合は、Persons クラスに追加したイベント ハンドラをテストすることもできます。そのレッスンを完了していない場合は、戻って完了するか、次の手順をスキップしてください。
やってみよう
イベント ハンドラをテストするには
ソリューション エクスプローラで Form1 を選択し、[表示] メニューの [コード] をクリックします。
次のコードに示すように、person1 宣言の前に WithEvents ステートメントを追加します。
WithEvents person1 As New Persons.Persons
Form1 に次のプロシージャを追加します。このコードは、算出された年齢をチェックし、その結果に基づいてメッセージを表示します。
Private Sub person1_AgeCalculated(ByVal Age As Integer) _ Handles person1.AgeCalculated If Age > 18 Then MsgBox("You have been over 18 for " & Age - 18 _ & " years.") Else MsgBox("You will be 18 in " & 18 - Age & " years") End If End Sub
F5 キーを押してプロジェクトを実行し、フォームを表示します。
1 つ目のテキスト ボックスに名を入力します。
2 つ目のテキスト ボックスにミドル ネームを入力します。
3 つ目のテキスト ボックスに姓を入力します。
4 つ目のテキスト ボックスに、4 桁の誕生年 (たとえば 1983) を入力します。
既婚者の場合はチェック ボックスをオンにします。
[Update] ボタンをクリックしてクラスのプロパティを設定し、[Full Name] ボタンをクリックします。
メッセージ ボックスにフル ネームが表示されます。18 歳を超えている場合は、もう 1 つのメッセージ ボックスに 18 歳をどれだけ超えているかという情報が表示されます。18 歳未満の場合は、メッセージ ボックスに 18 歳になるまでどれだけかかるかという情報が表示されます。その後、もう 1 つのメッセージ ボックスに年齢が表示されます。
[ファイル] メニューの [すべてを保存] をクリックします。
次の手順
このレッスンでは、テスト プロジェクトを作成し、そのテスト プロジェクトを使用してクラスのプロパティ、メソッド、およびイベントをテストする方法について説明しました。次のレッスンでは、継承を使用して、既存のクラスを基にクラスを作成する方法を説明します。
次のレッスン : 「既存クラスからのクラスの構築 : 継承を使用する」