BLOG
Enjoy when you can, and endure when you must.
Thinking in UML 读书笔记:UML 关系

UML 关系反应对象之间的联系,让对象构成某个特定的结构。因此值得整理并让其印象深刻。

 

1. 关联关系(association)

关联关系描述不同类的对象之间的结构关系。它在一段时间内将多个类的实例连接在一起。关联关系是一种静态关系,通常与运行状态无关,而是由“常识”、“规则”、“法律”等因素决定的,所以关联关系是一种“强关联”的关系。

关联关系用来定义对象之间静态的、天然的结构,在最终的代码里,关联关系通常都是以实例变量(成员变量)的形式出现的。

关联关系具有多重性,常见为一对一、一对多、多对多,甚至 * 对 * 关联。关联关系一般不强调关联的方向,如果特别强调了关联关系的方向,如:

则表示 A “知道” B,但 B “不知道” A。

在用例模型中,单向关联关系用于连接参与者和用例,箭头由参与者指向用例,表示参与者“知道”用例存在。

 

2. 依赖关系(dependency)

依赖关系描述一个对象在运行期间会使用到另一个对象的关系。依赖关系是一种临时性的关系,它通常都是在运行期间产生,并随着运行场景的不同,依赖关系也可能发生变化。它不是天然存在的。

依赖关系在最终的代码里体现为类构造方法、类方法等的传入参数

依赖关系可以是双向的,但并不推荐,且应杜绝双向依赖的产生。

 

3. 拓展关系(extends)

拓展关系特别用于在用例模型中说明向基本用例中的某个拓展点插入拓展用例。拓展用例标识了用例场景中的某个“支流”

拓展用例是“可选”的,而不是“必需”的,即意味着即使没有拓展用例,基本用例也是完整的。反过来,如果没有基本用例,那拓展用例是不能单独存在的。拓展用例都体现可复用性

 

4. 包含关系(includes)

包含关系特别用于在用例模型中,说明在执行基本用例的过程中插入的行为段。包含用例是被封装的,它代表可在各种不同基本用例中复用的行为。

包含用例表示的是“必需”而不是“可选”的用例,即意味着如果没有包含用例,基本用例是不完整的。但包含用例本身不能单独存在。包含用例体现可复用性

 

5. 实现关系(realize)

实现关系特别用于在用例模型中连接用例和用例实现,说明基本用例的一个实现方法。在程序中一般以类实现接口来描述

 

6. 精化关系(refine)

精化关系特别用于用例模型,一个基本用例可以分解出许多更小的关键精化用例。这些更小的精化用例更细致地展示了基本用例的核心业务精化关系表示由基本对象可以分解为更明确、更精细的子对象,这些子对象并没有增加、减小或改变基本对象的行为和属性。仅仅是更加细致和明确了。精化关系仅用于建模阶段。

 

7. 泛化关系(generalization)

泛化关系说明两个对象之间的继承关系。泛化关系表示一个类对于另一个类的继承。继承意味着祖先的定义对于后代的对象也是有效的。

 

8. 聚合关系(aggregation)

聚合关系用于类图,特别用于表示实体对象之间的关系,表述整体由部分构成的语义,即 has - a 的关系

整体和部分不是强依赖的,即使整体不存在了,部分仍然存在。

 

9. 组合关系(composition)

组合关系用于类图,特别用于表示实体对象关系,表达整体拥有部分的语义,即 contains - a 的关系

整体和部分是强依赖的,如整体不存在了,则部分也将消亡。

UML
COMMENTS
LEAVE COMMNT