UML类图的表示通过各个类的基本属性和方法以及类之间的关系比较直观地表示面向对象的设计。
UML类图中,类与类的关系分为以下6种:
- 泛化(Generalization)
- 实现(Realization)
- 关联(Association)
- 聚合(Aggregation)
- 组合(Composition)
- 依赖(Dependency)
-
泛化(Generalization):表示的是类与类之间或者接口与接口之间的继承关系。
继承使用空心三角形+实线表示。空心三角形指向被继承的类。
比如:“小轿车”继承了“车”类,空心三角形指向“车”类。 -
实现(Realization):表示的是类对接口的实现关系。
实现使用空心三角形+虚线表示。空心三角形指向被实现的接口。
比如:“汽车”类实现了“跑”的接口。空心三角形指向“跑”的接口。 -
关联(Association):对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
关联关系用实线箭头表示。箭头指向和当前类有关联的类。
比如:“汽车”类的“加油”方法的实现和“车用燃料”类有关联,那么箭头指向“车用燃料”类。 -
聚合(Aggregation):表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期。
聚合关系用空心的菱形+实线箭头表示。并且实线的两头可以用数字表明一对多的关系。
比如:“车队”类和“汽车“类的关系,“车队”类和“汽车“类有各自的生命周期,多个”汽车“聚合在一起组成”车队“。空心的菱形指向“车队”类,箭头指向“汽车”类。 -
组合(Composition):组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
比如:一辆汽车有4个车轮,车轮的拥用者是汽车。那么“汽车”类和“车轮”类的关系是组合的关系。实心的菱形一边可以。标上1,箭头一端可以标上4。 -
依赖(Dependency):对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
依赖关系用虚线箭头表示。
比如:Factory设计模式中,ConcreteFactory类和ConcreteProduct类的关系。ConcreteProduct类的实例由ConcreteFactory类的方法CreateProduct()产生。虚线箭头指向ConcreteProduct类。