OO终章--总结博客
一、测试与正确性论证的比较
从方法上看,测试是使用大量测试样例来覆盖测试代码,从而能够检测代码的实现是否正确,功能是否完善。而正确性论证是使用代码的规格和逻辑进行严密的推论和证明,从而验证代码的实现正确性。从优缺点来看,测试的优点在于能够直观地看出测试的结果是否正确,而缺点在于难以构造覆盖完整的测试集;正确性论证的优点在于能够保证正确性和覆盖率,但是不够直观,而且论证错误不易察觉,也就是不易二次检查。
因此,在对一个程序进行设计测试检查的时候,需要二者同时使用,相互补充,使用测试集测试程序功能的完备性,使用正确性论证验证代码的逻辑正确性和严密的覆盖所有代码,这样才能对程序进行充分的测试验证。
二、OCL与JSF的比较
OCL,即Object Constraint Language, 中文译为对象约束语言。OCL是一种用来在指定的模型单元上施加约束的语言。同时OCL也不仅用来写约束,还能够对UML图中的任何元素写表达式。OCL是约束和查询语言,有一个形式化的数学语义,并且允许用户定义自己的OCL符号集。
与JSF的相同之处:OCL和JSF都是形式化的语言,都有同样的规格即前置、后置条件以及不变式。
与JSF的不同之处:JSF基本上使用的是逻辑表达式,少量使用自然语言。而OCL的表达式具有类型,且数据也有基本类型,这点和JSF有较大区别。
三、UML图
类图:
时序图:
状态图:
四、学期总结
1. 知识点总结:
第一阶段:从多项式加减到ALS电梯,一个入门的阶段,主要的知识是面向对象编程的思想,以及java语言一些基础的语法,比如正则匹配等等,较为简单,属于经验怪,前期给玩家升级用的。
第二阶段:从多线程电梯、IFTTT到第一次出租车作业,一个逐渐熟悉的阶段。主要讲解了多线程的机制,竞争和同步机制、文件监测和操作等等知识,同时对规格有了一定的要求,代码质量也更高了。这属于精英怪,对于在第一阶段没有花时间认真打怪升级的玩家来说,可能就会被这个阶段的精英怪秒杀了,然后消耗一次复活(无效作业)的机会来从头打怪升级,苦肝到深夜。
第三阶段:对出租车进行功能上的完善,添加了许多功能。这个阶段主要是对程序有了规格化要求的设计,包括JSF规格的书写,和程序的规格化设计,在总体的代码量上也有显著提升。属于boss级别的怪物,需要苦战几日,熬夜连战,才能最后干掉boss。
第四阶段:这个阶段的主要作业是对以往的代码进行验证和测试,以及正确性论证。虽然总体作业量小了很多,不用写大量代码,也不用构造复杂的结构。但是这个阶段的知识是很重要的,放在课程的最后,重要性也不言而喻。
2. 个人总结:
从一开始的多项式加减,到最后的功能强大的出租车,总共9次编程作业,说多不多,说少不少,总而言之,对于我的编程能力还是有较大提升的。最开始的作业,对于面向对象的思想还是不够理解,写出来的程序只是有面向对象的外壳,但是实际上还是一个面向过程的程序,一个方法占了100多行,质量也不高,debug还十分困难。到最后几次作业时,对面向对象已经有了比较深入的见解,对类和方法的区分比较严格,方法的代码量也不多,嵌套深度也少了,把各个模块和功能安排得比较明白,质量有了明显的提升,debug也容易多了。尽管如此,但还是有一些不足的地方,需要更深入的学习。
3. 工程化开发:
我认为工程化开发就是,首先需要规范设计好每个功能的规格。然后将各个功能的实现分发给不同的程序员实现,团队的各个成员负责自己的模块,同时又可以相互协调合作,提高总体效率,降低成本。在此基础上,良好的规格化设计和封装是必要的,大部分程序需要实现大量的功能,这对于工程化开发是必不可少的条件。
4. 对课程的建议:
其实要说平时的吐槽倒挺多的,真要给实际建议的时候,还找不到几条。首先就是指导书的问题,我相信绝大部分的同学都会提到这个,指导书写的实在是很粗糙,对于一些细节上的问题,还有几次作业的扣分点都交代得不清楚。有很多次情况就是,一些摸棱两可的问题,一开始说readme自行定义,然后发现这些条件又是必要的,在提交作业前突然通知说要改指导书的内容,这让很多同学心态会崩的。还有就是在issue里提到要更改的地方,没有正式的通知,最后询问得到的结果是自己没看issues。虽然有各种吐槽,但确实找不到更好的替代方法,包括互测的面向运气得分机制。希望学弟学妹们能存活吧。。
OO终章--总结博客的更多相关文章
- OO第4次博客作业
OO第4次博客作业 一.第4单元设计 第四单元主要围绕UML图的结构进行JAVA代码编写,对JAVA的层次结构进行更多的认识.个人认为编程操作在实质上与上一章的PathContainer有许多的相同之 ...
- OO第二单元优化博客
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...
- OO第一单元优化博客
OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)\)和\(cos(x)\)的指数作为坐标,在图上画出来就可 ...
- OO第四次博客作业!
oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- OO第三次博客作业——规格
OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- OO第四单元博客作业
OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
- OO第四单元博客
第四单元博客 这个单元的作业,emmmm助教们做的工作还是一如既往的多,我们只负责添一添代码,最后一次作业了,感谢各位助教和老师,同时也希望我能顺利通过这最后一关. 架构设计 第一次作业架构展示 第一 ...
- OO第四次博客作业(第四单元作业及期末总结)
(注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1 我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不 ...
随机推荐
- 初次接触ARM开发,理清这四个开发思路很重要!
初次接触ARM开发,理清这四个开发思路很重要! 由于涉及编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清其中的开发思路,找到一个好的起点.本文就将从这一步入 ...
- 【vue】vue生命周期解读 (流程+钩子函数)
参考详细说明一波简书 (vue中钩子函数解读) 1.实例渲染流程 2.生命周期钩子函数比 钩子函数详解简书一 钩子函数详解简书二
- 参加360前端星计划总结(二)--HTML&CSS
HTML学习手册(英文版)html:the living standard 重要知识点 文档声明的作用a. 指定html的文档标准和版本b. 告诉浏览器渲染模式,有怪异模式(较为古老的模式,不写文档声 ...
- springboot activiti 整合项目框架源码 shiro 安全框架 druid 数据库连接池
官网:www.fhadmin.org 工作流模块--------------------------------------------------------------------------- ...
- jquery 中的dom操作
jquery DOM 分为元素操作.属性操作.样式操作. 一.元素操作 1.查找 ①工具:jQuery选择器 2.创建和添加 ①代码格式:变量 = $('要创建的元素'): 注意点: 1 要使用标准的 ...
- 3-[HTML]-head标签介绍
1.head标签 我们首先来介绍一下head标签的主要内容和作用,文档的头部描述了文档的各种属性和信息,包括文档的标题.编码方式及URL等信息,这些信息大部分是用于提供索引,辩认或其他方面的应用(移动 ...
- 2-[HTML]--介绍
1.HTML简介 HTML,全称是超文本标记语言(HyperText Markup Language),它是一种用于创建网页的标记语言.标记语言是一种将文本(Text)以及文本相关的其他信息结合起来, ...
- 01- ajax, 登录验证,json数据,文件上传
1.ajax简介 1.向服务器发送请求的途径 # 向服务器发送请求的途径 1. 浏览器地址栏,默认get请求 2. form表单: get请求 post请求 3. a标签,默认get请求 4. Aja ...
- 使用SDNN (space displacement neural network)进行多字体手写识别
手写单字体的识别,在看过卷积神经网络的mnist例子之后,很容易实现,那么如何实现多字体的同时识别呢? 如下图 LeCun大神所用的是SDNN space displacement neural ne ...
- P3707 [SDOI2017]相关分析
P3707 [SDOI2017]相关分析 线段树裸题?但是真的很麻烦QAQ 题目给的式子是什么不用管,大力拆开,就是\(\frac{\sum x_iy_i-\overline xy_i-\overli ...