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终于划上了句号,这学期熬夜熬得最多的一门课,掉了最多头发的一门课. 一.测试与正确性 测试是最最最常见的用来找到程序错误以及验证程序正确的手段,在之前的作业中,写完代码还是会存在很多 ...
随机推荐
- Python对list列表及子列表进行排序
python代码,对list进行升序排序,所有子列表也要进行排序 def iterList(listVar): listVar = sorted(listVar) for i,v in enumera ...
- python No tests were found问题解决方法
由于刚刚开始用python去写测试接口框架,在写的过程中遇到No tests were found问题 原因:python中unittest框架是以Test开头的方法,所以定义方法或类不能以Test开 ...
- phpstudy的使用
1.第一步是下载phpstudy,你可以百度去下载,也可以通过下面我分享的网盘下载 链接:https://pan.baidu.com/s/1E_CXIrKv1N-jrlA4KCovZA 密码:mkx9 ...
- js跨域需要token。
将rems从tms中独立出来以后,每次都需要先打开tms,再打开rems,如果我足够聪明,那么很容易可以分析得到原因. 第一,会导致跨域出现问题的易错点就那么几个,是否加上“Access-Contro ...
- Nginx加载ngx_pagespeed模块,加快网站打开的速度
[页面加速]配置Nginx加载ngx_pagespeed模块,加快网站打开的速度 ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升 ...
- laravel service provider
https://laravel-china.org/articles/6189/laravel-service-provider-detailed-concept https://oomusou.io ...
- vue搭建环境并创建项目
1.>npm install @vue/cli -g 2.创建项目A a.>vue ui b.在弹出的管理界面创建项目 或 a.npm install -g @vue/cli-init b ...
- 基于MySQL提供的Yum repository安装MySQL5.6
基于MySQL提供的Yum repository安装MySQL5.6 1:下载YUM包 1.1切换到root用户: 1)su - root 2)wget http://dev.mysql.com/ge ...
- <1>Cocos Creator安装和启动
学习之间需要了解JavaScritp基本语法和面向对象,详情参考https://blog.csdn.net/jadeshu/article/category/7476938 1.下载Cocos Cre ...
- Sql server 存储过程批量插入若干数据。
测试时,经常需要生成大量数据来测试系统性能,此功能可以用存储过程快速生成. 1. 随机生成日期 DECLARE @Date_start datetime DECLARE @Date_end datet ...