聊聊UML静态图-组合结构图

Posted 与小婧同行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊UML静态图-组合结构图相关的知识,希望对你有一定的参考价值。

之前我们聊了对象图、类图、包图,有没有觉得这三个图很接近呢?

对象图的定义虽然在UML2.5的标准中被扩展了,但是我们大都还是会把它当做类图的实例去使用。

许多个类可以归在一个包里。

所以为什么说类图、类是UML中很关键的元素呢,今天我们聊的这个组合结构图也和类有关系。


组合结构图composite structure diagram:它的一大作用就是描述类的内部结构的。

我们先来看一下UML2.5中给出的一个简单的例子。

In Figure i) is a class diagram for the package Cars, with a class symbol representing the fact that the Cars package contains a class Car.

ii) is a composite structure diagram for this class Car.

The class symbol in i) does not have to contain the structure of the class in a compartment; for more realistic models, the class symbols will typically just have the class names, while the composite structure diagrams for the classes will have symbols for the composite structures.

聊聊UML(7)静态图-组合结构图


在上面的这张图中,我们可以看到,左边的是我们所熟悉的包图,里面包含了一个类Car。

而右边是类Car的组合结构图,我们可以看到这个类包括车轮和引擎两个部分,这两个部分并且是通过传动轴(半轴)进行连接的。


为什么要研究组合结构图?

有的时候我们在设计的时候并不会将类设计到特别深入的地步,否则开发的详细设计文档就由我们产品和BA来接手了。

而有的时候我们又需要去强调某个类内部的一些结构和接口关系。


比如上面这个例子,你当然可以选择把轮胎和引擎抽象出来做两个子类,与类Car形成复合关联关系。

但是类图并不会去强调接口,只会强调说一个车子有几个轮子,有几个引擎,这些轮子和引擎是车子的一部分。

当你想要强调轮子和引擎的接口关系的时候,使用类图是不恰当的。


这个时候你使用组合结构图就会显得更加清晰。

看了这个图你会知道,哦,车轮并没有直接和引擎直接连接,而是通过一个传动轴进行连接的,而且是两个轮子通过传动轴与引擎连接(前驱或者后驱)。

而对于这个传动轴的需求,可以进一步进行描述。


聊聊UML(7)静态图-组合结构图

从上面的图中我们也不难发现,组合结构图的构成元素包括:

Part部件(矩形):车轮,引擎。

Port端口(小方块):图中标注了P的那个。

Connector连接(下图中的小圆圈和半圆):圆圈表示提供连接,半圆表示请求连接。


下面这张图大家可以试着分析一下。

聊聊UML(7)静态图-组合结构图

聊聊UML(7)静态图-组合结构图



关于组合结构图,其实没有那么多要说明的内容,你可以简单的把它视为类图的一个补充,在必要的时候拿出来使用。




小婧是一名行走在实践路上的资深业务分析师(BA),如果想与我同行,就请关注我吧!



以上是关于聊聊UML静态图-组合结构图的主要内容,如果未能解决你的问题,请参考以下文章

UML类图和用例图

UML 类图

uml之协作图

聊聊UML静态图-类图

UML静态结构模型与动态行为模型的定义与作用

聊聊UML静态图-包图