看到网上也有不少UML相关的介绍,但学习起来不够方便。在此就尽可能的总结下UML图,如果有不对的地方,欢迎指正,博客也会不断改正。
UML的重要性和实用性暂且不讨论,需要提一下的是当前选的UML开发工具是startUML2.0。
下面进入今天的重点:UML类图介绍
一、类图介绍:
类图是描述系统中的类,以及各个类之间的关系的静态视图。
1、属性:与java中定义的class一样,包含类名、属性和方法
2、关系:类图的关系大致有6种:(参考文章:http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html)
1)泛化关系(子类继承抽象类)
继承关系,是指一个对象直接使用另一对象的属性和方法
【表示】:带三角箭头的实线,箭头指向父类
2)实现关系(子类实现接口)
接口关系,实现接口类的所有特征和行为
【表示】:带三角箭头的虚线,箭头指向接口
图中为startUML上的特殊表示
3)组合关系
组合关系表示整体由部分构成。但是如果整体不存在了,则部分也不存在了。例如:公司不存在了,部分也将不存在。
【表示】:一条带实心菱形箭头直线表示,如下图表示B由A组成
4)聚合关系
聚合关和组合关系类似,也是整体由部分构成。但是如果整体不存在了,部分依赖可以存在。例如:部门和员工的关系,部门不存在了,员工却是可以存在的,员工可以有其它组合。
【表示】:一条带空心菱形箭头的直线表示,如下图表示B由A组成
5)关联关系
关联关系是类之间的一种静态关系,通常是长期存在的,非偶尔存在,在代码上,所以通常以成员变量的形式存在与一个class。关联关系具体可以是双向关联、单向关联和自关联。
①双向关联(不推荐):指两者之间可以互相指向
【表示】:无箭头实体线
②单向关联(常用):指一方需要另一方的辅助,在代码上,建造者模式可以体现。具体如下图表示A需要B的辅助:
【表示】:单箭头实体线,指向被需要方,如下图表示:A需要B,通常B作为成员变量存在于A中。
③自关联:在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联
【表示】:单箭头实体线,自己指向自己
6)依赖关系
依赖关系通常是在特定情况下需要一方依赖另一方,是临时性的,而非长期。在代码上通常以参数和局部变量的形式出现。
【表示】用一套带箭头的虚线表示的;如下图表示在特定情况下A依赖于B
二、startUML工程创建
1、创建Model:在startUML右上方可以找到Explorer,在Untitled右键,add,选择model,创建一个自己的Model,修改名称MyModel。
2、创建Class:在MyModel上右键,add,选择class,创建class,修改名称Person。然后可以直接拖动到中间画板中使用。
3、添加属性:选中class,右键,add,选中Attribute,重命名,右下方可以选择class、method的修饰属性,public(+)、private(-)、protected(#)、package(~)。
4、添加方法:选中class,右键、add,选中Operation,其它同上。
5、泛化:选中面板左下角,Class分类,Generalization,再左键子类class,拖动不放到父类class
6、实现:同上,选中Class分类中的InterfaceRealization,再左键子类class,拖动不放到Interface
7、组合:同上,选中Composition
8、聚合:同上,选中Aggregation
9、关联:同上,选中Directed Assocition
10、依赖:同上,选中Dependency