《Java大学教程》—第9章 软件质量
软件质量:可维护性、可靠性、健壮性、可用性。
9.3 可维护性
系统维护(maintaining)是指根据需求的变化更新现有系统的过程
9.3.1 封装的重要性
连锁反应:对系统某一部分的改变可能会对系统的其余部分产生影响,导致系统错误。
面向对象的封装原则保证了面向蝗程序易于维护,因为封装原则减弱了连锁反应的影响:
每个对象都应该在对象内部包含工作的全部细节;所有的数据都应该隐藏在对象内部;保证对象的任何改变都不会影响到系统的其余部分。
9.3.2 文档
在开发面向对象程序的时候,设计文档应该包含以下内容:
* 完整的类图
* 清晰的方法定义(参数和返回类型,必要时包含伪代码)
代码内文档应当包含以下信息:
* 用以描述代码含义的注释信息
* 有意义的数据名称
* 用常量替换固定的数字
* 一致清晰的缩排格式
9.3.3 JavaDoc
常用标签:@author, @version, @param, @return
9.4 可靠性
编译时错误(compile-time error):没有按照语法规则编写合法的程序。
运行时错误(run-time error):程序没有完成指定的工作。可能是需求不符,可能是逻辑错误,或者两者兼而有之。
测试错误:从单元测试开始,然后进行集成测试。
9.4.1 单元测试(unit testing,测试独立的类)
不要在原始类中添加main方法进行测试,而是单独构造一个包含main方法的类称为原始类的驱动器(driver),
这个驱动器类只是完成对特定类的操作,不会干扰的类。
如果要进行单元测试的类依赖于其他的类,而被依赖的类当前无法获得,那么可以开发一个哑元类(dummy class)用于替换无法获得的类。
哑元类是为了完成测试而开发的模拟真实类的类。
9.4.2 集成测试(integrating testing,测试组成应用的所有的类)
在完成程序中每个类的独立测试后,需要将它们组合,进行综合测试,目的是保证类之间的接口可以正常地工作。
为了进行接口测试需要对所有类进行重编译。防止类间的接口不一致。
9.4.3 黑盒测试(black box testing)
把测试组件看作不透明的盒子,即忽略组件的代码细节,构造测试的输入数据时可以分成多个等价组。
9.4.4 白盒测试(white box testing)
把测试组件看作透明的盒子,构造测试集,尽可能覆盖组件所有可能的执行路径。
9.4.5 测试日志
测试日志是记录系统开发过程中进行测试的文档。
9.5 健壮性
一个程序意外地终止运行被称为崩溃(crash)。
将组件推向极限的测试方法称为压力测试(stress testing)。
当违反规则时程序会报告异常(exception),报告异常的过程称为抛出异常(throwing exception)。
9.6 可用性(usability)
程序的可用性是指应用程序的使用者与程序交互过程的容易度。
9.6.1 文本格式化
转义符:\n, \t, \", \', \\
9.6.2 图形用户界面
是 友好的,易于用户操作的。
自测题:
1。解释什么是继承?
继承是指在类之间共享属性和方法。继承关系是一种层次关系,也被称为a-kind-of关系。
2。在UML类图中如何描述继承关系?
用空心的三角形表示继承关系,三角形的尖指的是基类。
3。在Java中,使用哪个关键字声明一个类是另一个类的子类?
class 子类 extends 基类,用extends关键字代表继承关系。
4。区分方法重写和方法重载的不同。
多态性的实现:方法重载和方法重写。
方法重载指同一类中可以存在具有相同名称的不同方法,通过它们的参数列表加以区分。
方法重写指超类中的方法,可以在子类中重写。
不同的方法的相互区分:在方法重载中通过不同的参数列表相互区分,在方法重写中通过隶属的对象的不同相互区分。
5。解释什么是类型转换,并描述Java中类型转换是如何实现的。
强制类型转换(typecast):强制一个数据从一种数据类型转换为另一种数据类型。
通过在待转换的数据前加一对含有新类型名称的括号实现。
6。解释abstract和final修饰符分别应用于类和方法时的作用。
abstract class表示这个类为抽象类,不能创建对象,只能作为其他类的基类。
abstract method表示这个方法是抽象方法,没有实现,子类如果要实例化,必须重写这个方法。
final class表示这个类为最终类,不能被继承。
final method表示这个方法是最终的方法,子类不能重写。
编程练习:代码附件
1. QualityQ2.java
2. Reactor.java
3. EscapeSequence.java
4. FindCost3.java
b) 说实话,这么简单的输出,真不知道还需要怎样改善信息的布局。
《Java大学教程》—第9章 软件质量的更多相关文章
- 正在学习的Java大学教程
推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
- 《Java大学教程》—第23章 Java网络编程
本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...
- 《Java大学教程》—第19章 改进用户界面
用户与程序交互的媒介称为用户界面(user interface)或人机界面(human-computer interface). 19.2 Border接口8个实现Border接口的标准边框类: ...
- 《Java大学教程》—第14章 抽象、继承和接口
自测题:1. 解释抽象和抽象数据类型的概念.P333抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节.类模板通常被称为抽象数据类型.因为这类数据暴露给用户的所有信息仅仅是方 ...
- 《Java大学教程》—第12章 案例研究--第2部分
本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1. 正确运行2. Runhostel.java3. searchButton
- 《Java大学教程》—第11章 案例研究--第1部分
自测题:1. 图11-1的UML设计中各个类之间的关系.Hostel与TenantList是关联关系:TenantList和PaymentList与ObjectList是泛化关系.TenantL ...
- 《Java大学教程》—第22章 多线程程序
22.2 进程(process):P551时间切片(time-slicing):处理器只是完成了一个任务的一部分工作,然后完成下一个任务的一部分工作,因为处理吕每次完成工作的时间都非常短,因此看起来这 ...
- 《Java大学教程》—第20章 文件处理
记录():一个单独的数据实例.域():一个属性. 20.3 输入和输出设备:P484输入过程和输出过程.操作系统负责建立三个流(stream):标准输入流(System.in).标准输出流(Sy ...
随机推荐
- [转]How To Send Transactional Email In A NodeJS App Using The Mailgun API
https://www.npmjs.com/package/mailgun-js 本文转自:https://www.mailgun.com/blog/how-to-send-transactional ...
- [转]bitcoin: 通过 rpc 请求节点数据
本文转自:https://laravel-china.org/index.php/articles/8919/bitcoin-requests-node-data-through-rpc 文章来自本人 ...
- linux mail操作
本操作系统邮件由来,crontab定时任务执行推送产生. 1.查看有多少封邮件 & file 2.我们直接键入23935来访问这封mail,看看是否是我们所需要的最新邮件. 3. 退出邮件查看 ...
- Django之Ajax文件上传
请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: 1 application/x-www-form-urlencoded(看下图) 这应该是最常见的 P ...
- Javascript 对象 - 数组对象
JavaScript核心对象 数组对象Array 字符串对象String 日期对象Date 数学对象Math 数组对象 数组对象是用来在单一的变量名中存储一系列的值.数组是在编程语言中经常使用的一种数 ...
- Eclipse For JavaSE安装、配置、测试
Eclipse For JavaSE安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6. ...
- JPTabBar 详细介绍
一个强大的TabBar,实现市面上APP基本上所拥有的功能,代码简单构造容易!只需不足5行代码就把基本的界面搭建出来了 附上效果图: 主要功能特色: 多种Tab切换的动画效果 实现底部导航中间按钮凸出 ...
- Java根据年龄段获取对应年份起始时间戳和最终时间戳、根据生日时间戳获取月份(与数据库的时间戳处理成的月份拼接成SQL条件)
1.传入年龄段,两个值,一个最小值,一个最大值,然后获取该年龄段的两个时间戳: (1)处理时间方法: /** * 根据年龄获取时间戳(开始年龄key取0,返回一年最后一秒时间戳,时间戳大:反之结束年龄 ...
- Android智能指针SP WP使用方法介绍
Android手机操作系统既然是开源的操作系统.那么在具体的文件夹中就会存放着各种相关功能的开源代码.我们在使用的时候可以根据这些源代码进行相应的修改就能轻松的完成我们所需的功能.在这里大家就一起来看 ...
- 使用 new XMLHttpRequest() 制作下载文件进度条
mui 进度控件使用方法: 检查当前容器(container控件)自身是否包含.mui-progressbar类: 当前容器包含.mui-progressbar类,则以当前容器为目标控件,直接显示进度 ...