OO课程总结
OO课程总结
OO终于划上了句号,这学期熬夜熬得最多的一门课,掉了最多头发的一门课。
一、测试与正确性
测试是最最最常见的用来找到程序错误以及验证程序正确的手段,在之前的作业中,写完代码还是会存在很多bug,这些bug基本上都是通过测试来进行的。构建小的简单的测试样例,用来测试基本的功能,复杂的测试样例,用来测试捎带等特殊情况。
测试的优点在于,简单快捷,通过一个实际的测试样例来比对程序运行的结果和理论结果,如果相同,说明测试的功能或者模块是对的,如果不相同,说明错误。结果决定了这条测试的有效性,对比很快,测试本身不在意程序的具体实现,只是运行得到结果,出现了错误,则需要程序猿去定位错误。有效的测试数据能够规避大部分的程序错误。举个栗子,一段简单的#define pow(x) x*x,由于括号的的存在,使得这宏定义函数并不能完成应当完成的功能,从程序正确性角度很难发现问题,但是如果构造了pow(2+1)结果就会出现错误,bug就可以被定位。
测试的缺点在于,不完全。对于测试来说,想要实现全覆盖是很困难的,尤其是对于比较复杂的情况,可以实现,但是需要花费巨大的精力,无法体现简单快捷的优点。
而对于正确性论证来说,覆盖的全面就是优点。在正确性论证之前,其实我一直不太清楚JSF的正确使用方法,在论证正确性的过程中,JSF的作用立马就显现了出来,如果没有JSF,就无法得知论证过程中,需要论证的是什么。在论证的过程中,我发现了自己的代码有些繁琐,有些地方甚至是毫无用处的代码,我在论证作业中进行了整理与优化。
二、OCL语言:
OCL(object constraint language)对象约束语言,一种用来进行约束定义的,形式化的无二义的语言。作为形式化语言,有以下基本语言要素,类型,操作,表达式,语句。其中,表达式有个叫做上下文的概念,表示这个表达式所作用的范围,可以是类,类的属性和操作。
简单来说,OCL中拥有了一个编程语言需要的几种必要元素,而JSF更像是一种规范,要比OCL简洁自由很多。
三、第十四次作业
1、UML类图
2、顺序图
3、状态图
四、总结:
1、四个单元
第一个单元注重入门,现在来看第一个单元的三次作业都比较简单,多项式,简单的电梯,ALS电梯,现在来看,这三次作业对于初学者的我来说,花了很多功夫在设计以及适应java语法上。逐步优化,这三次作业基本能够适应java语言,但是让我现在再回头去看,写的十分菜,简直看不下去
第二个单元比较注重设计,起码在我编程过程中,我花了很大功夫在设计具体的类结构,数据结构上
第三单元注重工程化设计,包括JSF等等,逐次增加需求
第四单元注重于项目本身,不在局限于代码层面,包括正确性论证,junit测试,是从未接触过的船新版本
2、自己的体会
四个单元的单元式递进式设计,要比别的学校的面相对象课程难全系统很多,也更有实践性。从开始使用java都磕磕绊绊,到突然处理多线程的懵逼,到能够处理多线程问题,真的觉得自己的代码能力得到了很大的提升,熬的夜没有白熬。但是代码还是又臭又长,还需要继续码码码
经过了一个学期的OO洗礼,印象最深刻的两件事之一就是第三次作业被无效作业之后,IFTTT周三中午程序还有一个巨大的bug,甚至影响到了程序的正常运行,心态几乎崩溃,好在赶回宿舍成功找到了bug。有很多收获,更多的是教训,还能做的更好,这方面要感谢OO课程和上学期的计组课程,成长了很多。
3、对工程化开发的理解
工程化开发是OO课程另一个核心内容。从JSF到后面的Junit测试,都体现着工程化开发。一个100行的oj题,1个月以后基本就不太能记得这个函数是干嘛的,得重新看。我理解的工程化是一种更适合大项目,更适合管理的开发方式。但是对于以后的项目开发就很有益。
4、对课程的建议
1,互测与公测的关系,我是一个公测受害者,没错,公测被判无效是个挺难受的事,因为一条输出中的某一条指令缺了一个符号就被挂了所有公测点,于是换了个无效。我承认这是我自己的疏忽,无关课程组,但是我想很多有过无效经历的同学都有同感,不是因为分数没了,而是自己三四天的努力因为个人信息或者一个微小的失误没有任何的回报。
2,基于以上,建议是
个人信息应当适当放松,由助教进行管理,让学生还需要花精力在个人信息一类的细枝末节实为本末倒置。至于我这种错误,怎么说呢,我只是希望有人再因为这种低级错误被无效
3,临时变需求其实都是(指导书)的锅,助教群信息不对等,重要信息可能被水。。大家都懂
4,OO的互测机制注定了猜疑链是不可能解决的
最近接触了一丢丢Spring框架,AOP依赖注入之类的概念是在课程中完全没有涉及到的。不管是国内还是国外,计算机课程都存在跟不上潮流的问题。我记得斯坦福曾经开过ios开发课程,讲oc,但是很快就被swift替代了。
这些框架可以在课程结束中稍微实践一下(当然,可能难度更高了,没事,反正不是我学*-*)
OO课程总结的更多相关文章
- OO课程第三次总结QWQ
调研,然后总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 emmm为这个问题翻遍百度谷歌知乎也没有得到答案,那我就把自己认为最重要的两点简要说明一下吧,欢迎大家补充~ 1.便于完成代码的重用 ...
- OO课程中IDEA相关插件的使用
写在前面 由于OO课程博客作业的需要分析代码的复杂度并绘制UML图,但是课件上推荐的分析工具(http://metrics.sourceforge.net )经过自己几个小时的折腾还是没有安装成功 ...
- OO课程学期末总结
OO课程学期末总结 测试VS正确性论证 OCL vs JSF 对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式. 他是UML可选 ...
- 面向对象设计与构造:oo课程总结
面向对象设计与构造:OO课程总结 第一部分:UML单元架构设计 第一次作业 UML图 MyUmlInteraction类实现接口方法,ClassUnit和InterfaceUnit管理UML图中的类和 ...
- OO第四单元总结——查询UML类图 暨 OO课程总结
一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...
- 【OO学习】OO第四单元作业总结及OO课程总结
[OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...
- OO课程的完结,软件工程学习的开始
目录 UML小结 阅读学习 大象:Thinking in UML UML精粹 UML和模式应用 本单元作业的架构设计 四个单元中架构设计及OO方法的演进 四个单元中测试与实践的演进 课程收获 三个具体 ...
- OO第四单元——基于UML的UML解析器总结&OO课程总结
OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...
- OO第四单元总结暨OO课程总结
一.第四单元作业总结 本单元的主要任务是对 Uml 图元素进行管理和查询,测试一开始会输入一个静态图,之后会对图中相关内容进行查询. 第13,14次作业 第14次作业新增内容很少,故与第13次作业放在 ...
随机推荐
- 使用Hugo搭建个人博客站点
Hugo是个什么东东这里直接忽略,想了解的请查阅其他资料,我们直接上手操作. 安装Hugo 到 Hugo Releases 下载对应的操作系统版本的Hugo二进制文件 解压后得到 hugo_0.17_ ...
- PRINCE2的优势有哪些?
PRINCE2之所以迅速发展的原因之一是许多企业认识到建立适合自己企业的项目管理标准是一项耗时耗财的工作. 他们至少要花费6-12个月.成千上万个工时来建立一套方法,而这只是最初的成本. 之后他们必须 ...
- C#--动态加载DLL,通过反射调用参数,方法,窗体
一些文章: 反射插件插件 http://bbs.csdn.net/topics/391950257?page=1 反射窗体 http://www.sufeinet.com/thread-2984-1- ...
- vuejs plus d3
vuejs 是一个数据驱动视图的前端框架,一切皆可以作为可重用的组件加以使用. d3则是数据可视化javascript库,如何将二者的长处相结合是一个挑战. https://tyronetudehop ...
- 基于bootstrap的模态框的comfirm弹窗
完成的效果如下: html代码如下: <button id="btn">点击弹出弹框</button> <!-- 弹出框 --> <div ...
- winform ComboBox控件反选
winform ComboBox控件反选:int index = comboBox1.FindString(textBox2.Text); comboBox1.SelectedIndex = inde ...
- 文件复制(shutil)
import shutil #拷贝整个目录树 shutil.copytree('d:\\aaa','e:\\aaa') #目标文件夹(e:\aaa)必须不存在 shutil.rmtree('e:\\a ...
- 浅析Linux操作系统是如何工作的(思维导图)
SA***189 多任务计算机运转机制如下思维导图所示: 小结: Linux操作系统是一个在时钟的节拍下,各个模块紧密协作.密不可分的整体,而整个Linux系统都是建立在存储程序的基础之上,正是有了程 ...
- WINDOW各种命令
- Asp.Net MVC Identity 2.2.1 使用技巧(七)
创建角色管理相关视图 1.添加视图 打开RolesAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系统会弹出 ...