オブジェクトとは

 設計図を基に実物を作ることにより、使用することができるようになります。オブジェクト指向プログラミングの世界でも同じように、クラスを基にオブジェクトを作ることにより、コンピュータ上で動かすことができるようになります。これから見るのは、あらかじめ定義されているクラスを基に、メモリ上にオブジェクトを配置して使用する方法です。この作業は次の図のように表すことができます。

インスタンス生成
インスタンス生成

 上図にあるように、クラスを基にオブジェクトを作成することを、「インスタンス生成」と呼びます。それによりできあがった“モノ”がオブジェクトまたは、インスタンスとも呼ばれます。この手順を踏むことにより利用することができるようになるわけです。

インスタンス生成の書式
Dim インスタンス変数名 As クラス名
インスタンス変数名 = New クラス名(引数リスト)

Dim インスタンス変数名 As クラス名 New クラス名(引数リスト)

○ プロジェクト

 プロジェクトを作成して確認してみましょう。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 InstanceTest

サンプルダウンロード

○ 作成の準備

 先ほどのサンプルで作成したCarクラスの記述を今回のプロジェクトで利用します。「ClassTest」プロジェクトのフォルダーから、「InstanceTest」プロジェクトのフォルダーへ「Car.cs」をコピーしてください。

クラスファイルのコピー
クラスファイルのコピー

 次に、コピーしたソースファイルをプロジェクトに登録します。ソリューションエクスプローラーより、プロジェクト名を右クリックし、[追加]―[既存項目の追加]をクリックします。

プロジェクトにコピーしたファイルを登録
プロジェクトにコピーしたファイルを登録

 次の図のダイアログで、ファイルの場所が「InstanceTest」であることを確認して、「Car.cs」を選択し、「追加(A)」ボタンをクリックします。

クラスファイル指定
クラスファイル指定

 すると、ソリューションエクスプローラーに追加されるので、確認してください。

ソリューションエクスプローラーに追加される
ソリューションエクスプローラーに追加される

○ プログラム

 次のようにプログラムを入力してください。

Module1.vb

  1. Module Module1
  2.  '車の状態を表示するメソッド
  3.  Sub ShowData(c As Car)
  4.   Console.WriteLine("スピード:{0}km", c._speed)
  5.   Console.WriteLine("ガソリン:{0}L", c._gas)
  6.  End Sub
  7.  Sub Main()
  8.   'インスタンスを生成する
  9.   Dim obj As New Car()
  10.   'フィールド変数を初期化する
  11.   obj._speed = 0
  12.   obj._gas = 20.0
  13.   '現在の状態を表示する
  14.   ShowData(obj)
  15.   While True
  16.    '操作を入力
  17.    Console.Write("1)加速 2)減速 9)終了:")
  18.    Dim inputdata As String = Console.ReadLine()
  19.    '操作によって分岐する
  20.    Select Case inputdata
  21.     Case "1"
  22.      '加速する
  23.      obj.SpeedUp(5)
  24.      ShowData(obj)
  25.     Case "2"
  26.      '減速する
  27.      obj.SpeedDown(5)
  28.      ShowData(obj)
  29.     Case "9"
  30.      'プログラムを終了する
  31.      Return
  32.    End Select
  33.   End While
  34.  End Sub
  35. End Module

○ 実行結果

スピード:0km
ガソリン:20L
1)加速 2)減速 9)終了:1
スピード:5km
ガソリン:19.5L
1)加速 2)減速 9)終了:1
スピード:10km
ガソリン:19L
1)加速 2)減速 9)終了:2
スピード:5km
ガソリン:19L
1)加速 2)減速 9)終了:9
(終了)

○解説

 4~7行目はShowDataメソッドを定義しています。このメソッドはCarオブジェクトを受け取り、そのオブジェクトのスピード情報とガソリン残量を表示します。

 11行目ではCarオブジェクトを生成しています。そして、14~15行目で生成したオブジェクトのフィールドを初期化しています。

 20~39行目は無限ループになっています。メニューが表示され、入力されたメニュー番号に応じて処理されます。加速を選択すると、29行目でCarオブジェクトのSpeedUpメソッドを呼び出し、加速します。減速を選択すると、33行目でCarオブジェクトのSpeedDownメソッドを呼び出し、減速します。それぞれの処理をした後にShowDataメソッドを呼び出して、現在のCarオブジェクトの状態を表示します。メニューで終了を選択するとプログラムが終了します。

インスタンス生成のイメージ
インスタンス生成のイメージ

前へ   次へ