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