组合,叫compose。
在代码层面上用内部类实现,如果A类由B类组合而成,则A和B有共同的生命周期。打比方的话就是人和大脑的关系,人由大脑组合而成,如果人死了,大脑也活不成。用UML表示,是一个实心的框框。
聚合,叫aggregate。
在代码层面上用字段实现,如果A类包含B类型的字段,则A和B有各自的生命周期。打比方的话就是人和公司的关系,公司由人聚合而成。用UML表示,是一个空心的框框。
全解:
泛化(Generalization):
一句话,就是继承 的表示。是is-a的关系。
表现为继承或实现关系(is a)。具体形式为类 与类 之间的继承关系,接口 与接口之间的继承关系,类对接口的实现关系。
关联(Association):
用于描述类 与类之间的连接,是has -a的关系。 类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A 依赖于B ,则B 体现为A 的全局变量。关联关系有双向关联和单向关联。双向关联:两个类都知道另一个类的公共属性和操作。单向关联: 只有一个类知道另外一个类的公共属性和操作。大多数关联应该是单向的,单向关系更容易建立和 维护,有助于寻找可服用的类。
一句话,就是继承 的表示。是is-a的关系。
表现为继承或实现关系(is a)。具体形式为类 与类 之间的继承关系,接口 与接口之间的继承关系,类对接口的实现关系。
关联(Association):
用于描述类 与类之间的连接,是has -a的关系。 类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A 依赖于B ,则B 体现为A 的全局变量。关联关系有双向关联和单向关联。双向关联:两个类都知道另一个类的公共属性和操作。单向关联: 只有一个类知道另外一个类的公共属性和操作。大多数关联应该是单向的,单向关系更容易建立和 维护,有助于寻找可服用的类。
聚合
(Aggregation):
聚合是 关联的特例。如果类 与类 之间的关系具有“整体和局部”的特点,则把这样的 关联称为聚合。它往往有“包含”,“由…… 组成”的意思。 是强的关联关系。聚合关系是整体和个体的关 系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体, 一个是部分。同时,是一种弱的“拥有”关系。体现的是A 对象可以包含B 对象,但B 对象不是A 对象的组成部 分。具体表现为,如果A 由B 聚合成,表现为A 包含有B 的全局对象,但是B 对象 可以不在A 创建的时刻创建。
聚合是 关联的特例。如果类 与类 之间的关系具有“整体和局部”的特点,则把这样的 关联称为聚合。它往往有“包含”,“由…… 组成”的意思。 是强的关联关系。聚合关系是整体和个体的关 系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体, 一个是部分。同时,是一种弱的“拥有”关系。体现的是A 对象可以包含B 对象,但B 对象不是A 对象的组成部 分。具体表现为,如果A 由B 聚合成,表现为A 包含有B 的全局对象,但是B 对象 可以不在A 创建的时刻创建。
组合(Composition):
是 关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命 周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A由B组成,表现为A 包含有B的全局对象,并且B对象在A创建的时刻创建。
是比聚合关系强的关系。它要求普通的聚合关系中代表整体 的对象负责代表部分的对象的生命周期。Composition( 组合关系) 是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A 由B 组成,表现为A 包含有B 的全局对象,并且B 对象在A 创建 的时刻创建。
可以理解为,必须 has-a 的关系
是 关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命 周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A由B组成,表现为A 包含有B的全局对象,并且B对象在A创建的时刻创建。
是比聚合关系强的关系。它要求普通的聚合关系中代表整体 的对象负责代表部分的对象的生命周期。Composition( 组合关系) 是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A 由B 组成,表现为A 包含有B 的全局对象,并且B 对象在A 创建 的时刻创建。
可以理解为,必须 has-a 的关系
依赖(Dependency):
依赖是一种使用关 系,它说明一个事物规范的变化可能影响到使用它的另一个事务,但反之则不然。依赖关系的表示法是虚线箭头,箭头尾部的元素依赖箭头头部的元素, 是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的 变化将影响另外一个类。例如如果A 依赖于B ,则B 体现为局部变量,方法的参数、或静态方法的调用。是use-a的关系。
依赖是一种使用关 系,它说明一个事物规范的变化可能影响到使用它的另一个事务,但反之则不然。依赖关系的表示法是虚线箭头,箭头尾部的元素依赖箭头头部的元素, 是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的 变化将影响另外一个类。例如如果A 依赖于B ,则B 体现为局部变量,方法的参数、或静态方法的调用。是use-a的关系。