[ Java Project Exampleページへ戻る ]
時刻プログラムの設計を行う。
![]() |
まずは、Clockクラスを定義した。
Clock |
---|
-hour: int -minute: int -second: int |
+getHour(): int +setHour(hour:int):void +getMinute(): int +setMinute(minute:int):void +getSecond(): int +setSecond(second: int):void |
メソッドについては、「契約による設計」に基づき、事前条件、事後条件、例外を明確にした。
メソッド | 事前条件 | 事後条件 | 不変条件 | |
---|---|---|---|---|
setHour | 引数が0-23である | 引数の値でhourフィールドを更新 | - | |
setMinute | 引数が0-59である | 引数の値でminuteフィールドを更新 | - | |
setSecond | 引数が0-59である | 引数の値でsecondフィールドを更新 | - |
つぎに、Clockクラスを利用するクライアントクラスとの関連を設計した。
![]() |
![]() |
時刻更新機能を追加したクラス図を設計した。
![]() |
今回追加するメソッド(公開メソッド)を明確にした。
メソッド | 事前条件 [例外] |
事後条件 | 不変条件 | |
---|---|---|---|---|
setInterval |
引数が0より大きいこと [ IllegalArgumentException ] |
引数の値でintervalフィールドを更新 | 時分秒は維持 | |
start |
stop状態であること [ IllegalStateException ] |
start状態になる | 時分秒は維持 | |
intervalが0より大きいこと [ IllegalStateException ] |
||||
stop |
start状態であること [ IllegalStateException ] |
stop状態になる | 時分秒は維持 | |
最終的なClockクラスの詳細は以下のように定義された。
Clock |
---|
-hour: int -minute: int -second: int -interval: int -isStart: boolean -timer: Timer -task: TimerTask -MIN_HOUR: int -MAX_HOUR: int -MIN_MINUTE: int -MAX_MINUTE: int -MIN_SECOND: int -MAX_SECOND: int -MIN_INTERVAL: int -DEFAULT_HOUR: int -DEFAULT_MINUTE: int -DEFAULT_SECOND: int -DEFAULT_INTERVAL: int |
+getHour(): int +setHour(hour:int):void +getMinute(): int +setMinute(minute:int):void +getSecond(): int +setSecond(second: int):void] +getInterval(): int +setInterval(interval: int):void +start():void +stop():void +isStart(): boolean +toString(): String -setStart(start:boolean): void -setTime(hour:int,minute:int,second:int): void -initTimer(): void -startUpdate(): void -stopUpdate(): void -checkHourCondition(hour:int): boolean -checkMinuteCondition(minute:int): boolean -checkSecondCondition(second:int): boolean -checkIntervalCondition(interval:int): boolean |
![]() |
項目 | Thread.sleep | java.util.Timer | javax.swing.Timer | 備考 |
---|---|---|---|---|
周期実行 | - | ∨ | ∨ | |
処理遅延時の補正 | - | ∨ | - | |
開始・停止処理 | - | - | ∨ | |
ヘッドレス環境での動作 | ∨ | ∨ | - | |
総合評価 | 1 | 3 | 2 |
3案の比較検討の結果、java.util.Timerを採用とする。