UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具

Posted 三碗秋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具相关的知识,希望对你有一定的参考价值。

漫漫程序生涯,流程图、时序图、类图基本都是逃不掉的, 在平时画类图的时候,经常会看到association/composition/aggregation这几个概念,说实话在大学的时候老师是有提过的,不过现如今早已还回去了。这里先做一个简单的总结:


  • association,表示一个类跟另一个类有关系,可以是一对一也可以是一对多,composition跟aggregation都是association的一种
  • composition,是association的一种,表示两个类的关系是父子关系,并且当parent不在时child不能独活
  • aggregation,也是association的一种,但是跟composition不同的是,parent不在时child依旧可以活的好好的




看点例子

association: 一个老师可以教多个学生,一个学生也可以上多个老师的课





composition(组合): 一个人由头+手+脚等组件组成,当这个人驾鹤西去之后,他的组件(头/手/脚)也将不复存在,即parent class跟child class是皮之不存毛将焉附的关系


UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具




aggregation(聚合): 这种关系很像一帮乌合之众聚在一起形成一股力量闹事,当首脑被逮之后,其他人依然可以寻找新的大佬再次聚集。比如汽车报废了,但是轮胎可以被其他汽车使用


UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具





画图工具推荐

画图工具有很多,比如亿图,ProcessOn,draw.io。每个工具都有各自的优缺点,这里推荐两个其他的:Visual Paradigm 和 PlantUML



Visual Paradigm

Visual Paradigm 有社区版+高级版之分,社区版能满足大部分需求,基本的UML图都可以画出来,重点是免费;高级版可以试用30天,30天之后就要掏腰包了

使用社区版的时候,会遇到某些高级的功能不能用,此时可以登录到其web版Visual paradigm online ,去看看是否可以使用该高级功能,很多时候是可以用的。以下是社区版支持的UML图


UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具 



UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具





PlantUML

还有一个就是看起来更高级的软件: PlantUML。之所以看起来高级,是因为它跟Markdown一样有自己的语法需要一定的编程,并且可以在IDEA中装上插件之后可以边编写边展示。更为重要的是它是开源免费的,具体语法可以在使用的时候去官网上查看: https://plantuml.com/。大致步骤如下


首先,在IDEA中安装插件

UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具


其次,安装 graphviz dot 进行视图展示,否则将会看到这样的东西


graphviz dot 的安装步骤很简单, 拿mac举例
brew install libtoolbrew link libtoolbrew install graphvizbrew link --overwrite graphviz


安装之后,在IDEA中刷新下,就出来了



以上是关于UML中的association/composition/aggregation有何区别,以及两款还不错的画图工具的主要内容,如果未能解决你的问题,请参考以下文章

软件设计之UML—UML中的六大关系

UML:包中的包

C++中的UML类图

UML 中的语义关系

UML中的9种图

『软件工程13』浅谈面向对象方法,统一建模语言UML