分享免费的编程资源和教程

网站首页 > 技术教程 正文

一文搞懂 UML 中 依赖 /关联 /聚合 /组合 四种关系

goqiw 2024-10-19 06:06:49 技术教程 28 ℃ 0 评论

UML(Unified Modeling Language,统一建模语言)是一种重要的设计工具。它用于描述软件系统的结构和行为。在 UML 中,有四种常见的关系:依赖、关联、聚合和组合。刚接触UML的同学肯定会有这种疑惑:他们之间有关联与区别(此处停顿20秒供大家思考)。是不是有一种 "只可意会不可言传"的无力感?(真男人[我想静静] )

总的来说,类与类之间由弱到强的关系是:

没关系 > 依赖 > 关联 > 聚合 > 组合

一、依赖(dependency)

简单的理解,就是 类A 使用到了另个一个类B,而这种使用关系是临时的、偶然的、 脆弱的,但是类B会影响到类A;比如你要打车上班,你与被叫到的车之前的关系就是依赖;表现在代码里,就是 类B 作为参数 在类A的某个方法中使用,UML中用带虚线的箭头表示。

二、关联(association)

关联关系 体现的是 两个类之间在语义级别上的一种强依赖关系,比如我和我的同学这种关系比依赖更强,更稳定,一般是长期性的,双方的关系一般是平等的,关联可以是单向的,也可以是多向的;表现在代码里,就是 类B以类属性的形式出现在类A中,或者类A引用了全局变量类B。

依赖于关联的区别:

依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(比如不影响类的初始化),就可以把这种关系看成依赖,它是一种偶然的关系,;关联是一种强依赖关系,例如老师与学生。

三、聚合(Aggregation)

聚合是一种特殊的关联关系,具有 has-a的语义,它体现的是 整体与部分的关系,此时整体与部分之间是可以分离的,他们具有独立的生命周期,例如公司与员工的关系;表现在代码里,与关联关系相同,只能从语义级别来区分。

四、组合(Composition)

组合也是一种特殊的关联关系,具有 contains-a 的语义,它体现的关联关系比聚合更强,也被称为 强聚合 ;它体现整体与部分不可分割的关系,整体与部分具有相同的生命周期,比如你与你的大脑;表现在代码里,与关联关系一致,只能从语义级别来区分。

聚合与组合的区别:

聚合与组合的差别在于是否可分享!聚合关系中的部分可以与其类分享,例如公司与员工,一位员工可以在多个公司兼职;但是脑袋不能与他人分享。

五、小结

依赖关系是最松散的关系,它只表示类之间的使用关系。关联关系表示更强的结构关系,通常具有多重性约束。聚合关系表示整体与部分的关系,但部分可以独立存在。组合关系表示最强的关系,部分依赖于整体的存在。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表