OO第四次总结

一、测试与正确性论证的比较

程序测试是指测试者特意挑出一批输入数据,通过运行程序,检查每个输入数据所对应的运行结果是否符合预期要求。

正确性证明是论证程序达到预期目的的一般性陈述,而该论证与程序输入数据的特定值无关,能够代表穷举性测试。

(以上内容来自网络)

根据我的理解,测试与正确性比较的最大区别在于测试只能证明程序有错误而不能证明其是完全正确的,而正确性测试可以做到这一点。但是,对程序做正确性论证显然要比做测试困难得多,因此采用哪种方式要根据实际情况决定。

二、OCL语言与JSF规格的比较

OCL(object constraint language)对象约束语言,是一种用于施加在指定的模型元素上约束的语言,是一种形式化的无二义的语言。OCL作为图形符号的补充,说明建模元素的有关细节。

相同点:没有二义性,具有抽象性。

不同点:JSF规格可以描述方法的具体功能,但OCL语言不可以;OCL语言可以图形化表示,而JSF规格必须写成文字;JSF规格支持更多的运算方式,写起来比较自由,而OCL作为一种语言写起来需要更加严谨。

三、单电梯系统结构图

1、UML类图

2、顺序图

3、状态图

四、总结

1、单元模块知识点之间的关系

第一个单元主要是让我们熟悉Java语言和面向对象编程的思想,这一单元的作业比较简单。第二单元是对面向对象编程的更深入的理解,同时在第五次作业引入了多线程,这是整个课程的第一个难点。第三单元主要是让我们更加熟悉多线程,学会线程间的同步控制,并且引入了规格化设计思想。第四单元主要是让我们学会测试代码和论证代码的正确性。这四个单元的知识点循序渐进,每一个单元的知识点都对上一个单元的知识点做了深化和补充,四个单元学下来可以让同学们形成自己的知识体系。

2、程序分析

还记得在第一次作业时,我用面向过程的方法很快就写完了这次作业。但是,为了训练自己的面向对象编程的能力,我在提交当天又把作业按照面向对象的方法重新写了一遍(当时我认为是面向对象了,但是现在看来依然问题重重)。在之后的所有作业中,我一直这样严格要求自己,几乎每次作业都要用大量的测试数据来测试自己的代码,并把结果与其他同学比较,因此这么多次作业下来我被报的功能bug比较少。

在课程前期,我写的代码里一个方法可能有几百行,然后从写出租车的作业开始,我尽量精简自己写的方法,尽管在不断增加功能的过程中有的方法仍然过了百行,但是我觉得比起之前的作业已经是很大进步。在互评的过程中,我很少被报功能bug,对被测试者报的规格bug,我都会认真分析,然后每次都在完善自己的JSF规格描述,在完善规格描述的过程中我经常能看到自己的方法写得不好的地方,然后我就顺手改正。经过几次优化,我觉得我的最后一次出租车作业的代码已经可以说比较优秀(相对自己)。一学期下来,我真切感受到了自己的进步,掌握了新的编程思想扩充了我的思维,提升了我的眼界,让我对编程有了新的认识。

3、对工程化开发的理解

我认为就是要先设计,再编程。先设计每个类需要干什么,每个方法需要干什么,这个类的数据的有效范围,然后编写规格,最后实现代码。最后如果有时间,要对运行结果和方法正确性做充足测试。这样做可以把工程里的bug数降到最低。

4、对课程的期望和建议

希望完善互测机制,并且在公布指导书之前尽量消除歧义(个人觉得可以让助教把作业提前实现一遍,然后给助教多发点工资(ง •_•)ง),然后就没什么建议了。

身边好多人都在抱怨OO课但是我觉得还好,课程的设计我觉得没啥问题,最后祝北航OO越来越好吧。

原文地址:https://www.cnblogs.com/tm47069551/p/9223913.html