オブジェクトとは

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

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

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

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

クラス名 インスタンス変数名 = new クラス名(引数リスト);

○ プロジェクト

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

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

サンプルダウンロード

○ 作成の準備

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

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

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

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

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

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

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

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

 追加した「Car.cs」を開き、次のように「namespace」を「InstanceTest」に変更してください。

namespaceを変更する
namespaceを変更する

○ プログラム

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

  1. class Program
  2. {
  3.  //車の状態を表示するメソッド
  4.  static void ShowData(Car car)
  5.  {
  6.   Console.WriteLine("スピード:{0}km", car.speed);
  7.   Console.WriteLine("ガソリン:{0}L", car.gas);
  8.  }
  9.  static void Main(string[] args)
  10.  {
  11.   //インスタンスを生成する
  12.   Car car = new Car();
  13.   //フィールド変数を初期化する
  14.   car.speed = 0;
  15.   car.gas = 20.0;
  16.   //現在の状態を表示する
  17.   ShowData(car);
  18.   while (true)
  19.   {
  20.    //操作を入力
  21.    Console.Write("1)加速 2)減速 9)終了:");
  22.    string inputdata = Console.ReadLine();
  23.    //操作によって分岐する
  24.    switch (inputdata)
  25.    {
  26.     case "1":
  27.      //加速する
  28.      car.SpeedUp(5);
  29.      ShowData(car);
  30.      break;
  31.     case "2":
  32.      //減速する
  33.      car.SpeedDown(5);
  34.      ShowData(car);
  35.      break;
  36.     case "9":
  37.      //プログラムを終了する
  38.      return;
  39.    }
  40.   }
  41.  }
  42. }

○ 実行結果

スピード: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
(終了)

○ 解説

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

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

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

namespaceを変更する
namespaceを変更する

前へ   次へ