面向对象课程 第五次博客总结

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


同:都是对代码正确性的论证

异:

(1)测试:

  测试是随机产生满足前置条件的输入,通过比较输出和后置条件,从而论证其正确性。

  优:简单易行,对于测试者而言相对容易,可以更快地获得正误反馈,效率高。

  劣:测试是随机的,不能全面的覆盖到各个方面,很可能错在未考虑到的bug。

(2)正确性论证

  论证是哟啊根据规格和代码,进行逻辑分析,确保所有满足前置条件的输入都能得到满足后置条件的输出。

  优:形式化的逻辑推理,严格的论证,确保没有bug的存在。

  劣:但是逻辑论证中可能存在逻辑错误。

二、OCL语言和JSF规格的相似与不同


  OCL语言是用来进行约束定义的形式化的无二义的语言。不会改变模型中的内容。

同:

  1、两者都基于谓词逻辑,采用了形式化的数学语言来进行描述。

  2、都有前置后置条件的约束。

  3、都没有理解上的二义性。

异:
  1、OCL支持上下文,但是JSF不支持;

  2、两者的语言符号不完全相同;

  3、OCL的语言体系更加完善,可以表达更多的信息,而JSF更多的是一种辅助性的描述。

三、UML表示


  

 

四、学期总结


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

第一个单元的三次作业难度很小,主要是为了让我们熟悉JAVA编程,熟悉eclipse编译器,熟悉git的使用。第一次作业通过JAV程序与CPP程序的对比,让我们的编程思维作出改变。第二次作业的傻瓜电梯让我们开始熟悉面向对象的编程方式。第三次作业是对面向对象的编程方式的一种加强训练。

第二个单元开始学习多线程,从最初的多线程电梯,到文件监控再到多线程出租车,多线程套餐是整个课程最难的一部分,也是花心思最多的作业。从最开始接触多线程电梯的一脸茫然,到后来多线程出租车的时候,实现安排好布局,从而可能出现的新功能预留接口,是自己的编程思维的一种改良。

第三个单元是JSF的学习。通过预先写好规格,可以很大程度上简化我们的工作,让编程工作有条不紊,事先的规划可以帮助我们无论在编程还是debug的过程中,显得游刃有余。

第四个单元是测试和论证。JUnit单元测试和正确性论证可以很大程度上提高我们的代码正确性,是对自己的代码的一种自检测,确保自己所写的代码拥有广泛意义上的正确性。

这四次作业俨然是从入门到精通的思路。从学习最基础的编程,到更高难度的编程,再到对自我代码的评判。循序渐进,受益良多。要说的是,课程对于如何自检测自己的代码所用的篇幅很多,这也是一个程序员优劣的重要标志。

2、我的进步

经过四次作业,从完全不懂面向对象的编程方法甚至不懂JAVA,到熟悉面向对象的编程手段,并体会这种方式带来的益处,学会了如何保证自己的代码质量而非简单的随缘debug,这不只是简单的编程能力提升,更是从思维上的一种转变。

3、对于工程化开发的理解

联系大二上学期的计算机组成原理课程的工程化开发方式,对工程化开发有如下理解:
1、工程化开发方式采用的是一种搭积木的开发手段,它能保证工程的普适性,不会因为个人的风格差异,导致整个工程的崩塌;

2、工程化开发方式是针对大型工程的开发所适应的手段,在针对小型工程是没有明显效果,甚至需要更多时间。这也是初学者不愿意学习这样的开发方式的原因,限制了他们个性的发挥,并且枯燥。但这并不意味着这样的开放方式是无用的。这是从低阶到高阶的必经之路。

3、工程化开发方式通过一套完整的流程限制,增加编程流程,提高了复杂度,降低了思维难度。

4、对课程的期望或建议

个人作为OO课程的受益者,但是刚开始不熟悉JAVA,经历了很多困难,希望可以增加一到两次的基础作业,从而对于初学者更加友好。

希望OO课程越来越好。

猜你喜欢

转载自www.cnblogs.com/silence-age/p/9225246.html