OO课程第四次总结
终于来到了最后一次的OO作业,以博客作业的形式来终结也是极好的,回顾一下过去十六周自己的经历,感慨颇深。
测试和正确性论证
简单来说,测试的目的是将程序的代码做到全覆盖,从而确保每个分支都运行一遍,进而分析代码中是否有错误,错误出在哪里。这个方法是十分实用的,可以有效的找出自己代码中的错误,即很容易发现浅显的错误,但不容易发现隐晦的错误。编程的经验告诉我,确实存在那种执行了多条代码之后有了不一样的结果,一环套一环,这种情况虽然很难发现,但确实存在。而正确性论证则不同,它通过大量的穷举,基于repOK和jsf来论证正确性,可以说绝对正确,但时间复杂度实在太高了,远高于写这份代码的复杂度。
OCL和JSF
OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。自然语言是最易懂的,但是它是含混不清晰的。OCL取了自然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中同样的概念。如果你不喜欢当前的OCL表达方法,OCL规范还允许你定义自己的OCL符号集,这点是可以理解的,因为OCL有一个清晰的数学语义。
相同点在于它们都采取了自然语言和数学语言的折衷,采用了前置条件,后置条件和监护规则的模式,不同点在于OCL有着丰富性和完备的可计算性,更重量化。
UML图



总结
这一学期下来,我从最开始连Java都不怎么会编的菜鸟变成了现在能顺利通过OO的人,期间可谓受益匪浅。要谈到自己的进步的话,从第十四次作业可以看出来,以往的作业真的就是一个超级面向过程的作业,后来才真正的理解了面向对象。
四个章节从最开始的初次提到面向对象再到后面的多线程及线程安全,是编程能力的提升。抽象与规格则要求了规格化的编程,最后强调了工程化的质量。
有一个很简单的评测标准,那就是方法的行数,实不相瞒,最开始我的Java代码有过一百多行的方法,写它的jsf简直要把我写死了!后来到了出租车,基本上就没有了这种问题,但面对之前自己的作业,只能狠下心来重构了。也真真切切的了解到了面向过程和面向对象之间的差距,代码能力也会有显著提高。
我认为工程化开发最重要的是可移植性和便捷程度。因为一个工程需要一个团队合作完成,因此各自负责的部分必须要把接口写好,方便别人使用;同时程序内部虽然是一个黑箱,可这个程序后期是可能进行加工的,并且有可能不是原开发者加工维护,所以代码一定要简洁明了,符合规范。
我对课程的最大期望是,在文件系统的那一章作业,要么降低难度要么增加时间。我的能力有限,时间也无法全部放在OO一门课上,所以有限的时间内我无法保证作业的质量,分到一个心狠手辣的人我就被扣的不成样子,同样写的不好的同学却不会这样,这中间的落差很容易让人走向黑化的道路,进而病毒式的扩散到全系。老师或许会说,保证作业质量就不会有这样的情况了,说的太对了,可这个课的难度本身就应该让所有人努力一下就不会太惨才对,不应该有这一章作业存在,请老师好好考虑,不然像我这样运气不好的菜鸟只能在申诉之后面对助教一句“全部视为错误”之后想骂人了。关于这门课我真的没什么好赞美的,它让我学到了很多东西,面向对象的编程思想,节约时间的必要性等等,却也让我明白了黑暗森林体系中每个人能有多疯狂,吴际老师说将来每个人都会感谢这门课教会自己的东西,可我更喜欢另一个老师的这句话:“社会是复杂的,但希望我们尽量保持一颗纯洁的心”。与君共勉,继续努力
OO课程第四次总结的更多相关文章
- OO第四单元总结——查询UML类图 暨 OO课程总结
一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...
- 【OO学习】OO第四单元作业总结及OO课程总结
[OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...
- OO第四单元——基于UML的UML解析器总结&OO课程总结
OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...
- OO第四单元总结暨OO课程总结
一.第四单元作业总结 本单元的主要任务是对 Uml 图元素进行管理和查询,测试一开始会输入一个静态图,之后会对图中相关内容进行查询. 第13,14次作业 第14次作业新增内容很少,故与第13次作业放在 ...
- OO第四单元UML作业总结暨OO课程总结
目录 目录一.第四单元UML两次作业架构设计第一次作业第二次作业二.架构设计总结与OO方法理解演进三.测试理解与实践演进四.课程收获总结五.课程改进建议六.尾声 一.第四单元UML两次作业架构设计 第 ...
- 2019OO第四单元作业总结&OO课程整体总结
第四单元作业总结 第四单元的作业主题是UML图的解析,通过对UML图代码的解析,我对UML图的结构以及各种元素之间的关系的理解更加深入了. ------------------------------ ...
- 第四单元博客总结——暨OO课程总结
第四单元博客总结--暨OO课程总结 第四单元架构设计 第一次UML作业 简单陈述 第一次作业较为简单,只需要实现查询功能,并在查询的同时考虑到性能问题,即我简单的将每一次查询的结果以及递归的上层结果都 ...
- OO课程学期末总结
OO课程学期末总结 测试VS正确性论证 OCL vs JSF 对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式. 他是UML可选 ...
- OO课程总结
OO课程总结 OO终于划上了句号,这学期熬夜熬得最多的一门课,掉了最多头发的一门课. 一.测试与正确性 测试是最最最常见的用来找到程序错误以及验证程序正确的手段,在之前的作业中,写完代码还是会存在很多 ...
随机推荐
- 用xshell 连接docker Linux服务器
用xshell 连接docker Linux服务器
- (已解决)#warning:尚未配置[微信]URL Scheme:wx4868b35061f87884, 无法使用进行授权。
#warning:尚未配置[微信]URL Scheme:wx4868b35061f87884, 无法使用进行授权. (说白了就是注册白名单) ” -canOpenURL: failed for URL ...
- python知识补足
1.class的init功能,初始化class,给出一些初始值 __init__可以理解成初始化class的变量,取自英文中initial 最初的意思.可以在运行时,给初始值附值, class Cal ...
- Hibernate框架的第四天
## Hibernate框架的第四天 ## ---------- **回顾:Hibernate框架的第三天** 1. 一对多关联关系映射 * JavaBean的编写 * 编写映射的配置文件 * 使用级 ...
- sqli-labs(六)
第十一关: 这关是一个登陆口,也是一个sql注入的漏洞,也就是常说的万能密码. 在输入框账号密码种分别输入 1' 和1' 页面会报错. 后台使用的单引符号进行的拼接.账号输入1' or '1'=' ...
- phpcs
phpcs(代码规范) https://juejin.im/post/5b18fdeb6fb9a01e573c3cb3 https://laravel-china.org/docs/psr/psr-2 ...
- Android -- 打造我们的StepView
1,前两天我们分析了Github开源的StepView <自定义StepView实现个人信息验证进度条>,这两天想着想自己写一个,so,就有了这一篇文章,不废话,先看看实现的效果: 2,首 ...
- notepad怎么把空格替换成回车?
替换时选中“使用正则表达式”查找里输入\s替换里输入\r然后“全部替换”即可
- SQLSetStmtAttr
SQLSetStmtAttr 函数定义: Stmt是用来执行SQL语句的句柄,这个函数是用来设置她的属性的 SQLRETURN SQLSetStmtAttr( SQLHSTMT , 这是由游标 ...
- Python之装饰器的实例
1.1装饰器的应用:参数类型检查 函数参数的检查,一定是在函数外 函数应该作为参数,传入到检查函数中 检查函数拿到函数传入的实际参数,与形参声明对比 __annotations__属性是一个字典,其中 ...