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');
编程练习:代码附件
只提供了些基础类,其他先挖坑在那里。