1 正向、逆向工程在UML图中的应用
原文链接:https://blog.csdn.net/qq_32036981/article/details/109459326
UML建模目的:
一个复杂的架构,在纸上去写去画,是非常复杂的,但通过UML建模就能实现一个脑图,一目了然。
正向工程:从UML建模中 导出 Java类;
逆向工程:把一个或多个Java文件 导入 UML建模工具当中,变成oom类图模型。(这里注:oom不是OutOfMemory,而是ObjectOriented Model)。
安装PowerDesigner16.5。
1.1 逆向工程(导入到PowerDesigner)
导入Java文件流程:1. 生产ClassDiagram;2. 导入Java文件,生成类图。
具体如下:
(1)准备Java文件:在Android Studio中新建一个工程,并写几个有相互依赖关系的类,复制文件夹到桌面,删除MainActivity.java。
(2)创建oom类图模型:
打开PowerDesigner,文件----->新建模型,弹出下图:
生成后,选中ClassDiagram_1,选择语言,Reverse Engineer Java…,添加Java文件。
与Classes、Interfaces同目录的ClassDiagram_1就是类图,双击后就可以看到。
类图中可以看出,减号➖表示的是属性,加号➕表示的是方法,虚线空心箭头表示实现,实线空心箭头表示继承。
1.2 正向工程(从PowerDesigner导出)
UML建模工具将oom类图模型 导出 Java文件。
导出Java文件流程:
- 选择语言,Generate Java Code。
- 选择生产文件和路径。
- 查看生产的Java文件。
生成的Java文件中有很多注释,怎么办?在PowerDesigner中进行设置。
点击语言,选择Edit Current Object Language…
之后再按照上面步骤重新生成导出Java文件。
2 UML建模中的关系画法(依赖,泛化,关联,实现)
原文链接:https://blog.csdn.net/qq_32036981/article/details/109477997
UML建模中的关系包括:依赖、泛化、关联、实现、聚合、组合等。
2.1 依赖关系(dependence)
B类是A类的变量,A类持有B类的引用。像这种关系为依赖关系。
2.2 泛化关系(generalization)
泛化关系相当于Java当中的继承,比如:A类有两个子类,B类和C类。B类和C类具有父类A类的属性和方法。
2.3 关联关系(association)
关联关系包括:单向关联、双向关联和自关联。默认创建的关联关系是双向关联,可以理解为你中有我、我中有你。
两个类,靠近(…)的类为当前类,远离的为其他类 :
0…1 : 其他类的一个对象 与 当前类的零个或一个对象 有关联
0…* : 其他类的一个对象 与 当前类的零个或无数个对象 有关联
1…1 : 其他类的一个对象 与 当前类的一个对象 有关联
1…* : 其他类的一个对象 与 当前类的一个或无数个对象 有关联
- : 其他类的一个对象 与 当前类的无数个对象 有关联
2.4 实现关系(realization)
实现关系就是Java当中讲的实现接口。
2.5 聚合关系(aggregation)
聚合关系表示的是整体和部分的关系,但是整体和部分是可以分开的。比如:学校和学生的关系,学校和学生可以是一体的,学生也可以离开学校。
2.6 组合关系(composition)
组合和聚合看起来很像,但它们的区别是:聚合的整体和部分可以分开,但组合就相当于强引用,组合的整体和部分不可分开。比如View和ViewGroup是不能分开的。