一、第四单元两次作业的架构设计
(一)UML第一次作业
任务:实现一个UML类图解析器。
类图:
SortUmlElement类:对传入的UMLElement按type提取相关信息,并存储在hashmap中;
MyUmlInteraction类:实现接口的方法,主要通过在hashmap之间寻找相关信息;
例如:
/*
implemention:key存UmlClass的id,value存该类实现的接口的id
interGeneralize:key存UmlInterface的id,value存该接口继承的接口的id
*/
private Map<String, ArrayList<String>> implemention;
private Map<String, ArrayList<String>> interGeneralize;
对于指令“类实现的全部接口”,在类的继承链上进行dfs搜索即可。
(二)UML第二次作业
任务:在第一次作业基础上,扩展解析器,使得能够支持对UML顺序图和UML状态图的解析,并能够支持几个基
本规则的验证。
类图:
ClassModelInteraction:和第一次作业相同,用于类图的解析;
CollaborationInteraction:用于顺序图的解析;
StateChartInteraction:用于状态图的解析;
StandardPreCheck:用于规则检查;
MyUmlGeneralInteraction:在该类中实例化上述四个类,相关方法调用相应类中的相应方法;
代码整体架构和上次作业基本相同,也是把相关信息存在hashmap中。
需要注意的问题:
1.对hashmap调用get方法之前要确保contains(key)为true,否则可能抛出exception。
2.UmlElement的name可能为null,需要特别处理,不然也会exception。
二、四个单元中架构设计及OO方法理解的演进
第一单元:第一次接触java,也是第一次接触OO思想,所以导致写出的代码解耦程度不高,特别是这单元的第三次作业,由于多项式求导中设计到了嵌套求导,基本就靠递归莽出来的,几乎没有体现OO思想,所以代码的架构也不合理,可拓展性可维护性不强,三次作业每次都得重构。
第二单元:这单元是多线程,这单元学到了很多OO
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。