简介

组合结构图用来显示组合结构或部分系统的内部构造,包括类、接口、包、组件、端口和连接器等元素,是UML2.0的新增图。

组合结构图侧重复合元素的方式展示系统内部结构,包括与其他系统的交互接口和通信端口,各部分的配置和协作,组件相关的服务,以及各服务之间的通信和调用。

组合结构图建模步骤

     - 确定系统中的主要组合结构、重要类以及与外部的连接或调用关系

     - 分析主要组合结构在系统中所起的作用以及与系统中其他组件的调用关系

     - 将重要类分解为复合元素,并确定其部件、接口以及需要对外暴露的端口

     - 确定类复合元素与其内部成员之间的比例关系、成员与成员之间的连接关系、接口的种类以及该类元与其他类之间的关系

     - 将需要进行紧密合作共同完成一项功能的一系列角色定义为协作,并确定协作的角色与连接器类型

组合结构图主要元素

  • 类元与成员

  - 类元:类元素在类图中和组合结构图中的表示形式不同

     类元素在组合结构图中以复合元素的方式展示内部结构,比如对外暴露接口、端口或部件。

      

  - 成员:成员指与类元具有组成关系的其他类,一般把成员放到类元的内部结构中描述

      如下所示,CPU、Memory等与Computer类元有组成关系

     

  - 类元与成员的数量关系:一对一或一对多

    

        

  - 成员与成员的连接关系:成员之间如果依赖、泛化、关联或调用关系可以用连接符连接。用不带箭头的直线标识连接符

        

  - 类元与关联类的连接关系:在类元中用边框为虚线的矩形标识关联类

          

  • 组件(Component): 承担具体功能单元的实际文件,一般为lib, jar, dll, exe等格式,遵循接口定义并提供具体的接口实现

     

  • 部件(Part):代表属于类元的一个元素,该元素可能包含一个或多个实例。常用在类或组件内部用不加修饰的矩形框标识

    

  • 接口(Interface):一组操作的集合,声明了组件提供或请求的服务契约,这个契约由实现和使用这个接口的组件共同遵守。

     - 提供接口:也叫供接口,是指组件给其他组件提供服务时实现的特性和约束。用带棒球体标识

        

     - 需求接口: 也叫需接口,是指组件像其他组件请求服务时要遵循的接口。用带棒杯体标识

      

  • 端口(Port):类元与外部部件交互的连接处。用类元边框线上的小矩形框标识

   类元一般都是以封闭的结构体,在组合结构图中通过端口与外部交互。

    

组合结构图元素关系

  • 委托与委托连接器(Delegate Connector):委托用来定义组件外部接口和端口的工作方式。用带关键字<<delegate>>的实线箭头标识委托连接器

      - 委托连接器表示法

    

      - 委托示例

        

  • 协作(Collaboration):定义了共同完成一项功能的一系列角色,包括这些角色相应的实体和实体间的关系。用虚线框椭圆标识协作

      - 协作表示法

        

      - 协作示例

        

  • 绑定与角色绑定连接器(Role Binding Connector):绑定用来连接从协作到完成该角色任务的类元。

       用带关键字Role的虚线箭头标识角色绑定连接器,并在类元端显示角色名称。

      - 角色绑定连接器表示法

    

  - 绑定示例

        

  • 表现与表现连接器(Represents Connector):表现用来连接从协作到使用该协作的类元。用带关键字<<represents>>的虚线箭头标识表现连接器

      - 表现连接器表示法

    

      - 表现示例

        

  • 发生与发生连接器(Occurrence Connector):发生用来连接从协作到描绘该协作的类元。用带关键字<<occurrence>>的虚线箭头标识

      - 发生连接器表示法

    

      - 连接示例

        

组合结构图示例

以供应链(生产商-厂家直销-批发商-零售-电子商务)为例

组合结构图注意事项

    - 侧重类的整体特性,就使用类图;侧重类的内部结构,就使用组合结构图

    - 注意区分端口和接口,端口主要是类元对外可视的部分、负责类元与外部环境的交互,接口主要是类元自身的供需定义

    - 注意区分组件和部件,组件一般是指系统中独立的组成部分,部件一般指类元内部的组成部分

    - 对于合作紧密完成意向功能的一系列角色建议组合为协作,对外作为独立的整体操作

    - 注意区分不同的连接器类型及适用场景

