007-004-011

クラスの集約: EngineとCar

初級

問題説明

クラスの集約: EngineとCar

この問題では: Engineクラス(馬力フィールドとstart()メソッドを持つ)と、Engineフィールドを持つCarクラス(集約関係)を作成し、Cardrive()メソッドが内部でengine.start()を呼び出す構造を実装して、結果を標準出力に表示するプログラムを作成します。

学習目標: クラスの集約(あるクラスが別のクラスのインスタンスをフィールドとして保持する関係)を理解し、オブジェクト間の委譲パターンを習得する

概要

集約(Aggregation)とは、あるオブジェクトが別のオブジェクトを「持つ(has-a)」関係です。継承(is-a関係)とは異なり、独立したオブジェクト同士が協調して動作します。この問題では、CarEngineを保持し、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

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録