类图

基本属性

怎么画 UML 图 - 图1

+:public
#:protected
-:private
~:default,即包权限
下划线:static,如上图的sex属性和playGames()方法
斜体:抽象

类与类之间关系

怎么画 UML 图 - 图2

继承

类与类之间的继承,接口与接口之间的继承,对应的是extend关键字。
表示方法: 空心三角形 + 实线
怎么画 UML 图 - 图3

实现(Realization)

对应implement关键字。
表示方法:
(1)矩形表示法
空心三角形 + 虚线
怎么画 UML 图 - 图4

(2)棒棒糖表示法
实线
怎么画 UML 图 - 图5

关联(Association)

单向关联

一个类持有另一个类的类型的成员变量。
表示方法:带箭头的实线。
怎么画 UML 图 - 图6

双向关联

双方各自持有对方类型的成员变量。
表示方法:不带箭头的实线。
怎么画 UML 图 - 图7

自关联

Node类包含类型为Node的成员变量,也就是“自己包含自己”。
表示方法:带箭头的实线
怎么画 UML 图 - 图8

聚合(Aggregation)

弱的‘拥有’关系,即has-a的关系。强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。两个对象具有各自的生命周期。
表示方法:空心菱形+直线+箭头
怎么画 UML 图 - 图9

每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。

组合(Composition)

强的‘拥有’关系,是一种contains-a的关系。组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。部分和整体的生命周期一样。
表示方法:实心菱形+直线+箭头。
怎么画 UML 图 - 图10
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。

依赖(Dependency)

当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
表示方法:虚线箭头
怎么画 UML 图 - 图11
Driver的drive方法只有传入了一个Car对象才能发挥作用,因此我们说Driver类依赖于Car类。