守得云开见月明——OO第三单元总结
OO Unit3 总结 博客作业 18373806 冯天昱 历时五周(中途暂停了一周),OO第三单元——JML和规格的学习告一段落。 与前两个单元完全不同的是,这一单元的设计是基于非常完整的规格实现的,这导致了: ①更容易保证实现的正确性:可以使用JUnit单元测试对实现进行完整地测试,可以通过对照规格和实现快速检查和发现代码中的BUG; ②整体架构的设计能力被弱化:课程组给出的三个接口和规格十分详尽,相当于帮助我们确定了程序架构的整体框架,代码的编写只需要小体量的结构设计和保证每个指定功能的实现与预期一致就可以了。 下面对本单元的三次作业进行总结。 一、JML及其工具链 1. JML JML (Java Modeling Language)是一种行为接口规格语言,定义了Java程序中的方法规格和类型规格。结合JML工具链,我们可以自动构造基于规格的测试用例、通过形式化验证检查规格的实现,以更加严格的手段确保程序实现符合预期。 JML以javadoc注释的形式嵌入Java代码中,以 @ 开头。 JML的学习主要从以下两个方面入手: JML表达式 JML中有许多表达式,其中有 \result 、 \old() 、 \not_assigned 等具有特定含义的原子表达式、 \forall 、 \exists 、 \sum 等对一组数据进行量化的量化表达式