其他分享
首页 > 其他分享> > BUAA-OO-Unit4 总结

BUAA-OO-Unit4 总结

作者:互联网

BUAA-OO-Unit4 总结

本单元作业的架构设计

第十三次作业

按照 UML 图建立类和关系即可,需要注意的是输入的顺序不定,采用每次只读取一种 UmlElement 的方法,多次读取

我几乎为每一个在指导书中出现的UML元素都自行建立了一个包装类,事实证明这其实是没有必要的,而且自行建立的包装类信息大都有缺失,因此在第十五次作业中,我又给每一个类添加原始类作为补充

类图大致上与UML图中元素关系相似,很有层次感(这一点类似于第一单元)

(类图摸了)

image

功能上把所有指令的处理塞到了MyImplementation类中,同时存储所有class等的信息

第十四次作业

这次作业的难度是很大的提升,直接要求添加了另外两种UML图,因此类图变得非常庞大,下面是总览(我又为每一种UML元素建立一个包装类,所以类非常多,事实上可以用官方包提供的类直接代替的)

image

下面是状态机部分的类图,关键在于我写了一个公共父类GeneralState去让MyFinalStateMyPseudostateMyState三个类去继承,这样在实现指令的时候可以稍微方便一些

image

时序图部分,我又建立了一个独立于类图中的MyAttribute类去储存在时序图中出现的Attribute,这个在第十五次作业检查正确性时很有用,其它的大都是类图结构的层次

image

关于指令的实现,我单独写了一个MyImplementation类去继承UserApi,然后大部分指令的实现都放在了MySequenceDiagramMyStatusDiagramMyClassDiagram三个类中,MyImplementation可以直接调用对应图的相应指令即可

第十五次作业

本次作业的类图结构与第十四次作业基本类似,这次作业主要加入了错误 UML 的判断,我主要采用了先解析再检查的方式,首先对输入进行解析,然后再验证图中的元素是否符合要求

在检查的实现上,我直接把检查的函数写到了MySequenceDiagramMyStatusDiagramMyClassDiagram三个类中,又考虑到MyClassDiagram超出了代码行数限制,类图的检查单独设了一个单例模式的MyChecker

另外值得一提的是对于循环继承的检查,经过与同学的充分讨论,决定使用的是Tarjan算法找环;对于重复继承的检查,直接暴力DFS即可,事实上即使DFS找环,看起来在强测中也不会超时

架构设计思维及OO方法理解的演进

第一单元

主要介绍的是分层次的数据收集和表示方式,主要是把一个层次化的结构(表达式)用类的层次结构(继承关系)表现出来

第二单元

这一单元的主题是多线程,也是相比之下最为困难的一个单元

第三单元

这一单元主题是规格化,是相对轻松的单元

第四单元

第四单元以 UML 为基础,编写UML解析器

OO方法的理解

OO课前:OO的核心就是类和继承关系

OO课后:OO的核心是一种设计的思想,通过把设计对象进行层次化分解,可以把一个大型工程分成若干个小的模块然后组合,这样易于编码,易于调试,更易于分工合作

可以看出OO课前,虽然对面向对象有所接触了解,但是了解的仅仅局限在表象上的类等概念,OO课后经过编程训练,更加深入的体会到了OO的作用和思想内涵

测试理解与实践的演进

综上所述,测试实质上是检验结果是否与预期相符,测试的形式可以是对拍,也可以是模拟验证,关键在于随机构造数据 + 合理的结果评判标准,实践上通常用对拍解决,毕竟人多力量大

课程收获

改进建议

标签:OO,作业,BUAA,类图,测试,UML,单元,Unit4
来源: https://www.cnblogs.com/flyingans/p/16421826.html