文章目录
关联关系(association)
关联关系用一条直线表示
classG – classH
- 关联关系是一种静态关系,通常与运行状态无关。用来定义对象之间静态的、天然的结构。
- 与依赖关系是不同的,依赖关系表达的是对象之间临时性的、动态的关系。
- 在最终代码中,关联对象通常是以实例变量(成员变量)的形式实现的。
- 具有多重性,常见为一对一关联,一对多关联,多对多关联等
- 一般不强调关联的方向。当A——B时,A和B都知道对方的存在
依赖关系(dependency)
依赖关系用一条带箭头的虚线表示。
classK <… classL
描述一个对象在运行期会使用到另一个对象的关系。
依赖关系是一种临时性的关系,随着运行场景的不同,依赖关系有可能发生变化
在最终的代码里,体现为类构造方法、类方法等的传入参数。
依赖关系除了知道对方外,还会使用对方的属性或方法
有单向依赖和双向依赖,双向依赖是一种非常不好的结构,应当单向依赖
实现关系(realize)
实现关系是用一条带空心箭头的虚线表示
classM <|… classN
指的是一个class类实现interface接口(可以多实现),实现是类与接口之间最常见关系。在Java中此类关系通过关键字implements明确标识
继承关系(generalization)
继承关系是一条带空心箭头的直线表示
classA <|-- classB
一个类(称为子类,子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能,继承是类与类或者接口与接口之间最常见得关系,一个类最多只能继承一个类
聚合关系(aggregation)
聚合关系是用一条带空心菱形箭头的直线表示
classE o-- classF
表示实体对象关系,表达整体由部分构成的语义。
与组合关系不同的是,整体和部分不是强依赖的。即使整体不存在了,部分仍然存在。例如部门撤销以后,人员不会因此消失。
组合关系(composition)
组合关系用一条带实心菱形箭头的直线表示。在类图中表示整体拥有部分,如C拥有D。
classC *-- classD
表示实体对象关系,表达整体拥有部分的语义。
组合关系是一种强依赖的特殊聚合关系。如果整体不存在了,则部分也将消亡
参考资料:
1、《大象——Thinking in UML(第二版)》
2、类图关系绘制方式