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. .net 正则表达式

    string RegStr = @"^[0-9]*[1-9][0-9]*$"; if (Regex.IsMatch("待验证的字符串", RegStr)) { ...

  2. fpga错误总结

    Error (10200): Verilog HDL Conditional Statement error at ps2_con_cmd.v(11): cannot match operand(s) ...

  3. 解决vuex数据页面刷新后初始化问题

    在vue项目的开发中经常会用到vuex来进行数据的存储,然而在开发过程中会出现刷新后页面的vuex的state数据初始化问题!下面是我用过的解决方法 利用storage缓存来实现vuex数据的刷新问题 ...

  4. CCPC-Wannafly Winter Camp Day1 流流流动 (树形dp)

    题目描述 喜欢数学的wlswls最近被萎住了. 现在他一共有1...n1...n这么多数字,取数字ii会得到f[i]f[i]的收益.数字之间有些边,对于所有的i(i != 1)i(i!=1),若ii为 ...

  5. [编译原理]用BDD方式开发lisp解释器(编译器)|开发语言java|Groovy|Spock

    lisp是一门简单又强大的语言,其语法极其简单: (+ 1 2 ) 上面的意思 是:+是方法或函数,1 ,2 是参数,fn=1+2,即对1,2进行相加求值,结果是:3 双括号用来提醒解释器开始和结束. ...

  6. 安装了vs2019 编译node-sass node-gyp 找不到编译器的解决方法

    1 新建powershell脚本文件 <# This is a workaround for "node-gyp is unable to find msbuild if VS2019 ...

  7. java环境contos上solr-5.5.0 安装部署

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  8. windows javaee 安装

    一. 下载jdk 并安装 二. 配置环境变量 JAVA_HOME:D:\Java\jdk1..0_25 CLASSPATH :.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt. ...

  9. mysql:联合索引及优化

    命名规则:表名_字段名1.需要加索引的字段,要在where条件中2.数据量少的字段不需要加索引3.如果where条件中是OR关系,加索引不起作用4.符合最左原则 尽量不要用or,如果可以用union代 ...

  10. Centos7 离线安装 php7

    问题:因内部管控,机器无法连接公有yum源安装php. 正常安装php7可以参考CentOS7.2 安装 PHP7.2 下面的代码也是一种方法 yum -y install libmcrypt lib ...