软件质量:可维护性、可靠性、健壮性、可用性。
9.3 可维护性
系统维护(maintaining)是指根据需求的变化更新现有系统的过程9.3.1 封装的重要性
连锁反应:对系统某一部分的改变可能会对系统的其余部分产生影响,导致系统错误。面向对象的封装原则保证了面向蝗程序易于维护,因为封装原则减弱了连锁反应的影响:每个对象都应该在对象内部包含工作的全部细节;所有的数据都应该隐藏在对象内部;保证对象的任何改变都不会影响到系统的其余部分。9.3.2 文档
在开发面向对象程序的时候,设计文档应该包含以下内容:* 完整的类图* 清晰的方法定义(参数和返回类型,必要时包含伪代码)代码内文档应当包含以下信息:
* 用以描述代码含义的注释信息* 有意义的数据名称* 用常量替换固定的数字* 一致清晰的缩排格式9.3.3 JavaDoc
常用标签:@author, @version, @param, @return9.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.java2. Reactor.java3. EscapeSequence.java4. FindCost3.javab) 说实话,这么简单的输出,真不知道还需要怎样改善信息的布局。