UML中的各种关系
各种关系
名称 | 英文名称 | 符号 | 描述 | 实现方法 | 耦合强度 | 举例 | 关键词 | 备注 |
依赖 | dependency | 1.当类与类之间有使用关系 时就属于依赖关系;2.依赖 不具有“拥有关系”,而是 一种“相识关系”;3.一个 类的实现需要另一个类的协助? |
如果类A访问类B的属性或者方法, 或者类A负责实例化类B,具体地, 被依赖者B是依赖者A的:1.成员 函数返回值、2.形参、3.局部 变量、4.静态方法调用? |
★? | 学生使用电脑 驾驶员使用车? |
使用关系? | ||
关联 | association | 一种常识上的拥有关系,但 双方又在逻辑上各自独立? |
通过成员变量来实现: 被关联者是关联者的数据成员? |
★★? | 老师和学生是 双向关联? |
拥有关系 has-a? |
细分为:单向关联、 双向关联、 自身关联、多维关联? |
|
聚合 | aggregation | 是整体与部分的关系,且部分 可脱离整体而单独存在? |
同“关联”? | ★★★? | 汽车和轮胎? | 整体与部分 单独存在 contains-a? |
||
组合 | composition | 是整体与部分的关系,但部分 不能离开整体而单独存在? |
同“关联”? | ★★★★? | 人和头颅? | 整体与部分 不能单独存在? |
||
泛化 | generalization | 类与类之间的继承关系,一般 与特殊的关系,is a? |
类继承? | ★★★★★? | 动物和猫? | 一般与特殊 is-a? |
||
实现 | implementation | 类与接口之间的实现关系? | 接口实现? | ★★★★★? | 鸡和鸭都实现 下蛋接口? |
联系与区别
依赖与关联
- 依赖者不会将被依赖者作为自己的数据成员,但关联会。
- 依赖强调使用,关联强调拥有。
- 关系产生时机不同:依赖关系是仅当类的方法被调用时而产生,伴随着方法的结束而结束。关联关系当类实例化的时候产生,当类对象销毁的时候关系结束。
关联与聚合
- 聚合关系是关联关系的一种,是强的关联关系。
- 逻辑关系/层次不同:关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
- 联和聚合在语法上无法区分,必须考察具体的逻辑关系。
聚合与组合
- 整体与部分有相同的生命周期,其中代表整体的对象负责代表部分的对象的生命周期。
- 构造函数不同:聚合类的构造函数中包含另一个类的实例作为参数,组合类的构造函数包含另一个类的实例化。
- 信息的封装性不同:聚合关系中,客户端可以同时了解“整体类”与“部分类”;组合关系中,客户端只认识“整体类”,“部分类”被严密封装在“整体类中”,对客户端不可见。
参考
[1] 认识 UML 类关系——依赖、关联、聚合、组合、泛化_恋喵大鲤鱼的博客-CSDN博客[2] 解析UML类图符号意义_devillyd2018的博客-CSDN博客
[3]