Vehicle
接口的实现类Car
和Bicycle
:实现关系(纵向)。SUV
继承Car
:泛化关系(纵向)。Car
拥有Tyre
和Engine
:组合关系(横向)。School
和Student
:聚合关系(横向)。Student
和IdCard
:关联关系(横向)。Student
和Bicycle
:依赖关系(横向)。
横向关系的强弱程度:组合 > 聚合 > 关联 > 依赖
实现关系 Realization
实现关系:B实现A。
抽象概念无法直接用来定义对象,只有指明具体子类才可以。
泛化关系 Generalization
泛化关系(is-a
):B继承A。
聚合关系 Aggregation
聚合关系:A由B构成,B构成A。
整体和部分不是强依赖的,即时整体不存在了,部分也可以存在。
代码体现:成员变量。
组合关系 Composition
组合关系:A由B组成,B组成A。
组合关系是一种强依赖的特殊聚合关系,如果整体不存在,则部分也不存在。
代码体现:成员变量。
关联关系 Association
关联关系:表示A和B知道对方的属性和方法。
可以是双向也可以是单向的,箭头指向被拥有者。
代码体现:成员变量。
依赖关系的 Dependency
依赖关系:B依赖A。
是一种临时性关系,随着运行时的变化,依赖关系可能发生变化。依赖也有方向,应该尽量保持单向依赖。
代码体现:临时变量、方法参数、静态方法调用等。