四单元总结&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的子类 ...
随机推荐
- c++ x86_x64挂钩函数 传递寄存器表
https://github.com/januwA/GameCheat #include "pch.h" #include <iostream> #include &l ...
- SPC空投火爆来袭!区块链技术落地加速!
经历市场狂热后,区块链逐渐恢复合理性,在政策红利.技术等多力推进下,各行各业开始涌入区块链行业.在这波浪潮中,SPC侧链代币项目显得格外亮眼,其空投已经发放至第二轮,仅SPC空投月收益就达23%左右, ...
- Javascript中的事件冒泡与捕获
事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数,useCapture:是否使用事件捕获,觉得有点模糊 Js事件流 页面的哪一部 ...
- Java自学no.1———带你初步认识java
什么是Java Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言.所谓编程语言,是 计算机的语言,人们可以使用编程语言对计算机下 ...
- tomcat部署项目问题
tomcat部署项目的时候,报内存溢出,一种解决方案是直接添加内存,网上都有教程,如下: Windows下,在文件/bin/catalina.bat,Linux下,在文件/bin/catalina.s ...
- 基于docker搭建jenkins
一.概述 Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎.Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各 ...
- python2与python3共存时的pip问题
在树莓派上同时安装有python2和python3,初始的pip是9.01版本,用pip install django只能安装到1.11版本,但是我需要2.0的django. 于是升级pip: pyt ...
- go 在crontab里面运行报错 解决方案
问题背景 你高高兴兴的写好了一个go脚本,放到你的服务器上,打算定期运行这个脚本,你打开crontab -e, 然后输入: */1 * * * * go run /root/test/main.go ...
- 002-LED闪烁
LED闪烁 功能:控制LED模块的小灯闪烁 #include<reg52.h> // 头文件 sbit LED = P2^0; // LED接低电平 void main() //主函数 { ...
- mpvue 开发微信小程序搭建项目
首先 mpvue 是一款基于vue的框架,mpvue 修改了 Vue.js 的 runtime 和 compile 实现,可以运行在小程序的环境中. 第一步:安装 vue-cli vue-cli是vu ...