OO第三单元总结

一、梳理JML语言的理论基础、应用工具链情况

  JML以javadoc注释的方式来表示规格,每行以@起头。其中行注释为“//@annotation”,块注释为“/*@ annotation... @*/”。

  常用表达式有以下几种:

  \public normal_behavior:表达方法在正常情况下应该做出的操作

  \public exceptional_behavior:表达方法在异常情况下的操作

  \signals:表达抛出的异常

  \requires:表达本方法满足的前置条件

  \ensures:表达本方法的后置条件

  \old(expr):表示表达式expr在该方法执行前的取值

  \forall:全称量词修饰的表达式,表示对给定范围的元素,每个元素都满足相应约束

  \exists:存在量词修饰的表达式,表示对给定范围的元素,存在某个元素满足相应的约束

  \result:用来表示本方法返回的正确结果

  \assignable:用来表示方法会改变哪些变量 应用工具链

 

四、按照作业梳理自己的架构设计,并特别分析迭代中对架构的重构

(1)第九次作业

OO第三单元总结_第1张图片

  第九次作业就是简单地按照规格来写,在MyPath中用ArrayList存储结点序列,在MyPathContainer中用HashMap存储路径,没有什么更多的设计,这也导致了性能不佳,后续在强测中挂了5个点。

(2)第十次作业

OO第三单元总结_第2张图片

  第十次作业依然是根据架构来写,MyPath类沿用了第九次作业,在MyGraph中用一个HashMap存储距离矩阵,在每次对路径进行add或remove操作后进行重新计算,依然是性能不佳的毛病。

 

五、按照作业分析代码实现的bug和修复情况

  除开在写的过程中由于疏忽导致的肉眼可见的output错误的bug之外,最主要的问题就是在强测中程序超时,这边还是数据结构的问题,需要加强。

 

六、阐述对规格撰写和理解上的心得体会

  规格的撰写是面向对象的一种很好的体现,我们要明确每个类的需求,然后要熟悉规格的语法,正确的规格有利于对程序进行更好的测试与维护。前两次作业主要按照规格来写,可以说逻辑上给了我非常大的帮助,测试的过程中也让我充分体会到规格的便利之处。对于规格的学习对我们未来的团队编程应该会有很大的帮助吧。

你可能感兴趣的:(OO第三单元总结)