UML类图总结
有几年没有画类图了,去年画过时序图和泳道图,但找不到材料了。留在了老东家而没有备份!今天做个类图的笔记。
1. 工具
类图一般用StartUML,工具作用如下图
工具的使用和N年前变化很大!百度一下很多文档,请自行搜索和参考。
2. 类图中的关系总结
类图的关系可以分为四种,泛化和实现,依赖和关联。
其中关联是一个大类当中又细分包括(单向,双向,自关联,聚合,组合),所有的关联关系在代码层面的体现都是将一个类的对象作为另一类的属性,
关联是一种强依赖,关联关系 > 依赖关系。
另外关联大类中的单向,双向,自关联与关联大类中的聚合,组合的区别是,前者关联对象之间是对等的,后者关联对象之间是整体与部分的差别。举例说明: 老师和学生间是对等的(关联表示); 大雁是雁群的一部分,大雁可以离开雁群(聚合表示);电池是电动自行车的一部分,电动自行车不能没有电池(组合表示)。
关系 | 英文名称 | 描述 | 形状 | 举例说明 |
泛化 | Generalization | 继承。“is-a”的关系。 |
实线空心箭头 |
鸟是一种动物,而雁、鸭、鹅都是鸟类。 |
实现 | Realization |
多态。“is-a”的关系;接口的实现,实现了实现了接口类中所声明的操作。 |
虚线空心箭头 |
List接口的几个常见实现类:ArrayList、LinkedList、Vector。 |
关联 |
Association DirectedAssociation
|
单向。一般作为类的属性。 |
实线箭头 |
顾客的地址。 |
双向。双方各自持有对方类型的成员变量 ,都可以调用对方的公共属性和方法。 |
实线双箭头或无箭头 |
学生和老师可以互相指向。顾客与商品。 | ||
自关联。类的属性对象类型为该类本身。 |
实线箭头指向自身 |
在链表中非常常见,前向和后向的指针或引用都是指向自身的类。 | ||
组合 | Composition | 强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。一般是成员类。 |
实线实心菱形 |
电池是电动自行车的一部分,电动自行车不能没有电池。 |
聚合 | Aggregation | 弱的‘拥有’关系,即has-a的关系,体现的是整体对象包含成员对象,但成员对象不是整体对象必不可少的一部分,可以脱离整体而存在。 |
实线空心菱形 |
白天鹅是鹅群的一部分,白天鹅可以离开鹅群;班级与学生之间。 |
依赖 | Dependency | 使用关系或者需要关系;作为参数,返回值或者局部变量。 |
虚线箭头 |
例子1:以常见的Controller、Servie、DAO为例,请求转发到Controller时,依赖与具体的Servie实现,而Servie则是依赖DAO层实现数据库交互。
例子2:Maven的pom.xml依赖配置,就是常见的Dependency |
而这六种关系的强弱依次是:
泛化 = 实现,组合 > 聚合 > 关联 > 依赖。
参考:
StarUML类图相关——关联、聚合、组合、泛化、依赖、实现