代码改变世界

OO第四次博客

2018-06-25 10:56  ankifrog  阅读(206)  评论(0编辑  收藏  举报

一、测试与正确性论证

1、效果差异

测试是从代码的功能性上进行测试,而正确性论证是从逻辑上进行论证。逻辑上正确,不一定代码的功能就能完全实现。相反,功能上实现的很好,但是不一定代码本身的逻辑和结构就能解释的很清楚

2、各自的优缺点

测试上更直观,但是需要构建大规模测试样例,容易出现疏漏。

正确性论证更完备,不容易出现疏漏,但是对于庞大的类往往难以下手,不如测试样例来的轻松简单。

二、OCL语言

OCL是对象约束语言(Object Constriant Language)的简称。

从英文全称上可以看出上这是对对象的约束,可以更好地定义对象行为,主要服务对象是类。这一点和JSF相同,实际上OCL可以看做是JSF的进阶版本。

OCL和JSF同样都是声明式的语言,都有前置条件、后置条件和不变式,但它不像JSF一样完全用逻辑表达式,而是包含了基本的数据类型和高级的数据结构,且每个表达式都有类型。

三、第十四次作业

1、类图

2、时序图

3、状态图

 

 

 

四、整理与总结

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

第一个单元,我们学习从面向过程的思维转化成面向对象的思维,对java这门语言进行了解和掌握,实际上实现的东西是以前C语言练习实现的程序的翻版。这个单元用于思维的过度,以及为后续学习打基础。在这个过程中,出现的问题主要是逻辑上的错误。

第二个单元,有了第一个单元的基础,我们开始尝试更高一层次的知识。在此学习的东西再无之前的经历可以借用,完全是崭新的没有接触过的层面。我们学习了多线程、线程安全。在这个过程中,出现的问题主要是设计上的漏洞,导致出现的线程不安全、方法不安全等。

第三个单元,虽然主体是出租车,但是我们主要研究的内容是规格化设计,相比于前两次测试中强调代码上的正确性,这里更强调结构和设计上的正确。这些知识在当时被我们吐槽,但确确实实是对工程化思维以及互相交流有帮助的。

第四个单元,内容为测试。我们对之前作业的代码完善性进行了测试,使代码的结构更精简,功能更健全单一,更贴近面向对象编程的本质。

四个单元,我们分别体验了不同层面上对代码的要求,从而不仅仅能够写出正确的代码,而是也可以写出漂亮健康的代码。

2、梳理程序

在抵达第四个单元,第一次回头看自己曾经写过的代码的时候,我有一瞬间居然觉得我是拿到了一份大礼包。我经历了如下的过程:只创建一个main文件,其他类都包含在该文件中,并且含有许多GOD类和一些僵尸类 → 类的划分逐渐合理,但还是写在同一个文件中 → 开始写在不同的文件中,类的长度和功能都划分清楚 → 开始出现类的耦合度反而上升、方法的功能多余的现象 → 改正上述的问题

不幸的是,此时的我面临的就是从最后一个状态回头去看第二个状态的场景……所以,我重构了一些代码,并且彻底解决了之前的类的耦合度的问题。之前的问题主要出在Scanner的传递上,我将所有的输入类统一,建立一个很大的输入类,同时进行读请求、分析请求、拆分请求的操作。这样就解决了这个问题,还使得涉及到该方法的其他两个类变得相当精简。

经过这些学习,我在设计上能够做到先设计后写,以功能为先,以面向对象的思维去思考,在测试上,我能够思考问题的根源,学习分析问题出现的本质,而不是错误案例,在质量上,有了上述的叙述便不再多言。

3、工程化开发

在工程化开发中,每个人不需要对整个问题予以完全理解,而是各自忙各自的工作,为此,我们需要的是如何理解他人的工作,如何让我们的工作成果被其他人良好利用。此外,我们还需要注意自己的代码不能影响其他人的使用,不能因为自己的错误没有发现导致其他人在使用过程中出现了不可知的错误。为此,我们一方面需要完善自身代码,使其简洁、健壮,另一方面也需要使用规范化的方法传递我们的想法,增加代码的可读性和规范性。藉由这些措施,无论是一开始设计上的合作还是后期维护上的分工,都能享受到十足的便捷。

4、期望与建议

希望能够多一些练习的题材,一直写电梯、出租车真的是写的很难受。。。。。还有就是指导书希望可以更加精确,不要让一些人有钻空子的机会。