《Java大学教程》—第21章 高级案例研究
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');
编程练习:代码附件
只提供了些基础类,其他先挖坑在那里。
《Java大学教程》—第21章 高级案例研究的更多相关文章
- 正在学习的Java大学教程
推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...
- Java编程思想 第21章 并发
这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...
- Java编程思想——第17章 容器深入研究 读书笔记(三)
七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...
- Java编程思想——第17章 容器深入研究(two)
六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...
- 《Java大学教程》—第11章 案例研究--第1部分
自测题:1. 图11-1的UML设计中各个类之间的关系.Hostel与TenantList是关联关系:TenantList和PaymentList与ObjectList是泛化关系.TenantL ...
- 《Java大学教程》—第12章 案例研究--第2部分
本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1. 正确运行2. Runhostel.java3. searchButton
- 《Java大学教程》—第18章 高级图形编程
自测题:1. 在图形应用程序中为用户提供选择的多种方式:P433下拉菜单(pull-down menu).弹出式菜单(pop-up menu).对话框窗口(dialogue window).单选 ...
- 《Java大学教程》—第23章 Java网络编程
本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
随机推荐
- lua语言初探
写在最前面 <cocos2d-x lua核心编程>是我首次购买电子书,坑的就不谈了,书里的代码部分基本上不是少空格就是多换行,让阅读变得十分困难. 所以又购买了实体书,加上看一些大佬视频和 ...
- 从零开始学安全(十三)●SQL server 2008 R2 安装
安装过程1.下载并解压 sql_server_2008_r2_enterprise 点击 setup . 2.打开后如图,点击左侧的 安装 ,再点击右边的 全新安装或向现有安装添加功能. 3.安装支持 ...
- sqlserver 2008R2新建数据库时报错,提示无法获得数据库"model"上的排它锁
刚新装了个sqlserver2008 R2,在建立数据库时候报错,提示无法获得数据库"model"上的排它锁.解决办法如下: 打开查询页面,执行下面的语句即可. use maste ...
- SSM 设置静态资源处理
使用weblogic的虚拟路径virtual-directory-mapping 在页面上展示文件服务器上的图片 <weblogic-web-app> ......省略其他部分 <c ...
- 前端入门3-CSS基础
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...
- angluarjs中页面初始化的时候会出现语法{{}}在页面中问题
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题.出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这 ...
- 洛谷P1333 瑞瑞的木棍(欧拉回路)
题目描述 瑞瑞有一堆的玩具木棍,每根木棍的两端分别被染上了某种颜色,现在他突然有了一个想法,想要把这些木棍连在一起拼成一条线,并且使得木棍与木棍相接触的两端颜色都是相同的,给出每根木棍两端的颜色,请问 ...
- CentOS 7上VNCServer的安装使用
1.安装 yum install tigervnc tigervnc-server 2.配置 vncserver的配置,创建一个新的配置文件 cp /lib/systemd/system/vncser ...
- 如何用ABP框架快速完成项目(11) - ABP只要加人即可马上加快项目进展- 全栈篇(2) - 不推荐模块组件化, 推荐微服务
一个人写代码不需要担心会和别人的代码冲突, 不需要做代码合并, 不需要担心自己的代码被覆盖. 但是多个人一起写代码就需要担心这些问题. 解决这些问题的方法很多, 比如用AzureDevOps(TF ...
- 让bind函数支持IE8浏览器的方法
bind函数在IE8下是不支持的,只需要在你的js文件中加入如下代码就可以支持IE8 //让bind函数支持IE8 if (!Function.prototype.bind) { Function.p ...