Python设计模式 - UML - 组合结构图(Composite Structure Diagram)的更多相关文章

  1. python 设计模式之组合模式Composite Pattern

    #引入一 文件夹对我们来说很熟悉,文件夹里面可以包含文件夹,也可以包含文件. 那么文件夹是个容器,文件夹里面的文件夹也是个容器,文件夹里面的文件是对象. 这是一个树形结构 咱们生活工作中常用的一种结构 ...

  2. Python设计模式 - UML - 用例图(Use Case Diagram)

    简介 用例图主要是从用户的角度出发对软件产品的功能及执行者进行描述的. 用例图是从需求分析到软件交付的第一步,图示化展示参与者与参与者之间.参与者与用例之间.用例与用例之间的关系,帮助开发人员更好的理 ...

  3. Python设计模式 - UML - 总览

    说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及m ...

  4. Python设计模式 - UML - 对象图(Object Diagram)

    简介 对象图和类图的基本概念是类似的,可以看作类图在系统某一时刻的镜像,显示了该时刻系统中参与交互的各个对象以及它们之间的关系. 对象图的元素包括对象.链接.包,元素之间的关系和类图相似. 对象图建模 ...

  5. 乐在其中设计模式(C#) - 组合模式(Composite Pattern)

    原文:乐在其中设计模式(C#) - 组合模式(Composite Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 组合模式(Composite Pattern) 作者:weba ...

  6. 设计模式:组合(Composite)模式

    设计模式:组合(Composite)模式 一.前言   关于Composite模式,其实就是组合模式,又叫部分整体模式,这个模式在我们的生活中也经常使用,比如说如果读者有使用Java的GUI编写过程序 ...

  7. Python设计模式 - UML - 类图(Class Diagram)

    简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系 ...

  8. 【设计模式】组合模式 Composite Pattern

    树形结构是软件行业很常见的一种结构,几乎随处可见,  比如: HTML 页面中的DOM,产品的分类,通常一些应用或网站的菜单,Windows Form 中的控件继承关系,Android中的View继承 ...

  9. [设计模式] 8 组合模式 Composite

    DP书上给出的定义:将对象组合成树形结构以表示“部分-整体”的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字“树形”.这种树形结构在现实生活中随处可见,比如一个集团公司,它有一 ...

随机推荐

  1. SMTP 协议

    SMTP 响应状态码 代码 说明 说明 211 System status, or system help reply 系统状态或显示系统帮助. 214 Help message 显示系统帮助,通常用 ...

  2. cassert(assert.h)——1个

    http://www.cplusplus.com/reference/cassert/assert/ 声明:void assert (int expression); #include <ios ...

  3. python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  4. jenkins自动构建站点

    jenkins构建iis主要内容, 安装过程百度很多,就不多介绍 看图是主要内容 msbuid功能 1.执行vs的编译过程 2.编译好的文件发布到具体的路径下 批处理功能 1.创建站点 2.创建对应的 ...

  5. (转)并发编程 – Concurrent 用户指南

    原文出处: 高广超 译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/in ...

  6. C语言的split功能

    其它高级语言都有字符串的split功能,但C没有系统自带的,只能自己写一个了. void c_split(char *src, const char *separator, int maxlen, c ...

  7. 使用Git将本地文件提交到远程仓库

    一 操作准备条件: git远程仓库已经建好了,本地文件已经存在了,现在要将本地代码推到git远程仓库保存. 解决办法如下: 1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以 ...

  8. python类特列方法使用

    class Rgc(object): def __new__(cls, *args, **kwargs): print('在类通过__new__方法实例化一个对象') return super(Rgc ...

  9. 【亲测】Java 接口自动化步骤

    GET请求(Maven) 一. src/main/java 1.[地址--HOST]创建并设置配置文件(后缀名.properties的文本文件):存放接口请求的host地址 2.[地址]TestBas ...

  10. 特殊字符的过滤,防止xss攻击

    概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...