演習

以下のクラス図で表されるクラスをコーディングする. 適宜,必要なフィールドを追加してもよい.なお,フィールドの先頭にある記号について「#」はprotectedであることを意味している.

(a)Carクラス

メソッド
Car車を作ることを宣言する.
Car車を作ることを宣言する.スピード,タイヤの数,ドアの数を始めに指定する.
setSpeedスピードを適切な範囲で設定する.異常な数値が渡されたときは,標準的な 値に設定する.
setTireタイヤの数を適切な範囲で設定する.異常な数値が渡されたときは,標準的な 値に設定する.
setDoorドアの数を適切な範囲で設定する.異常な数値が渡されたときは,標準的な 値に設定する.
setGas搭載燃料を設定する抽象メソッド.
setNenpi燃費を設定する抽象メソッド.
getSpeed設定速度を返すメソッド.
getTireタイヤの数を返すメソッド.
getDoorドアの数を返すメソッド.
getGas残燃料の数を返すメソッド.
getNenpi燃費の数を返すメソッド.
drive運転音を発し,燃費分の燃料を消費する.残燃料を表示する.
フィールド
speed最高速度を格納する変数
tireタイヤの数を格納する変数
doorドアの数を格納する変数
gas搭載燃料を格納する変数
nenpi燃費を格納する変数.

(b)Truckクラス

フィールド
nimotsu積載可能量を格納する変数.
メソッド
Trackトラックを作ることを宣言する.
setNimotsu積載可能量を設定する.異常な数値が渡されたときは,標準的な 値に設定する.
setGas搭載燃料を設定する.
setNenpi燃費を設定する.
setSpeed車種に合わせた最高速度範囲になるように変更する.
getNimotsu積載可能数を返すメソッド.

(c)Ambulanceクラス

メソッド
Ambulance救急車を作ることを宣言する.
setGas搭載燃料を設定する.
setNenpi燃費を設定する.
callSiren救急車らしいサイレン音を表示する.

(d)PatrolCarクラス

メソッド
PatrolCarパトカーを作ることを宣言する.
setGas搭載燃料を設定する.
setNenpi燃費を設定する.
callSirenパトカーらしいサイレン音を表示する.
setSpeed車種に合わせた最高速度範囲になるように変更する.

(e)Sirenインターフェース

メソッド
callSiren車種にあわせたサイレン音を表示する抽象メソッド.

(f)メインクラス

作成したメソッドを全て実行するような処理を含むメインクラスを作る.実行例は以下である.必ずしもこの内容である必要はない.

public class Main
{
    public static void main(String args[])
    {
        System.out.println("===トラック===");
        Truck hino2ton = new Truck();
        hino2ton.setGas();
        hino2ton.setDoor(2);
        hino2ton.setTire(6);
        hino2ton.setNenpi();
        hino2ton.setSpeed(100);
        hino2ton.setNimotsu(1000);
        hino2ton.drive();
        hino2ton.drive();
        hino2ton.drive();
        hino2ton.drive();
        System.out.println("===救急車===");
        Ambulance kyukyu = new Ambulance();
        kyukyu.setDoor(3);
        kyukyu.setSpeed(500);
        kyukyu.setTire(4);
        kyukyu.setGas();
        kyukyu.setNenpi();
        kyukyu.callSiren();
        System.out.println("===パトカー===");
        PatrolCar patrol = new PatrolCar();
        patrol.setDoor(4);
        patrol.setTire(4);
        patrol.setSpeed(200);
        patrol.setGas();
        patrol.setNenpi();
        patrol.callSiren();
        patrol.drive();
        patrol.callSiren();
        patrol.drive();
        patrol.callSiren();
        patrol.drive();
        patrol.callSiren();
        patrol.drive();
    }
}
実行結果例は以下である.
===トラック===
車製造
トラック製造
搭載燃料:20
最高速度:100
ドア:2
タイヤ:6
燃費:10
荷物:1000
ブオン♪残燃料:10
ブオン♪残燃料:0
ガス欠です
ガス欠です
===救急車===
車製造
救急車製造
ドア:3
最高速度:500
タイヤ:4
搭載燃料:120
燃費:5
ピーポー
===パトカー===
車製造
パトカー製造
ドア:4
タイヤ:4
搭載燃料:12
燃費:5
ウーウー
ブオン♪残燃料:7
ブオン♪残燃料:2
ウーウー
ブオン♪残燃料:0
ウーウー
ガス欠です

なお,ここで設定したメソッドを全て実行するようなメインクラスを定義し, インスタンス化して,適切にコーディングされているか,テストする.プロジェクトには,クラス図に含まれるクラス,インターフェースのほか,メインクラスも含めること. それぞれのメソッドの冒頭には,どのようなメソッドであるか,コメントをつけること.


提出

締切日時:11月29日17:00
提出先:Blackboard
提出物:作成したクラスのソースコードとその実行結果を示したPDFファイル
     (例:875_藤田悠.pdf)