007-004-011
クラスの集約: EngineとCar
初級
問題説明
クラスの集約: EngineとCar
この問題では: Engineクラス(馬力フィールドとstart()メソッドを持つ)と、Engineフィールドを持つCarクラス(集約関係)を作成し、Carのdrive()メソッドが内部でengine.start()を呼び出す構造を実装して、結果を標準出力に表示するプログラムを作成します。
学習目標: クラスの集約(あるクラスが別のクラスのインスタンスをフィールドとして保持する関係)を理解し、オブジェクト間の委譲パターンを習得する
概要
集約(Aggregation)とは、あるオブジェクトが別のオブジェクトを「持つ(has-a)」関係です。継承(is-a関係)とは異なり、独立したオブジェクト同士が協調して動作します。この問題では、CarがEngineを保持し、drive()の中でEngineの機能を利用します。
仕様
Engineクラス (Engine.java)
int horsePowerフィールド(コンストラクタで設定)start()メソッド:"Engine started: <horsePower> HP"を出力
Carクラス (Car.java)
Engine engineフィールド(コンストラクタで受け取る)String modelフィールド(コンストラクタで受け取る)drive()メソッド:engine.start()を呼び出した後、"<model> is driving"を出力
Mainクラス (Main.java)
- 200馬力の
Engineを作成 - モデル名
"Sedan"とEngineを渡してCarを作成 car.drive()を呼び出す
出力形式
Engine started: 200 HP
Sedan is driving
