四单元总结&OO总结
本单元架构总结
第一次作业

第一次作业按照UML正常的结构来组织,把某些UML中非底层类提取出来构建方法,采用逐层关联的方式实现内部的层次关系,同时考虑将来的需求,把一些没有用到的类也提取出来。
第二次作业

和第一次作业差别不大,任然是逐层关联的方式,每两层间不可见。区别是这次加了一个ElementData的分发器,把不同属性分发到类图 ,状态图,顺序图中。
第三次作业

和前两次大同小异,加入了异常处理模块。
架构设计总结
第一单元
第一单元可以说OO实验中最难的一个单元,难点主要在于WF的判断和字符串的解析上,在本单元中
我前两次作业都是直接采用map的方式,第三次作业为了减少重构,把第二次作业的表达式类直接重用
再加入了加减嵌套等类,结果由于表达式类覆盖范围太广给解析字符串造成了很大的麻烦。
第二单元
第二单元我认为是写得比较轻松的一个单元,本单元我一开始就提取到了调度器,电梯,还有输入的三个类,后面按照这个顺序写下去,不过第三单元由于分派策略出现问题,我采用的是最短距离的固定策略划分任务,没有考虑到多次换乘可能会带来的巨大开销,导致丢失了很多性能分。
第三单元
第三单元也是比较轻松的一个单元,这个单元基本架构jml都提供了,除了最后封装了一个算法类之外架构没有什么特别值得说的,但是这个单元给我最大的教训就是要做好充分的测试,不能依赖评测及。这单元由于测试不充分拿了一次零分一次四十五分血亏啊
对测试演进
对于测试的演进可以说是OO最大收获之一了。本学期中有三次作业促进了我对于测试的理解,第一次是OO的第一单元的第三次作业,这次作业由于我没有自动对拍&样例生产导致自己一直在手动构造样例,效率非常低下,想在想起来当初要是能写个自动生产样例的也不至于这么狼狈。第二次是第二单元的电梯,在研讨课上看到同学们的测试代码我的充分测试给惊到了,看了看自己的垃圾数据生成器,我暗下决心下一单元一定好好测试。第三次就是第三单元的作业了,第一次没有测试手动瞎测了一下,结果强测只有45分,有一个函数写错了。第二次作业自己用Junit进行了充分的测试,结果强测0分发现自己Junit写错了,,看到零分的时候整个人都没了于是从第三次作业我写了自动化的测试+Junit最后再找同学进行了对拍。对于测试也有了更深的认识,对于如何构造边界数据,如何对拍等方式有了更加深刻的理解,同时对于TDD如何驱动开发高质量软件有了进一步认识,比如预先设置WF等方式。
课程收获
OO课程中我收获了非常。主要来自于对于代码架构设计和对于代码认识的深入理解。
通过一二单元教会了我根据根据数据流和职责来构造相应类的架构设计方式,同时开始对于软件未来需求拓展
增加了更多注意了,在设计的模式方面,明白关注点集中,封装,SOLID等设计原则。
通过三四单元的学习我对于软件的设计有了一个更加宏大的脉络,特别是第四单元的学习,给我提供了一个
全新的认识代码的视角,譬如把代码构造成一个状态转移图的方式。我以前接触的状态机,都是对于外部的响应,而状态图中的状态变化是依据代码的逻辑来构造出来的,反映的是代码的结构。这也让我对于状态机的描述能力有了更加清晰地认识。
改进建议
1.我认为第一单元可以去掉性能分的条件,因为是刚开始第一单元的时候如果强调性能分会让有些同学把关注点放到性能上,而忽视架构。
2.我认为可以再课程早期强调一下同学间合作的重要性,鼓励同学们互相交流合作搭建自动化评测的方式,不然像某些呆呆社恐同学没错,就是我可能到学期末追悔莫及。
3.关于第三单元JML建议给自己搭建形式化评测机的方式,我看到有一位助教哥哥的blog里面好像有提及,因为感觉第三单元如果只是完成任务的化照葫芦画瓢一下就行了,最多封装几个算法。
线上学习体验
理论课
线上学习体验不错,可以倍速,可以选择时间,很nice
实验课&研讨课
线上学习体验一般,没有什么氛围。
作业
线上学习体验一般,没有面对面交流机会,加上自己比较捞,不怎么和人交流,感觉失去很多提高的机会。
四单元总结&OO总结的更多相关文章
- OO第四单元总结
单元架构设计 本单元OO作业主要涉及两个过程,即先根据输入的elements数组建立UML存储模型,而后基于这个模型实现一系列查询判断功能.汲取上单元的经验,建模过程中模型数据容器的选择依据要求实现的 ...
- 北航oo作业第四单元小结
1.总结本单元两次作业的架构设计 在我动手开始总结我的设计之前,我看了其他同学已经提交在班级群里的博客,不禁汗颜,我是真的偷懒.其他同学大多使用了新建一个类,用以储存每一个UMLelemet元素的具体 ...
- OO 第四单元总结
一.总结本单元两次作业的框架设计 1.1. 需求分析 通过分析mdj文件可知,两次作业如果对于时间复杂度没有要求,可以不涉及任何数据结构,直接根据读入的UML_ELEMENT逐个分析得到各个函数的结果 ...
- oo作业第四单元总结暨结课总结
目录 一.第四单元作业架构设计 1.第一次UML作业架构设计 2.第二次UML作业架构设计 二.架构设计和OO方法理解演进 三.测试理解与实践的演进 四.课程收获总结 五.三个具体改进建议 一.第四单 ...
- OO第四单元博客
第四单元博客 这个单元的作业,emmmm助教们做的工作还是一如既往的多,我们只负责添一添代码,最后一次作业了,感谢各位助教和老师,同时也希望我能顺利通过这最后一关. 架构设计 第一次作业架构展示 第一 ...
- OO第四单元总结——查询UML类图 暨 OO课程总结
一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...
- 2019年北航OO第四单元(UML任务)及学期总结
第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及 ...
- OO第四单元作业小结
一.本单元两次作业的架构设计 1.第一次作业 整体思路:以class为核心,建立MyInterface.MyAttribute.MyOperation.MyAssociation四个类分别储存每个类的 ...
- 【OO学习】OO第四单元作业总结及OO课程总结
[OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...
随机推荐
- windows 隐藏desktop.ini文件
原文 在文件夹选项>查看 勾选"隐藏受保护的操作系统文件(推荐)"选项
- C++算法代码——阿克曼函数
题目来自: 题目描述 阿克曼( Ackmann) 函数 A(x, y) 中, x, y 定义域是非负整数, 函数值定义为: 输入 输入两个数,表示m和n. 两个数均不超过10. 输出 输出一个数,表示 ...
- iOS写在定制相机之前
问题 不是所有的拍照UIImagePickerController都能搞定,理由如下: 1.产品不整点幺蛾子,哪来体验创新 2.设计不整点幺蛾子,怎能体现用心 3.运营:这体验跟某宝某信咋不一样??? ...
- vue项目配置 `webpack-obfuscator` 进行代码加密混淆
背景 公司代码提供给第三方使用,为了不完全泄露源码,需要对给出的代码进行加密混淆,前端代码虽然无法做到完全加密混淆,但是通过使用 webpack-obfuscator 通过增加随机废代码段.字符编码转 ...
- hive复杂数据类型的用法
目录 1.简单描述 2.测试 1.简单描述 arrays: ARRAY<data_type> maps: MAP<primitive_type, data_type> stru ...
- bootstrap日期范围选择插件daterangepicker详细使用方法
插件官方网站地址 bootstrap-daterangepicker是个很方便的插件,但是对我这种菜鸟来说,文档不够详细,摆弄了好久才整好.记录下来供以后参考,也希望能帮到有需要的朋友. 目前版本是2 ...
- Java RPC 框架 Solon 1.3.9 发布,更便利的支持
Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...
- POJ-2516(最小费用最大流+MCMF算法)
Minimum Cost POJ-2516 题意就是有n个商家,有m个供货商,然后有k种商品,题目求的是满足商家的最小花费供货方式. 对于每个种类的商品k,建立一个超级源点和一个超级汇点.每个商家和源 ...
- 什么原因才是阻碍Linux桌面发展的罪魁祸首
我大概2000年上大学在宿舍开始玩Linux,到现在20年了!也算是最早一批痴迷于Linux桌面用户啦!记得当时的毕业设计BBS论坛开发就是在Mandrake Linux(后改名Mandriva,一种 ...
- ORM思想解析
ORM思想解析 qq_16055765 2019-01-10 11:29:08 1688 收藏 1 分类专栏: # hibernate 最后发布:2019-01-10 11:29:08首次发布:201 ...