终于来到了最后一次的OO作业,以博客作业的形式来终结也是极好的,回顾一下过去十六周自己的经历,感慨颇深。

测试和正确性论证

简单来说,测试的目的是将程序的代码做到全覆盖,从而确保每个分支都运行一遍,进而分析代码中是否有错误,错误出在哪里。这个方法是十分实用的,可以有效的找出自己代码中的错误,即很容易发现浅显的错误,但不容易发现隐晦的错误。编程的经验告诉我,确实存在那种执行了多条代码之后有了不一样的结果,一环套一环,这种情况虽然很难发现,但确实存在。而正确性论证则不同,它通过大量的穷举,基于repOK和jsf来论证正确性,可以说绝对正确,但时间复杂度实在太高了,远高于写这份代码的复杂度。

OCL和JSF

OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。自然语言是最易懂的,但是它是含混不清晰的。OCL取了自然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中同样的概念。如果你不喜欢当前的OCL表达方法,OCL规范还允许你定义自己的OCL符号集,这点是可以理解的,因为OCL有一个清晰的数学语义。

相同点在于它们都采取了自然语言和数学语言的折衷,采用了前置条件,后置条件和监护规则的模式,不同点在于OCL有着丰富性和完备的可计算性,更重量化。

UML图

总结

这一学期下来,我从最开始连Java都不怎么会编的菜鸟变成了现在能顺利通过OO的人,期间可谓受益匪浅。要谈到自己的进步的话,从第十四次作业可以看出来,以往的作业真的就是一个超级面向过程的作业,后来才真正的理解了面向对象。

四个章节从最开始的初次提到面向对象再到后面的多线程及线程安全,是编程能力的提升。抽象与规格则要求了规格化的编程,最后强调了工程化的质量。

有一个很简单的评测标准,那就是方法的行数,实不相瞒,最开始我的Java代码有过一百多行的方法,写它的jsf简直要把我写死了!后来到了出租车,基本上就没有了这种问题,但面对之前自己的作业,只能狠下心来重构了。也真真切切的了解到了面向过程和面向对象之间的差距,代码能力也会有显著提高。

我认为工程化开发最重要的是可移植性和便捷程度。因为一个工程需要一个团队合作完成,因此各自负责的部分必须要把接口写好,方便别人使用;同时程序内部虽然是一个黑箱,可这个程序后期是可能进行加工的,并且有可能不是原开发者加工维护,所以代码一定要简洁明了,符合规范。

我对课程的最大期望是,在文件系统的那一章作业,要么降低难度要么增加时间。我的能力有限,时间也无法全部放在OO一门课上,所以有限的时间内我无法保证作业的质量,分到一个心狠手辣的人我就被扣的不成样子,同样写的不好的同学却不会这样,这中间的落差很容易让人走向黑化的道路,进而病毒式的扩散到全系。老师或许会说,保证作业质量就不会有这样的情况了,说的太对了,可这个课的难度本身就应该让所有人努力一下就不会太惨才对,不应该有这一章作业存在,请老师好好考虑,不然像我这样运气不好的菜鸟只能在申诉之后面对助教一句“全部视为错误”之后想骂人了。关于这门课我真的没什么好赞美的,它让我学到了很多东西,面向对象的编程思想,节约时间的必要性等等,却也让我明白了黑暗森林体系中每个人能有多疯狂,吴际老师说将来每个人都会感谢这门课教会自己的东西,可我更喜欢另一个老师的这句话:“社会是复杂的,但希望我们尽量保持一颗纯洁的心”。与君共勉,继续努力

