OO课程总结

一、第四单元两次作业的架构设计

(一)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

相关文章

UML有助于在软件开发生命周期的所有阶段理解和可视化系统。以...
UML各种图总结-精华 https://www.cnblogs.com/jiangds/p/65...
MicrosoftOfficeVisio“UML模型图”模板为创建复杂软件系统的...
用例图1.用例图是UML用于描述软件功能的图形。用例图包括用例...
一、用例图:用例图(usecasediagram)是UML用于描述软件功能...
1.A类B类C类这三个类是什么关系?B类依赖A类和C类因为最主要...