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. GROUP BY关键字优化

    1.group by实质是先排序后进行分组,遵照索引建的最佳左前缀 2.当无法使用索引列,增大max_length_for_sort_data参数的设置+增大sort_buffer_size参数的设置 ...

  2. C# Base64加解密

    using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...

  3. 搭建jumperserver堡垒机管理万台服务器-1

    搭建jumperserver堡垒机管理万台服务器-1 1  Jumpserver堡垒机概述-部署Jumpserver运行环境 2  安装Coco组件 3  安装Web-Terminal前端-Luna组 ...

  4. 10年前文章_iscsi initiator 设置

    发现和查找 target, iscsiadm -m discovery -t sendtargets -p 192.168.1.1:3260 登录 iscsiadmin -m node -l 退出登录 ...

  5. qt console 控制台程序 与win console控制台程序是不同的

    #include <QtCore/QCoreApplication> int main(int argc, char *argv[]){ QCoreApplication a(argc, ...

  6. Spring缓存机制(转)

    Spring的缓存机制非常灵活,可以对容器中任意Bean或者Bean的方法进行缓存,因此这种缓存机制可以在JavaEE应用的任何层次上进行缓存. Spring缓存底层也是需要借助其他缓存工具来实现,例 ...

  7. Python核心技术与实战——四|Python黑箱:输入与输出

    抽象的看,Python程序可以被看成一个黑箱:通过输入流将数据送达,经过处理后在输入,也就是说具备了一个图灵机运作的必要条件. 输入输出基础 最简单的输入是来自键盘的操作 name = input(' ...

  8. 磁盘,fdisk分区,MBR,dd命令

    光盘和磁盘.u盘.软盘.硬盘有什么区别 ①光盘: cdrom/dvdrom:光驱(光盘驱动器)    rom:只读    ram:可以擦写    cd:700M    dvd:4G ②软盘:flopp ...

  9. bzoj4764 弹飞大爷 LCT

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4764 题解 如果 \(a_i > 0\) 的话,那么就是 bzoj2002 的原题.直接 ...

  10. 前端每日实战:122# 视频演示如何用纯 CSS 创作一个苹果系统的相册图标

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/zJKwbO 可交互视频 此视频是可 ...