需求分析:
第十四次作业主要在第十三次作业类图解析的基础上加入了状态机和顺序图的解析、以及按照特定规则检查模型中是否存在违背规则的情况。
设计思路:
统计功能部分代码:
先将输入的UmlElement划分加入List中:
对于某一类的查找就在那些相应的List中去找符合条件的元素:
以在状态机中统计状态数量的Getstatecount为例:
在Getstatecount中实现一个进行统计的静态方法。
统计迁移数量Gettransitioncount与之相似:
统计某一状态的后继状态getSubsequentStateCount稍复杂一点,但思路也相似:
顺序图中的统计也比较相似:
参与对象的统计getParticipantCount:
交互消息的统计getMessageCount:
某一个对象的incoming消息统计getIncomingMessageCount:
检查功能部分代码:
对给定的模型元素容器,不能含有重名的成员(UML002)
针对类图中的类(UMLClass),其成员属性(UMLAttribute)和关联对端所连接的UMLAssociationEnd不能有重名。
代码如下:
不能有循环继承(UML008)
只考虑类的继承关系、类和接口之间实现关系,以及接口之间的继承关系。所谓循环继承,就是按照继承关系形成了环。
代码如下:
以接口为例(多继承):
类的继承与接口处理相似。
类或接口不能重复继承另外一个接口(UML009)
该规则考虑类之间的继承关系、接口之间的继承关系,以及类对接口的实现关系,包括直接继承或间接继承。
代码如下:
对于接口进行重复继承:
类的重复继承有以下可能:
- 类不能多继承。
- 在输入信息中可以出现多次同一个类继承同一个接口。
- 一个实现了进行重复继承的接口的类,也算作进行了重复继承(接口)。
- 上面所描述的类的子类。
这样对于类可以分为以下部分:
直接重复实现同一个接口:
实现了一个进行过重复继承的接口:
来源:https://www.cnblogs.com/sxz1606/p/11191910.html