这里直接引用《大话设计模式》的UML类图讲解,有删节
UML类图图示样例
首先看“动物”矩形框,它代表一个类。类图分三层,第一层显示类名称,如果是抽象类,就用斜体显示。第二层是字段或属性。第三层是方法或行为。注意前面的符号,"+" 表示 public,"-" 表示 private,"#" 表示 protected。
注意左下角的”飞翔“,它表示一个接口图,与类图的区别主要是顶端有<< interface>>显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法,就是正下方”讲人话“这个接口。
像动物跟鸟之间用空心三角形+实线表示继承关系。
class Bird extends Animal {
}
大雁实现了飞翔接口,使用空心三角形+虚线表示。
class WideGoose implements IFly {
}
企鹅了解气候,当一个类”知道“另一个类时,可以用关联(Association)。关联关系用实线箭头表示。
class Penguin extends Bird {
private Climate climate;
}
再看大雁和雁群这两个类,大雁是群居动物,每只大雁都是属于一个雁群,一个雁群可以有多只大雁。所以它们之间满足聚合(Aggregation)关系。聚合表示一种弱”拥有“关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形+实线箭头表示。
class WideGooseAggregate {
private WideGoose[] arrayWideGoose;
}
合成(Composition,也译为”组合“)是一种强的”拥有“关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。这里鸟和翅膀就是组合关系。合成关系用实心菱形+实线箭头表示。另外,合成关系的连线两端还有数字”1“和数字”2“,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,就用”n“表示。关联关系、聚合关系也可以有基数的。
class Bird {
private Wing wing;
public Bird() {
wing = new Wing();
}
}
动物依赖于氧气和水。它们之间是依赖关系(Dependency),用虚线箭头表示。
abstract class Animal {
void Metabolism (Oxygen oxygen, Water water) {
}
}