最后一次OO作业
测试于正确性论证的效果差异
-
测试:也就是通过不断的构造数据来检测你的程序,这样的方法需要大量的数据来全面覆盖你的所有情况才能保证说你的程序是没有bug的,这样的方法优点是当测出bug时,可以快速的修改,因为是对应的bug,不过缺点也很明显一个是测试过程非常的累因为需要大量的数据,另一个是很难全面覆盖,并且工程量越大的程序越是困难。
-
正确性论证:正确性论证方法是通过你的代码规格,用逻辑来逐一论证是否满足,这样的做法很容易就做到全面覆盖了,优点十分明显,就是正确检查之后可以保证正确性了,不过缺点就是在论证过程中也很容易出错,因为需要严谨的逻辑,如果哪一环出了错误也不一定能意识到,需要测试者的论证能力。
OCL语言与JSF
-
对象约束语言它是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式,附加在操作和方法上的前置条件和后置条件等。
-
对象约束语言是一种形式化语言,它主要用于表示UML模型中施加于模型上的约束。OCL具有如下特点:
1.精确,独一无二
2.一种纯表达式语言,它是具有没有任何副作用的申明性语言。
3.一种类型化语言,即OCL中的每一个表达式都是具有类的。
4.一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。 -
从上面的特点可以看出,JSF和OCL相比简洁很多,也就是没有那么复杂,OCL有系统的高级语法,相当于在编程前系统的建模了,而JSF则相对容易书写,编程前写JSF也是保证逻辑的正确性,但是在目的方面是一样的,同样都有规范的形式,语义的无二性。
十四次作业UML
UML类图
UML顺序图
UML状态图
学期总结
- 第一单元主要是是学习与适应java的编程,多项式的编程与简易电梯也让我们从面向过程慢慢转变为了面向对象。
第二单元则是开始学习多线程的编程了,多线程电梯让我第一次体会到了面向对象在多线程上的优势,抽象化了对象之后,整个编程都变得清晰简明了起来,让我的编程能力也大大提高了
第三单元讲述的是设计方法与规格的编写,让我在程序设计与编写过程更加的规范化了,不再是那个人脑抽象编写的我了,编写程序逻辑与设计都清晰了不少,JSF的学习也让我在设计过程中减少了很多不必要的粗心bug,提升很大。
第四单元是测试与正确性论证,的确写代码只是开始,保证你程序的正确性才是重中之重,一个好的测试方法能够达到事半功倍的效果,在学习完测试与正确性论证之后,我在检测程序正确性方面的能力也提高了很多很多。
总体而言这四个单元的设计是一环扣一环的,一步步的从基础提升我们的能力,让我们最后成为了一个可以独挡一面的设计者,从编写到检测,各项能力都有提升。 - 回首这个学期在OO中设计过的程序,多项式,单线程傻瓜电梯,单线程捎带电梯,多线程捎带电梯,再到后来的出租车系列,我编写的程序复杂程度也在一步步提高,设计同样也是越来越好了,最开始的多项式都还是有些面向过程,比较像C语言的编写,到了后来的出租车也能够轻松,可以看出在设计上越来越娴熟。测试上也是有了自己的心得,有了比较快速又实用的方法。
- 在学习了一学期了oo之后,对于工程化也有了自己的理解,工程化也就是更系统,规范的去完成一项工程,无论是多人合作的工程还是单人完成的工程,都需要模块与模块之间的契合,所以更需要规范,这样才能避免很多不必要的合并多项模块时之间的不兼容,可以更快速合理的完成工程。
- 整体来说OO这门课还是十分锻炼人的,无论是心智上还是能力上,都对我们有很大的提升,非常感谢老师助教们辛勤的工作,为我们花费了很多心血与时间,最后希望OO这门课能够越来越好。
建议:主要就是希望有规范化的指导书,总的来说还是不错,就是有一些指导书还是写的不够清楚,不同的同学可能会有不同的看法,我觉得很多时候多举一些样例会好一些。