UML的各种关系理解
-
泛化关系(generalization)(IS A)
-
实现关系(realize)(IS A)
-
聚合关系(aggregation)(has-a)
-
组合关系(composition)(contains-a)
-
关于聚合和组合的区分:其关键点就是整体和部分的生命周期是否一致这个条件。(深入思考:当整体的生命周期结束后,不会受到质变,也不会受到任何 对生命周期有影响的改变。例如 电脑 和CPU, 相反 例如 人体 和四肢)
-
关联关系(association)
- 解释:它描述不同类的对象之间的结构关系,是处于同一种层次;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;
不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。代码体现:表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。 - eg:A引用了B作为属性
- 类图:
-
依赖关系(dependency)
- 解释:它描述不同类的对象之间的结构关系,是处于同一种层次;它是一种动态关系,与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
代码体现:例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。 - eg:A中的方法调用了B
- 类图:
- 解释:它描述不同类的对象之间的结构关系,是处于同一种层次;它是一种动态关系,与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;