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第四单元单元总结的更多相关文章

  1. OO 第四单元总结

    一.总结本单元两次作业的框架设计 1.1. 需求分析 通过分析mdj文件可知,两次作业如果对于时间复杂度没有要求,可以不涉及任何数据结构,直接根据读入的UML_ELEMENT逐个分析得到各个函数的结果 ...

  2. UML结构与解析——BUAA OO第四单元作业总结

    UML与解析架构 UML是什么 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编 ...

  3. OO第四单元博客

    第四单元博客 这个单元的作业,emmmm助教们做的工作还是一如既往的多,我们只负责添一添代码,最后一次作业了,感谢各位助教和老师,同时也希望我能顺利通过这最后一关. 架构设计 第一次作业架构展示 第一 ...

  4. OO第四单元总结——查询UML类图 暨 OO课程总结

    一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...

  5. 2019年北航OO第四单元(UML任务)及学期总结

    第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及 ...

  6. OO第四单元作业小结

    一.本单元两次作业的架构设计 1.第一次作业 整体思路:以class为核心,建立MyInterface.MyAttribute.MyOperation.MyAssociation四个类分别储存每个类的 ...

  7. 【OO学习】OO第四单元作业总结及OO课程总结

    [OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...

  8. 返璞归真——OO第四单元总结暨学期总结

    本次作业是第四单元的最后一次作业,也是本学期面向对象的最后一次作业,在此我将分别对第四单元和整个学期进行总结. 一.本单元的两次作业 第四单元的作业是关于UML的一些处理.UML语言是一种区别于具体语 ...

  9. OO第四单元(UML)单元总结

    OO第四单元(UML)单元总结 这是OO课程的第四个单元,也是最后一个单元.这个单元只有两次作业,相比前三个单元少一次作业.而且从内容上讲这个单元的作业目的以了解UML为主,所以相对前三个单元比较简单 ...

随机推荐

  1. AFNetworking2.0源码解析<四>

    结构 AFURLResponseSerialization负责解析网络返回数据,检查数据是否合法,把NSData数据转成相应的对象,内置的转换器有json,xml,plist,image,用户可以很方 ...

  2. linux 深入应用 NFS

    以下实验大家用主机名来区分服务器端和客户端, 服务器端为 NFS_Server ip-192.168.1.4: 客户端为 NFS_Client ip-192.168.1.5: 实例一 将/tmp 分享 ...

  3. 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 ...

  4. Codeforces 959 树构造 暴力求最小字典序互质序列

    A B C 题目给你一个结论 最少需要min((odd,even)个结点可以把一棵树的全部边连起来 要求你输出两颗树 一棵树结论是正确的 另外一棵结论是正确的 正确结论的树很好造 主要是错误的树 题目 ...

  5. nginx_mirror_module流量复制在项目中的应用

    参考文档:https://my.oschina.net/andChow/blog/2873870 https://blog.csdn.net/lancerh/article/details/88645 ...

  6. 开发过程中git的使用

    使用clone命令可以直接将git添加到本地库: 主要是针对分支的操作: 首先可以将创建一个属于自己的分支并往上面提交代码,最后合并到dev分支和master分支上面: 前提(master已经有一个文 ...

  7. bzoj4129 Haruna’s Breakfast 树上带修莫队+分块

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4129 题解 考虑没有修改的序列上的版本应该怎么做: 弱化的题目应该是这样的: 给定一个序列,每 ...

  8. SpringCloud学习系列-微服务

    最近和尚硅谷周阳老师学习了Spring Cloud感觉有必要在这里做下笔记和总结. 软件系统架构演变 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用 ...

  9. 完美解决linux不能编辑sshd_cofig和实现xshell远程连接的问题

    第一步:我们使用命令行vim /etc/ssh/sshd_config   执行修改,强制保持  :wq!  系统不让我们修改这个文件 "/etc/ssh/sshd_config" ...

  10. web大文件下载+断点续传

    实现原理(1)首先获得下载文件的长度,然后设置本地文件的长度.(2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置.如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条 ...