作者:jrs2078148 | 来源:互联网 | 2023-09-11 15:03
OO第四单元总结第四单元总结13次作业作业要求实现一个UML解析器,使其支持对UML类图的分析,可以通过输入相应的指令来进行相关查询。 架构设计首先要对UML类图有一个深入的了解
OO第四单元总结
第四单元总结
13次作业
作业要求
实现一个 UML 解析器,使其支持对 UML 类图的分析,可以通过输入相应的指令来进行相关查询。
架构设计
首先要对UML类图有一个深入的了解,对类、接口、属性、方法等UML图中的元素之间的关系有一个充分的了解,这些元素可以构成一个树状结构,类和接口中包含属性和方法,方法中又包含属性。其次要对UML图中的继承、实现关系有所认识,同时要结合题目中对各种元素的限制仔细分析。
具体来说,我根据自己的需要又写了自己的UMLClass,UMLInterface,UMLOpearate以便于建立起它们之间的树状关系,在每个UMLClass和UMLInterface中维护自己的父类。用一个容器来表示类或接口实现的所有接口。
14次作业
作业要求
要求支持顺序图、状态图的分析。
架构设计
和上次类似,这次的作业只需要将状态图和顺序图的参次结构分析准确即可。
对于顺序图,要理清UmlCollaboration、UmlInteraction、UmlLifeline、UmlMessage以及UmlEndPoint之间的关系。
对于状态图,重点是各个state(包括初始状态和终止状态)和UmlTransition以及UmlEvent之间的层次关系。要注意的是,初始状态和终止状态在官方包中不属于UmlState类,需另行判断。
与上次相同,也需要建立自己的相关的类,以方便表示出它们之间的树形结构。
15次作业
作业要求
扩展 UML 解析器,使其支持对 UML 类图、状态图和顺序图的分析,可以通过输入相应的指令来进行相关查询,并能根据 UML 规则进行一定的规范性验证,即判断UML图中的九种不合法行为
架构设计
本次作业的基本架构与上次作业完全相同。
本次作业的关键在于如何判断循环继承、重复继承、重复实现。
根据需要,我在实现中加入了两个图,一个由所有的继承关系构成,另一个由所有的实现关系的构成,前者用来判断来判断循环继承和重复继承,后者用来判断重复实现。循环继承我采用的是dfs的方法,从每个点遍历,并在过程中记录下它们的路径。当起点和终点相同时,则代表有环路。重复继承和重复实现我采用的是bfs进行搜索。
自己在四个单元中架构设计及OO方法理解的演进
第一单元--表达式求导
最开始还没有面向对象的思维,也没有意识到一个好的框架的重要性。所以第一次作业基本上还是上按照给定的架构来完成的,但是在第二、第三单元中,我深刻的意识到了一个好的架构的重要性,它可以支持我们
课程的收获
理解了面向对象编程的封装继承多态的原理及好处。
理解多线程开发机制,学习了一点编程模式,学会运用SOLID原则。
学会规格化开发程序
从元认知角度重新审视面向对象编程,有更加清楚的大局认识。