面向对象课程总结

  十四次做业转眼就过去了,面向对象这门课程也即将结束.本文即做为对整个课程的总结与检讨.java

  老师从第一节课就开始强调,本门课程不叫作java程序设计,而是面向对象设计与构造.咱们所学的不只是java的语言特性,更重要的是透过这些语言特性反映出的面向对象的思想:抽象,继承,封装,多态性等.这些思想不依赖于语言而存在,即咱们的目标应该是,可以用java解决问题,同时若是给我一本c#或者c++的语法书的话,我很快地就能够将用java解决的问题再用这两种语言实现一遍.c++

面向对象的测试

  测试和正确性论证的优缺点.测试始终是找出程序问题的最直观最重要的手段,即便咱们用正确性论证发现了程序的问题,一样须要测试样例将其复现出来.测试很直观,很显而易见地就能够看到问题的发生.任何程序适用的输入输出均可以做为测试.测试的问题在于基本没法作到全面而有效的覆盖,这是正确性论证大显身手的时刻.编程

  正确性论证让我想到了以前计算机组成课程上的一个名词叫作形式验证(Formal Verification)。 形式验证的含义是根据某个或某些形式规范或属性,使用数学的方法证实其正确性或非正确性。我以为这两个词应该是计算机科学中至关同质的两个词.正确性论证能够穷尽一切可能性,由于是经过分类和数学证实获得的,在全面性方面赛过测试.c#

  正确性论证的缺点在于将问题的抽象和归纳对咱们的开发效率形成了很大的影响.想要论证结果的正确性必须保证论证过程的正确性.而论证过程所须要的时间和精力一点都不比咱们绞尽脑汁想到的不一样分类的测试样例须要的少.安全

  测试:多线程

  优势:直观,方便;测试

  缺点:构造的测试样例很难作到全面.线程

  正确性论证:debug

  优势:全面,保证正确性设计

  缺点:须要的前提条件多,繁琐.

OCL语言和JSF的比较

  JSF是咱们后半部分课程中常常用到的用于程序规格化设计的规范化语言,而OCL咱们就相对比较陌生.OCL全称是Object Constraint Language,即对象约束语言,是一种帮助UML更好的创建和描述抽象模型的,施加在指定的模型元素上约束的语言。

  OCL与JSF的相同之处在于都是严格的无二义的规范化语言,都包括类似的组成部分,前置条件,后置条件,不变式等等.并且都与具体的实现无关.

  不一样之处在于OCL更复杂,具体一点,更接近程序的模型特征.

电梯系统的模型

  类图:

  

  时序图:

学期总结:

  四个模块之间的关系.

  第一个模块毫无疑问是入门,创建面向对象编程思想的开始.我以前有过一些java的基础还好,还记得第一次互测拿到的那个同窗的几百行代码的方法,虽然靠着大量的debug和精心设计也能正常运行.毫无疑问在可阅读和可维护性方面差的太多了.而在以后碰到的互测做业,最起码方法的划分的进步仍是很明显的.

  第二个模块主要是多线程的介绍,与线程安全的实践.这些是进行高级程序设计和工程化做品的一些基础.为了保证线程安全,必须对类的做用范围和方法调用等知识了解的更加透彻.

  第三个模块则是测试的入门.咱们以往的人工设计测试样例显然是没法适应愈来愈复杂的功能的.

  第四个模块告诉咱们怎么设计更加规范,可维护,正确习惯的程序.

  一学期以来,在面向对象这方面的进步应该是很大的,老师颁发的金不换奖状能够做证.第三次的电梯模型拿到第十三次简直没眼看,迅速重构后,第十四次就能够作到一句不改地进行正确性论证,也能够充分地证实这一点.

  说实话,我感受本身进步最小的应该是测试能力,不过这个也没法在短期内取得更快的进步.只能留待往后慢慢发展了.

对课程的建议:

  若是能够每次做业结束以后公布一些优秀做业就更好了.我感受每次做业都是本身在摸索和进步,没有感受到你们是一个技术社区,相互促进的做用.即便是怕抄袭,也能够在课程结束两周后公布,让你们吸取优秀做业的特色.由于三次做业基本上是一个周期,就很难再抄袭了,可是一些优秀的特性却不由于三次的间隔而褪色.但愿老师和助教能够考虑一下.

相关文章
相关标签/搜索