面向对象第四次博客
Posted pyroti
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象第四次博客相关的知识,希望对你有一定的参考价值。
测试与正确性论证差异对比
测试指为检测目标是否符合标准而采用特殊工具和方法进行验证。测试的优点在于你可以不用知道程序是如何实现的,直接输入测试样例,然后比较程序运行结果和正确结果,如果两者不同,就说明程序肯定有BUG。从中我们知道测试是快速方便的,它可以检测并定位一个程序的BUG。但是测试的效果很大程度取决于测试样例是否完善,如果不完善,就会遗漏一些潜在的致命的BUG,这也是测试最大的缺点。若要达到很好的测试效果,需要构造规模庞大的测试用例,这会消耗很多精力,而且你并不能保证这个庞大的测试用例已经覆盖了所有情况。
正确性论证需要测试者分析代码的需求和规格,深刻地理解代码。它的最大的优点就是可以覆盖程序的所有情况,若通过正确性论证,则可以说这个程序100%正确了。它的缺点就是如果代码量过大,消耗的精力是非常大的;如果代码量较小,也会消耗过多时间,这与测试相比是不值得的(因为测试在代码量较小时几乎能保证覆盖所有情况)。论证是建立在正确的规格与需求之上的,所以在论证前需要保证规格的绝对正确。
OCL与JSF的相似与不同
OCL,即对象约束语言,作为图形符号的补充,说明建模元素的有关细节。
相同点:OCL和JSF都可以用来描述对象及其行为的限制,都有前置条件、后置条件和不变量的概念。
不同点:OCL语言基于UML类图而JSF基于代码。OCL的标准更加完善,JSF要求使用布尔表达式,比OCL更加严谨。
第十四次作业图
1. 类图
2. 时序图
3. 状态图
总结
1. 知识点的关系
第一单元是基础入门单元,主要目的是在于让我们熟悉使用Java语言编写程序,通过构造程序,分析程序,更加深入地理解面向对象的概念。
第二单元主要是多线程编程,其难度断崖式地上升。在多线程的编程中,“线程安全”是一个始终被提及的点,这也是这个单元的核心内容。通过这一个单元的多线程程序训练,对多线程的实现机制、线程同步、冲突问题等问题的理解更加深入。
第三单元要求在写程序的基础上对程序的规格进行撰写与完善。课堂上介绍了JSF的规范书写和程序的规格化设计,通过作业更好地理解了规格的重要性。课程的重点由代码编写转移到了规格撰写与完善。
第四单元的重点转移到了测试,测试包括了Junit测试和正确性论证。通过这个单元的训练,丰富了我们的测试手段,提高了我们的测试能力。
这四个单元是循序渐进的,首先训练写代码的能力,然后补充程序的规格并对程序进行测试从而保证程序的正确性。这四个单元的训练目的在于让我们不仅能写出正确的程序,还养成了良好的代码设计习惯。
2. 程序的进步
在程序设计方面,之前写一个程序是先进行一个简单的构思,然后开始写代码,在写的过程中不断地添加与修改。而现在写程序,我会全面地对程序进行构思,比如说需要哪些类,这个类有什么属性和方法,这个类应该起到什么作用等。在经过细致地构思后,写代码就变得比较轻松了,修改的部分也少了很多。
在程序质量方面,之前写的程序的行数都是比较少的,功能也比较简单。经过这几个单元的训练后,写的程序已经有上千行,实现的功能也比较复杂。
在程序风格方面,之前的程序的变量与函数命名不够严谨,而且也没有进行规格的撰写,这导致了程序可维护性和可读性低。现在写程序会使用严谨的命名,对每个类和方法都会撰写相应的规格,代码的风格好了很多。
在程序测试方面,之前测试程序就是直接输入测试样例进行测试,忽略了每个类单独的测试。现在对程序进行测试,除了输入测试样例之外,使用Junit和正确性论证是很好的测试方法。
3. 工程化开发的理解
工程化开发,它是一个完整的体系,它包括了需求、实现、完善整个过程,其重点在于多人协作。在多人项目开发过程中,为了提高开发的效率,就需要项目的多个开发成员之间有着良好的沟通。为了成员能够较好地沟通代码,需要程序有着很高的可读性。因此规格化设计对于工程化开发是非常重要的。
4. 期望和建议
首先希望作业的难度能够降低一点,或者是延长作业的间隔时间。在这个学期的学习过程中,OO的确让我的编程能力提高了不少,也让我有了培养良好代码书写习惯的意识,但是占用的学习时间太多了,很大地影响到了其他科目的学习。除此之外,互测机制还是存在一些问题的,希 望这个机制能够更加完善。最后,感谢老师们和助教们的付出,希望这门课能够越来越好。
以上是关于面向对象第四次博客的主要内容,如果未能解决你的问题,请参考以下文章