oo第四次博客

0o第十五次博客作业

一、论证测试与正确性论证的效果差异

         在第十三次作业中,我运用了Junit来测试我粗糙丑陋的第三次作业的代码,当时在写第三次作业的时候由于对面向对象的思想没有完全的理解,导致我的代码十分繁琐,有些类没有实际的功能,有些类非常长。Junit测试那些长方法的时候,很难仔细检查到每个分支,而且其实就相当于把整个程序跑了一遍,于是就花了一晚上时间熬夜把代码重构了一遍,结果发现学完一学期的课编程能力也有很大提升,花了两三个小时就写完了,所以Junit还是能让你更好的优化程序结构,从输入输出正确性的角度来判断设计是否正确。

         在第十四次作业中用到了正确性论证。刚开始觉得正确性论证挺简单的,但是自己一上手写就发现这个过程需要论证程序的每一个小细节,从程序的实现方面来判断程序是否有效,看起来很繁琐,实际上只要你对自己的程序足够了解,思路足够清晰,就可以很顺利地完成。

         总结一下,Junit关心程序是否能达到预期的效果,不关系具体的实现过程。正确性论证则把侧重点放在了程序每一步实现是否满足要求。

 

二、OCL语言         与JSF

相同:他们的产生都是为了解决约束表达的问题,是一种形式化的语言,无二义性,消除了形式化语言原有的复杂性,可以作为设计者和开发者之间交流的通道,都有前置条件和后置条件

不同:OCL语言中有很多关键字,不变量,数据结构,一些固定的语法和表达方式,比起JSF更加准确,但是可读性没有JSF高。

 

三、

UML类图

 

 

UNL时序图

 

 

Elevator状态图

 

 

四、

4.1 四个单元之间,深入浅出,循序渐进,从最基础的java面向对象的对象创建,类,继承多态开始,到后来的多线程,在多线程中强调了同步的问题,然后讨论设计的solid原则,编写规格来检查代码实现的正确性,再用Junit和正确性论证来巩固,非常清晰,有条理,十分易懂。

4.2 其实就是那天晚上重写程序的时候发现自己的编程能力有了一些提高,原来写两天的程序现在只要写几个小时,而且正确性得到了保证,看起来也赏心悦目,可能这就是面向对象编程的优点吧。在测试上,找bug能力强了不少,也初步掌握了该怎么进行测试,比以前的小白进步了一点。

4.3 工程化不只需要考虑是否正确,还需要考虑容错能力,非正常状态下的处理能力,以及代码的结构,可读性,维护性等等,是一个非常复杂的系统化的过程。

4.4 没什么建议,什么都好,也祝oo越办越好,拜拜啦

posted @ 2018-06-25 10:07  喝水水  阅读(109)  评论(0编辑  收藏  举报