UML 类图
类的图示(Class)

类图分三层
- 类的名称,如果是抽象类就用斜体显示。
- 类的特性,通常是字段和属性。
- 类的操作,通常是方法或行为。
Java 四种访问权限在类图中的表示
访问范围由大到小为:public、protected、default(即什么都不写)、private;‘+’表示 public,‘#’表示 protected,‘-’表示 private,什么都不写就表示 default 了。
分析图 1-1 Person 类图
第一行:类的名称为:Person;如果为抽象类,则“Person”采用斜体。
第二行:类的属性为:name ;“:”冒号前面表示属性的名字,后面表示属性的类型,还可以给属性赋初值。
第三行:类的方法:“<<Getter>>”或“<<Setter>>”表示方法的注释,可有可无,只是起到一个标记作用而已;冒号前面是方法的名字,注意方法的名字后面都是要带括号的“()”;冒号后面是方法的返回值。
1 | public class Person { |
接口的图示(interface)
接口的 UML 图有两种表示方法:
1、名称上面 <<interface>> 用这个标识它是一个接口
2、「棒棒糖」表示法,圆圈旁边为接口名称,接口方法在实现类中出现
UML 关系图

继承关系「即泛化关系」
继承关系用空心三角形 + 实线来表示
注意指向:子类指向父类(即空心三角形在父类这边)
助解:因为父类可以有多个子类,所以就会聚集成一个三角形,而子类则是一个线头的点
1 | // 父类 |
实现接口
实现接口用空心三角形 + 虚线来表示
注意指向:子类指向接口(即空心三角形在接口这边)
助解:因为接口可以有多个实现,所以也会聚集成一个三角形,而子类则是一个线头的点
1 | // 接口 |
关联关系
关联关系表示一类对象与另一类对象之间有联系,通常将一个类的对象作为另一个类的成员变量来表示关联关系
关联关系用实线箭头表示
注意指向:箭头由引用类指向被引用类,表示引用类 要引用 被引用类的东西
助解:比如企鹅需要知道气候,而企鹅和气候是两个类,那么现在企鹅类中用到了气候类,所以企鹅依赖气候
因为企鹅需要知道气候的变化,即当一个类需要知道另一个类时,可以用关联关系
关联关系有:单向关联、双向关联、自身关联、多重性关联
1 | // 气候类 |
依赖关系
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
依赖关系用虚线箭头表示
注意指向:箭头由依赖方指向被被依赖方,表示依赖方 依赖于 被依赖方提供的东西
助解:动物生存依赖氧气、水,注意这里是动物的生存依赖氧气、水,不是动物本身依赖,动物要是挂了就不需要了
1 | // 汽车类 |
关联关系 vs 依赖关系
依赖关系:是一种 使用关系。一个类 A 使用到了另一个类 B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是 B 类的变化会影响到 A。例如:客户使用产品需要提供者,产品的变更会影响客户的使用,但一个客户需要的产品可以有多个提供者。即一个类可能同时依赖多个类。
关联关系:是一种 结构关系。它指明一个事物的对象与另一个事物的对象之间的联系。关联关系比依赖关系更强,不存在依赖关系的偶然性,关系也不是临时性的,而一般是长期性的。例如:商品和订单,订单中包含商品信息。
小结:
- 依赖关系是一种 使用关系,即类 A 在做某个动作的时候依赖到了其他对象类 B。
- 关联关系是一种 结构关系,即类 A 中存在类 B,指明了类 A 对象和 类 B 对象之间的联系。
聚合关系
聚合是一种弱的「拥有」关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分
聚合关系用空心的菱形 + 实线箭头表示
注意指向:空心的菱形放在聚合的群体那边,箭头指向群体中的每个个体
助解:大雁和雁群,因为大雁聚合形成雁群,则空心菱形表示聚合形成堆了,而箭头表示单个点
1 | // 大雁 |
合成关系「即组合关系」
合成是一种强的「拥有」关系,提现了严格的部分和整体的关系,部分和整体的生命周期一样
合成关系用实心的菱形 + 实线箭头表示
注意指向:实心的菱形放在合成的整体那边,箭头指向部分,即用来合成整体的部件
助解:鸟和翅膀,部分和整体且生命周期一致
1 | // 翅膀 |
参考列表:
《大话设计模式》
[深入浅出UML类图]http://www.uml.org.cn/oobject/201211231.asp
[UML基础系列:类图]http://www.cnblogs.com/lsgxeva/p/7720224.html
感觉不错:
[Java类与类之间的5种关系及uml表示]https://blog.csdn.net/pj36536/article/details/53101764
[UML类图与类的关系详解]https://blog.csdn.net/sinat_30397435/article/details/79018467