OO课程第四次总结的更多相关文章

  1. OO第四单元总结——查询UML类图 暨 OO课程总结

    一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...

  2. 【OO学习】OO第四单元作业总结及OO课程总结

    [OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...

  3. OO第四单元——基于UML的UML解析器总结&OO课程总结

    OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...

  4. OO第四单元总结暨OO课程总结

    一.第四单元作业总结 本单元的主要任务是对 Uml 图元素进行管理和查询,测试一开始会输入一个静态图,之后会对图中相关内容进行查询. 第13,14次作业 第14次作业新增内容很少,故与第13次作业放在 ...

  5. OO第四单元UML作业总结暨OO课程总结

    目录 目录一.第四单元UML两次作业架构设计第一次作业第二次作业二.架构设计总结与OO方法理解演进三.测试理解与实践演进四.课程收获总结五.课程改进建议六.尾声 一.第四单元UML两次作业架构设计 第 ...

  6. 2019OO第四单元作业总结&OO课程整体总结

    第四单元作业总结 第四单元的作业主题是UML图的解析,通过对UML图代码的解析,我对UML图的结构以及各种元素之间的关系的理解更加深入了. ------------------------------ ...

  7. 第四单元博客总结——暨OO课程总结

    第四单元博客总结--暨OO课程总结 第四单元架构设计 第一次UML作业 简单陈述 第一次作业较为简单,只需要实现查询功能,并在查询的同时考虑到性能问题,即我简单的将每一次查询的结果以及递归的上层结果都 ...

  8. OO课程学期末总结

    OO课程学期末总结 测试VS正确性论证 OCL vs JSF 对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式. 他是UML可选 ...

  9. OO课程总结

    OO课程总结 OO终于划上了句号,这学期熬夜熬得最多的一门课,掉了最多头发的一门课. 一.测试与正确性 测试是最最最常见的用来找到程序错误以及验证程序正确的手段,在之前的作业中,写完代码还是会存在很多 ...

随机推荐

  1. cocos2d JS 本地缓存存储登陆记住账号密码->相当于C++中的UserDefault

    在cocos-js 3.0以上的版本中,当我们用到本地存储的时候,发现以前用到的UserDefault在JS中并没有导出,而是换成了LocalStorage. 在LocalStorage.h文件中我们 ...

  2. 在PHP5.3以上版本运行ecshop出现的问题及解决方案

     ecshop 问题一:商城首页报错 Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\ ...

  3. Nginx.代理MySQL

    Nginx.代理MySQL 1. Nginx在安装的时候,需要加上一个参数:--with-stream 即Nginx安装指令为:./configure --prefix=/u01/app/nginx  ...

  4. mysql优化(二)

    一.客户端分担. 1.大量的复杂的运算放在客户端处理. 什么是复杂运算,一般我认为是一秒钟CPU只能做10万次以内的运算.如含小数的对数及指数运算.三角函数.3DES及BASE64数据加密算法等等.如 ...

  5. Rpgmakermv(31)MOG插件与YEP的结合

    问题简述: 因为我在开发时使用了gamequestsystem(任务插件),所以必须使用YEP_mainmenumanager; 此时,我又想加个MOG_Picture插件(图片收集插件): 当他们在 ...

  6. Unity AssetBoundle 打包流程

    1.准备打包资源,给要打包的资源添加一个AssetBoundle名字 2.在Scripts文件夹下新建一个子文件夹,命名为Editor(注意名字不能写错),新建一个打包资源的C#类,命名为BuildA ...

  7. html5-列表

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. uva 10163 Storage Keepers

    题意: 有n个仓库,m个人,一个仓库只能由一个人托管,每个人可以托管多个仓库. 每个人有一个能力值a,如果说他托管了k个仓库,那么这些仓库的安全值都是a/k. 雇佣一个人的花费也是a. 如果一个仓库没 ...

  9. python编程快速上手第7章习题20

    20.如何写一个正则表达式,匹配每 3 位就有一个逗号的数字?它必须匹配以下数字:'42''1,234''6,368,745'但不会匹配: '12,34,567' (逗号之间只有两位数字) '1234 ...

  10. 什么是UTF-8

    1)开篇啰嗦 感谢这篇博客,在网上转悠了好几天,觉得下面这篇博客我读起来最最容易理解 https://blog.csdn.net/guxiaonuan/article/details/78678043 ...