演習
以下のクラス図で表されるクラスをコーディングする. 適宜,必要なフィールドを追加してもよい.なお,フィールドの先頭にある記号について「#」は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月27日(日)17:00
提出先:Blackboard
提出物:作成したクラスのソースコードとその実行結果を示したPDFファイル
(例:875_藤田悠.pdf)