TDNss

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

oo第四次总结

一、测试和正确性论证

  测试就是将一大堆输入和理想的输出对比,通过不断对比,来最终发现自己的bug。我认为测试的好处是,在初期可以很快找到自己的bug,操作起来简单方便,但是不利于找到自己隐藏的bug。

  而对于正确性论证,它可以通过逻辑,全面的推理一个程序是否正确,它的好处是严谨,可以保证做到程序正确的万无一失,但是它的问题是,过程过于复杂,比如这次作业中,有一个复杂一些的方法就足足让我研究了两个小时它的正确性论证。

 

二、OCL语言调研

  OCL是约束语言和查询语言  

 

  一个约束就是对一个(或部分)面向对象模型或者系统的一个或者一些值的限制。UML类图中的所有值都可以被约束,而表达这些约束的方法就    是 OCL。在UML2标准中,OCL不仅用来写约束,还能够用来对UML图中的任何元素写表达式。每个OCL表达式都能指出系统中的一个值或者对象。因为 OCL表达式能够求出一个系统中的任何值或者值的集合,因此它具有了和SQL同样的能力,也就是说OCL也是一种查询语言。

  OCL是基于数学的,但是没有数学符号

  OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。

 

自然语言是最易懂的,但是它是含混不清晰的。OCL取了自然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中同样的概念。如果你不喜欢当前的OCL表达方法,OCL规范还允许你定义自己的OCL符号集,这点是可以理解的,因为OCL有一个清晰的数学语义。

  OCL与JSF语言

 

 

  相同:1)都是声明式语言。

     2)以集合论和谓词逻辑为基础。

       3)具有前置条件和后置条件的约束。

  不同:1)OCL后置条件不是可执行语句,是断言;JSF后置条件为一布尔表达式。

     2)JSF语言表达式要使用一个布尔表达式。

     3)OCL语言需要赋予一个明确的上下文来定义参考基准,上下文包括类,属性,操作和关联。

三、UML分析

  类图、顺序图、状态图

  

类图

 

顺序图

状态图

 

四、总结

1、首先,总结一下这四个单元的关系

  首先第一单元可以说是熟悉java,对于面向对象的思想有一个初步了解,并让我们从面相过程的思维中跳出来。

  第二单元应该算是多线程的起步到精通,oo也迎来了最重头的一部分,记得当时我写第二单元是熬夜熬最多的时候。

  第三单元代码量就变得少一些了,主要是对于工程规格化的书写。之前我们写的程序从未有过对于工程化和规范的要求,只是写出来能得出正确结果的程序,这一单元就是要让我们能够写出自己的规范的程序。

  第四单元对于代码正确性的论证,可以说是对于之前的一个总结回顾,并迎来oo的收尾。

 

2、总结一下在编程上的进步

  我觉得首先在程序的设计上,一开始刚拿到作业的时候,可能是第一次写这样一个复杂的作业,所以对于作业在设计上可以说一开始是毫无头绪,到了后来自己也能根据面相对象的思想来构造一些设计了,我认为这是我在编程的设计方面的进步。

  另外在测试上,之前的数据结构我一直在使用printf的方式测试程序,这一学期我学会了使用eclipse上的debug工具来对程序bug进行测试,也确实学习到了使用debug工具的很多方便的点。

  另外,oo的课上也让我受益良多,通过课上,我学会debug、测试以及多线程的知识点。

 

3、对于工程化的理解

  我在改别人作业的时候,也看到过大佬的工程化代码。我的感受就是,工程化代码可能量会大,但是给人带来的感觉是清晰,而且虽然多但是不复杂,从变量到结构一目了然。反观自己的代码,量小但是有时候复杂的自己都看不懂,挤在一起的代码可能直接拿出来另写成一个方法出来更好。

 

4、总结

  这一学期oo总算结束了,我的感受是,在这种每周给的推背感下,不逼一下自己都不知道自己能干出什么来。另外希望oo这门课能精简一些,可能因为我是个很普通的学生,所以oo真的会占用我很多可以用来学习其他课的时间,而且oo这门课的学分和付出心血让人有种不成正比的感觉。

 

 

posted on 2018-06-25 17:57  TDNss  阅读(144)  评论(0编辑  收藏  举报