一、作业架构设计
两次作业都采用了相似的架构,因此放在一起来说明。
- 将UmlClass,UmlInterface,UmlState等封装成对应的MyUmlxxx类,类中除了储存对应的Id,name,parentId等信息外,还会储存查询要用到的所有信息
- 为所有MyUmlxxx类建立对应的Container类,Container中储存所有MyUmlxxx对象,对与建立每个对象之间的关系的操作都要经过Container来实现,这样可以方便管理
- 对于不同的Uml图,建立对应的类,类中放有相应的Container
第二次作业有效性检查实现:
UML002:在MyUmlClass类中直接存有所有的UmlAttribute和UmlAssociationEnd的name,因此直接用来比较即可。
UML008:对于UmlClass而言,直接向上找父类,若是找到的所有类中含有同样的id,则认为此类循环继承。对于UmlInterface的情况也是类似,但是由于UmlInterface允许多继承,因此所有UmlInterface的父类都要查询一次。
UML009:查找每个类的所有实现接口,然后看是否有重复。
两次作业的类图展示: