BUAA_OO_第三单元
单元任务 本单元任务分为三个阶段,均为根据JML规格完成具有一定功能的代码。依次为: 实现两个容器类 Path 和 PathContainer,对JML规格进行理解和熟悉 ; 实现容器类 Path 和数据结构类 Graph ,其中Graph类继承了PathContainer接口,对JML规格进一步理解; 实现容器类 Path ,地铁系统类 RailwaySystem ,其中RailwaySystem类继承了Graph接口。 一、JML语言 JML是java modeling language的缩写,用于对Java程序进行规格化设计的一种表示语言,可以用来描述一段代码的具体行为,比如前置条件、副作用、后置条件等。 通过JML的相关支持工具,可以检查规格是否合乎规范、可以基于规格自动构造测试用例,同时可使用SMT Solver等工具以静态方式来检查代码实现对规格的满足情况。 (一)JML理论基础 JML中存在大量对Java程序中数据、方法、类的描述,并以Java语言中注释的形式嵌入到程序中,不会影响正常的编译而能够规范代码的使用,而能够精确地描述代码。 主要的规格有: JML表达式 \result表达式:方法执行后的返回值。 \old( expr )表达式:用来表示一个表达式expr 在相应方法执行前的取值。 \forall表达式:全称量词修饰的表达式,表示对于给定范围内的元素