ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OO第四单元总结

2022-06-28 13:01:25  阅读:157  来源: 互联网

标签:OO 保存 单元 完成 类型 第四 指导书 用来


OO第四单元总结

一、第四单元总结

本单元实现了一个UML解析器,实现了对UML源码的读入以及有关信息指令的查询。第一次作业中要完成的是将UML的输入信息进行解析,建立相应的数据结构,需满足能够处理多种不同的对类图的信息进行查询的指令。

在官方所给的架构的基础之上,只需要我们调用AppRunner运行程序,并且实现自己的Implement类,完成对UML中不同成员的读入、解析与存储,同时完成对类图中各种信息的查询方法。

         由于输入数据并不对输入顺序作任何保证,故我在对各有元素的处理上我采用了三轮处理的方式。

         第一轮:每一种数据类型建立一个ArrayList队列,将每种类型放入相应的队列中,同时,对于一些需要存储和其他类型有关联的类型,我们建立了对应的MyElement类,其中包含UMLElement以及其他需要用到的变量。

         第二轮:

                          

 

         这一轮中主要处理的是需要被其他类型所调用的类型,需要提前与其建立完成。比如说Attribute类型需要放入MyClass类中的Arributes队列之中,Generalization类需要其source和target两个类都已经完成了读入,才能创建相应的图。

         同时,为了方便之后的查询方法,我们建立几个HashMap用来完成图的创建。

 

         其中,fatherTree用来查询当前类的父类是谁,由于本单元中不会出现类的多继承行为,所以每个类只会有一个父类。critical用来实现状态图中当前状态之后可能进入的所有状态,用来建立状态的路径图,从而判断关键节点。

         第三轮:

 

         第三轮实现的是最底层的类型,如Parameter、Message之类本身并不需要调用其他类型,但是其他类型需要知道自己所拥有的这些类型。

 

部分自己的MyElement类:

 

MyClass:包含operations用来保存类中的方法、parentClasses和sonClasses用来保存当前类的父子关系类、myInterface用来保存实现的所有接口,便于接口查询的O(1)复杂度、myAttribute用来保存类中的元素。

 

MyCollaboration:interactions和attributes用来保存collaboration中所有的元素。

 

MyInteraction:participants用来保存所有的生命线、umlMessage用来保存所有的消息。

 

MyInterface:fatherInterface和sonInterface用来保存接口的父子关系,同样是为了降低接口查询的实践复杂度。

 

MyLifeLine:将UmlLifeLine和UmlEndPoint全部统一到MyLifeLine中,通过在MyLifeLine中加入Type属性来判断MyLifeLine的类型,father和son记录了LifeLine和endPoint的消息传递关系。

 

MyState:将UmlState、UmlFinalState和Pseudostate统一进MyState中,通过Type进行区分,nextStates记录当前state可以迁移的所有状态。

 

MyTransition:保存了该迁移的所属事件和条件。

 

各类型关系图:

 

 

复杂度分析:

 

 

 

二、总结自己在四个单元中架构设计思维及OO方法理解的演进

         在我的感觉里,每个单元最为重要的就是第一次作业。第一次作业应该尽可能的将整个单元的架构给建立好,这样在之后的两次作业中才能避免重构,耽误时间,同时也能让自己更好地理解这个单元作业的目的所在。

         在架构设计方面,首先应该充分阅读指导书,明确本单元的目的。之后仔细地阅读官方包所给的代码,根据官方包和训练代码,对于架构有一个初步的设想,完成各级抽象,试着将需要自己完成的类的大概先搭好,完成读入工作和数据结构的建立。最后再次阅读指导书,搜索指导书中给出的各种条件,完善自己的代码,对各种边界情况有一个初步的映像,在写代码的时候能想起来。最后才是完成要求和算法优化。

 

三、       总结自己在四个单元中测试理解与实践的演进

四个单元的学习中学会了如何自己根据指导书中的条件来构造数据,学会了如何自己编写评测机。

 

四、       总结自己的课程收获

学习熟悉JAVA语言,能够根据需求实现类继承、接口继承等。自身的代码架构思路得到了锻炼,在设计架构的时候会考虑到客户的需求变更与版本迭代。了解多线程运作机制,建立了面向对象的思维,摆脱了面向过程的单一设计模式。

 

五、立足于自己的体会给课程提三个具体的改进建议

         1)在第一单元或者pre训练的时候可以多增加一些java语法的教学或者相关的链接

         2)bug修复的冷静期可以缩短

         3)指导书将需要注意可能会遗漏的地方加粗

 

标签:OO,保存,单元,完成,类型,第四,指导书,用来
来源: https://www.cnblogs.com/dyxdyx2333/p/16419041.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有