OO第四单元单元总结
1.本单元两次作业的架构设计
第四单元的两次作业,我的表现都不是很好,在强测中发现了许多BUG,一方面我认为是由于自己对于UML的相关概念掌握的还不是很到位,另一方面,我觉得这一单元的指导书许多地方感觉没有考虑很完备,以致于在反复修改中,把自己搞糊涂了。下面具体讲一下我的相关架构设计思路。
1.1第一次作业
第一次作业我采用的设计是,将UMLElement下的各个子类分别用一个arraylist来存储,以便查询。同时,我把类视作一个容器,设置了一个MyClass类,把与该类相关的属性和方法全都封装在里面,这样查询的时候就只需要查询MyClass类的对象就行了。

然后对于各个方法的具体实现,在这里就不加以赘述了,因为这次作业其实质是考察对于类图的熟悉程度,在搞懂了相关概念的基础上,实现具体的查询操作其实可以很无脑的(由于时间很充分,所以大多数查询可以采用暴力,而且不需要进行缓存,以保证正确性)
1.2第二次作业
第二次作业我采用的设计是,关于类图部分延用第一次的设计,关于状态图和顺序图的部分,则是直接在MyUmlGeneralInteraction里面实现
同样类似的在MyUmlGeneralInteraction里通过ArrayList来存储有关顺序图和状态图的各个组成元素,并在构造方法中完成初始化。

2.四个单元中架构设计及OO方法理解的演进
第一单元——多项式求导
第一单元是初识面向对象,对于Java语言也不是很熟悉。记得对于多项式求导思考问题的时候还是特别偏向函数式和过程式,并没有明确的对象观念,也没有对类有一个明确的认识,所以代码显得很长,层次性很差,现在看起来感到又奇怪又难受。
第二单元——多线程电梯
第二单元接触了多线程的设计,也算是一次挑战,对于多线程,我以前没有接触过,刚开始接受起来还觉得有点困难,但是在把多线程大概搞得有点明白的时候,就感受到多并发编程的乐趣, 然后把电梯问题分成电梯、人、调度器,用分层的思想来解决问题,也算是勉强把这单元的任务给完成了,虽然在实现的过程中还是遇到了许多的困难,也在强测中发现了一些bug,但是那些属于细节问题,又得另说吧。
第三单元——JML与地铁线路图
第三个单元主要考察的是性能,许多人戏称是数据结构单元,因为这个单元涉及到许多图论算法,一不小心就容易tle,所以重点考察的是算法,弱架构。但是实际上架构也是需要思考的,重点的部分是,如何去存储图和每次查询的缓冲数据,并且保持一定的封装性。但其实这个问题,官方已经给出了比较优秀的解题思路,那就是Path->Graph->RailwaySystem,三次作业本身的层层递进其实就解决了架构设计的相关问题。
第四单元——UML的解析
第四单元是实现UML解析器,包括类图、状态图、和顺序图。所以相关的架构设计也主要是围绕构建三种图和相关的子元素。所以架构的核心是搞懂三种图中,元素间的组成关系,以及与之对应的继承、关联、实现等相关关系。到了第四单元,程序整体的架构已经十分完善了,回想起来,这或许就是OO带来的变化吧。
3.测试理解与实践的演进
第一单元是使用了JAVA库来通过正则表达式生成数据,并通过sympy库得到正确答案,然后随机暴力测试。
第二单元由于是多线程任务,个人觉得不是很好测试,于是乎并没有进行相关的测试。
第三单元通过Junit进行精确位置的测试。
第四单元通过画图构造样例来测试。
四个单元下来,感觉测试这个没有固定的思路,只能说根据不同的任务有着不同的测试重心和策略。
4.课程收获
课程最大的收获就是对Java语言的认识,以及对OO的设计思想有了一定的了解,并且有了一定的实战基础。虽然OO的路还很长,很多东西都还不会,但是上完这门课之后,我觉得基础是够了,一个用来自学的基础是已经有了。此外在这门课上还遇到了许多热心的同学,和厉害的大佬,也算是一段有趣的经历吧。
5.给课程的改进建议
1.希望合理分配理论课和实验课之间的内容设置。
2.关于UML、JML希望有更详细的讲解。
3.希望指导书的说明能够再准确一些。
OO第四单元单元总结的更多相关文章
- OO 第四单元总结
一.总结本单元两次作业的框架设计 1.1. 需求分析 通过分析mdj文件可知,两次作业如果对于时间复杂度没有要求,可以不涉及任何数据结构,直接根据读入的UML_ELEMENT逐个分析得到各个函数的结果 ...
- UML结构与解析——BUAA OO第四单元作业总结
UML与解析架构 UML是什么 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编 ...
- 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的子类 ...
- 返璞归真——OO第四单元总结暨学期总结
本次作业是第四单元的最后一次作业,也是本学期面向对象的最后一次作业,在此我将分别对第四单元和整个学期进行总结. 一.本单元的两次作业 第四单元的作业是关于UML的一些处理.UML语言是一种区别于具体语 ...
- OO第四单元(UML)单元总结
OO第四单元(UML)单元总结 这是OO课程的第四个单元,也是最后一个单元.这个单元只有两次作业,相比前三个单元少一次作业.而且从内容上讲这个单元的作业目的以了解UML为主,所以相对前三个单元比较简单 ...
随机推荐
- AFNetworking2.0源码解析<四>
结构 AFURLResponseSerialization负责解析网络返回数据,检查数据是否合法,把NSData数据转成相应的对象,内置的转换器有json,xml,plist,image,用户可以很方 ...
- linux 深入应用 NFS
以下实验大家用主机名来区分服务器端和客户端, 服务器端为 NFS_Server ip-192.168.1.4: 客户端为 NFS_Client ip-192.168.1.5: 实例一 将/tmp 分享 ...
- Educational Codeforces Round 55 (Rated for Div. 2) D. Maximum Diameter Graph (构造图)
D. Maximum Diameter Graph time limit per test2 seconds memory limit per test256 megabytes inputstand ...
- Codeforces 959 树构造 暴力求最小字典序互质序列
A B C 题目给你一个结论 最少需要min((odd,even)个结点可以把一棵树的全部边连起来 要求你输出两颗树 一棵树结论是正确的 另外一棵结论是正确的 正确结论的树很好造 主要是错误的树 题目 ...
- nginx_mirror_module流量复制在项目中的应用
参考文档:https://my.oschina.net/andChow/blog/2873870 https://blog.csdn.net/lancerh/article/details/88645 ...
- 开发过程中git的使用
使用clone命令可以直接将git添加到本地库: 主要是针对分支的操作: 首先可以将创建一个属于自己的分支并往上面提交代码,最后合并到dev分支和master分支上面: 前提(master已经有一个文 ...
- bzoj4129 Haruna’s Breakfast 树上带修莫队+分块
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4129 题解 考虑没有修改的序列上的版本应该怎么做: 弱化的题目应该是这样的: 给定一个序列,每 ...
- SpringCloud学习系列-微服务
最近和尚硅谷周阳老师学习了Spring Cloud感觉有必要在这里做下笔记和总结. 软件系统架构演变 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用 ...
- 完美解决linux不能编辑sshd_cofig和实现xshell远程连接的问题
第一步:我们使用命令行vim /etc/ssh/sshd_config 执行修改,强制保持 :wq! 系统不让我们修改这个文件 "/etc/ssh/sshd_config" ...
- web大文件下载+断点续传
实现原理(1)首先获得下载文件的长度,然后设置本地文件的长度.(2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置.如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条 ...