一、说明
UML 是“统一建模语言”的简称,是用来构建模型的一种语言,UML 发展至今有 14 种之多,如果想详细了解 UML 发展可参考:什么是统一建模语言。Class UML 是软件设计中比较常用的一种,该篇我们主要探讨 Class UML。
二、类
1、普通类
UML <-> Code:
public class Bird {
public bool hasLife;
public bool hasTooth;
public void layEggs() {}
}
解析:
- 整个 UML 分 3 个部分,分别为:类名、属性名、方法名。
- 权限:
- +:全局属性或方法。
- - :私有。
- #:受保护。
- 下划线:静态。
2、抽像类
UML <-> Code:
abstract class Animal {
public bool hasLife;
public void metabolism(O2 o2, Water water) {}
public void breed() {}
}
解析:
抽像类与普通类乍一看没什么区别,但仔细看会发现类名为斜体,所以将类名标识为任体即可,其它照旧。
3、接口
UML <-> Code:
public interface Fly {
public void fly();
}
解析:
接口会在类名处有明显的 <<interface>> 标识。
三、关系
除了表示单个类对象,还有很多连接关系,为了方便理解,我们贴出一张关系图,并且之后的关系说明均以此图示例。
1、继承
表示:空心三角 + 实线
例如:鸟继承自动物;大雁、鸭子、企鹅继承自鸟类,他们之前的关系用“空心三角 + 实线”表示。
class Animal {...}
class Bird extends Animal {...}
2、实现
表示:空心三角 + 虚线
例如:大雁实际了飞翔的接口。
interface Fly {
public void fly();
}
class WildGoose implements Fly {
public void fly() {}
...
}
3、关联
表示:箭头 + 实线
例如:企鹅与气候关联
class Penguin {
private weather;
...
}
class Weather {...}
4、依赖
表示:箭头 + 虚线
例如:动物的新陈代谢需要氧气和水。
class O2 {...}
class Water {...}
class Animal {
public void metabolism(O2 o2, Water water) {...}
}
5、聚合
表示:空心菱形 + 实线箭头
例如:大雁和雁群的关系:雁群是由大雁聚合而来。
class WildGoose {...}
class WildGooseGroup {
List<WildGoose> list;
}
6、组合(合成)
表示:实心菱形 + 实线箭头
例如:鸟和翅膀的关系。
Class Wing {...}
class Bird {
private Wing wing;
}
四、易混
1、依赖 VS 关联
依赖和关联有点类似,区别是:关联代表一种更强的关系,一般体现为成员变量的引用;而依赖则代表了一种稍弱的关系,体现为方法中的引用(方法参数或方法内部)。
2、组合 VS 聚合
组合和聚合也是类似一种强依赖与弱依赖的关系:
聚合(弱依赖):雁群少了一只大雁依然是雁群。
组合(强依赖):鸟必须得有翅膀。
五、总结
Class UML 在大型软件建模中还是比较常用的。再者,学习设计模式时,几乎所有的书籍都会提到每个设计模式所对应的 UML,如果想学习设计模式,提前学习了解一下 UML 也是非常有帮助的。