21.3 需求:P510
用例模型(use case model):用例圖(use case diagram)、用例(use case)、行為說明(behaviour specification)、活動者(actor)、角色(role)。
用例圖用于記錄系統中不同用戶的角色,以及他們需要系統提供的服務。
系統的用戶被稱為活動者,用戶需要的服務被稱為用例。
21.4 設計:P511
(-)private、 (+)public
組合(composition):實心菱形。
包含(containment):空心菱形。
例:機場由許多跑道組成,沒有跑道就不能稱為機場;機場也包含許多飛機,但是沒有飛機仍然可以稱為機場。
21.4.1 枚舉圖
一個類型包含許多可能的數值,每個數值都有一個有意義的名稱,該名稱稱為枚舉類型。
21.5 實現:
對應用程序的用戶隱藏實現級別的異常,拋出通用的應用程序的異常。
21.6 測試:場景測試
一個用例中的不同的路徑被稱為不同的場景(scenario)。在集成過程中,需要確保測試每個用例中的每個場景,這個過程稱為場景測試(scenario testing)。
21.7 GUI+JTabbedPane
JTabbedPane類提供了一個用于組織用戶界面的Swing組件,可以包含多個帶有標簽的卡片,每張卡片可以是任意一個組件,也可以把許多組件關聯到一個標簽。
setToolTipText()方法:可以為Swing組件添加工具提示。
setMnemonic()方法:可以為Swing組件創建鍵盤快捷鍵。
21.10 定制對話框窗口
通過對JDialog類繼承可以定制對話框窗口。
自測題:
1. 為用例開發場景。
用例“注冊機場飛機”:
* 注冊成功。航空交通控制員提交飛機唯一的航班編號和它的起飛城市記錄進入機場的飛機。如果該航班編碼沒有被機場注冊,則注冊成功。
* 注冊失敗。航空交通控制員提交飛機唯一的航班編號和它的起飛城市記錄進入機場的飛機。如果該航班編碼已經被機場注冊,則軟件將報出錯誤信號。
2. (-)private, (+)public
3. 包含與組合的區別:
組合(composition):實心菱形。被組合的類必須在組合類中存在。
包含(containment):空心菱形。被組合的類不是必須在組合類中存在。
例:機場由許多跑道組成,沒有跑道就不能稱為機場;機場也包含許多飛機,但是沒有飛機仍然可以稱為機場。
4. a)P513 圖21-3
b) public enum Light{ RED, AMBER, GREEN};
c) Light doorLight;
d) switch(doorLight){
case RED: System.out.println("I am away");break;
case AMBER: System.out.println("I am busy");break;
case GREEN: System.out.println("I am free");break;
}
5. JTabbedPane組件的優點:通過不同的卡片組合和顯示組件,可以將界面上的部分組件隱藏,直到需要的時候打開,減少屏幕的混亂。
注:與CardLayout管理器相似,但是編碼更加簡單。
6. 添加工具提示:P542
jbStop.setToolTipText("This button stops the game);
7. 創建快捷鍵:P543
viewMenu.setMnemonic('V');
編程練習:代碼附件
只提供了些基礎類,其他先挖坑在那里。