UML建模中包图、组件图和部署图学习笔记

对于较大的项目进行UML建模,由于有很多的类和用例,仅仅利用类图和用例图的话,常常会使结构变得更为复杂。此时如果可以以功能模块划将类图和用例图进行封装,可以很好地简化结构图,让开发人员或者使用人员更容易看懂整个结构或流程。此时包图会是不错的选择。利用包图可以封装相同类型的类或用例,包与包之间利用不同的联系进行连接。此时,庞大复杂的系统变成了,一目了然的关系图。顿时,整个系统的架构都尽收眼底。

而组件图和部署图,个人感觉则是它们之间有点相似,如果说组件图把整个系统中用到的组件进行了虚拟的连接的话,那么部署图则是把整个系统所需硬件设备的物理连接体现了出来。

下面分别将这三种图进行一个总结。

1      包图

什么是包图

书上给出的包的定义:包是将一些具有共性的类组合在一起。在ROSE建模中包的作用相当于目录结构。但它与某些编程语言的包组织功能相对应,实际上它与Java语言的包概念十分相似。在UML中包用如下图所示。

包图不仅仅能封装类

而包图不仅仅局限于封装类,对于用例,组件等其他模型元素也可以进行封装,甚至一个包可以嵌套到另一个包中,进行包的封装。

包图中包之间的关系

包之间和类之间一样可以画出依赖性关系。包依赖性也可以用虚线箭头表示,如图所示。

从NewPackage1到NewPackage2的依赖性关系表示NewPackage1中的某些类与Package2中的某些类存在单向关系。也就是说,NewPackage1中的某些类要知道NewPackage2中的某些类。这具有复用意义。如果两个包存在如上依赖关系,则NewPackage1包依赖于NewPackage2包。由于存在依赖关系,因此不能直接在一个应用程序中复用NewPackage1,但可以复用NewPackage2包,因为后者没有依赖于其他包。

包图中最好不要有循环依赖关系

要确定包依赖关系,就要检查类图中的关系。如果不同包中的类之间有关系,则包也有关系。而且创建包依赖性关系时,要尽量避免循环依赖性关系。循环依赖性如图所示。

此时Package1包中的某些类要知道Package2中的某些类,而Package2包中的某些类又要知道Package1包中的某些类,这样两个包都不容易复用,一个包改变时会影响另一个包。这样会失去包封装性的好处。如果要破坏循环依赖性,可以将一个包一分为二。比如我们要破坏上图的依赖循环性,那么可以将Package2包中的Package1包所依赖的类移到Package3中。如图所示。

这样更能体现包图的实际运用意义,使每个功能都模块化并封装成包,并且尽最大程度降低模块之间,也就是包之间的耦合度。

2      组件图

什么是组件图

书上的定义:组件图是个UML框图,用来显示系统中的组件及其相互依赖性。在组件图中,我们着重考虑的是系统的实际结构。主要描述的是系统组件及其相互依赖性关系。这里我们定义组价是代码的物理模块。它包括代码库和运行文件。比如,我们使用C++语言,那么每个.cpp和.h文件都是单独的组件。编译后生成的.exe文件也是组件。

组件的类型

1)        实施构件:这类构件是构成一个可执行系统必要和充分的构件,例如动态链接库(dll)、可执行文件(exe),另外还包括如COM+、CORBA及企业级Java Beans、动态Web页面也属于实施构件的一部分

2)        工作产品构件:这类构件主要是开发过程的产物,包括创建实施构件的源代码文件及数据文件。这些构件并不是直接地参与可执行系统,而是用来产生可执行系统的中间工作产品

3)        执行构件:作为一个正在执行的系统的结果而被创建的,例如由DLL实例化形成的COM+对象

组件之间的关系

组件之间不仅仅只有依赖关系。组件实现了某个接口的话,那么组件与接口之间的关系就是实现关系。另外,关联、继承关系也可以在组件之间体现。

所以组件图可以有四种关系,依赖、实现、关联和继承。

3      部署图

什么是部署图

相比组件图,部署图考虑的是应用程序的物理部署,如网络布局和组件在网络上的位置的问题。部署图显示了网络中的所有结点、结点间的连接和每个结点上运行的过程。它是对硬件物理设备的描述。如图就是一个部署图的例子。

部署图中主要包括处理器和设备。处理器和设备都是网络上的节点。

部署图的基本要素

1.      处理器

处理器是任何具有处理功能的及其。服务器、工作站和其他具有处理功能的机器都是处理器。在UML中处理器用下面符号表示:

处理器有很多细节问题,比如它的处理器版型、特性和计划等信息。

2.      设备

设备是没有处理功能的及其或硬件,包括哑终端、打印机、扫描仪等。在UML中,设备用下面的符号表示:

和处理器一样,设备也有各种细节,比如它的版型。特性等。这些细节与处理器大致相似。

3.      结点之间的连接

连接是两个处理器、两个设备或处理器与设备之间的实际连接。通常,连接表示网络结点之间的物理网络连接。连接也可以表示两个结点间的Internet连接。同时,连接可以指定版型,也可以指定连接的特性。

【设计模式】UML建模之包图、组件图和部署图学习笔记相关推荐

  1. 设计模式——UML建模之精选核心知识用例图、构件图、部署图、对象图的小结(一)

    文章大纲 引言 一.UML 的核心图概述 二.用例图 1.用例图概述 2.用例图的核心元素 2.1.参与者 2.2.用例 2.3.容器 2.4.用例图内的关系 三.组件图 四.部署图 五.对象图 引言 ...

  2. UML实现图 组件图、配置图

    在学习UML实现图的时候发现书上和视频里对实现图的叫法不一样,但是它们所描述的功能是一样的,在视频中称"组件图"为"构件图":称"部署图"为 ...

  3. UML—部署图(配置图+组件图)

    前言 配置图是对面向对象系统的物理方面建模时使用的两种图之一,另一个是组件图 配置图又称部署图:描述了执行处理过程的系统资源元素的配置情况以及软件到这些资源元素的映射 配置图可以包括包和子系统他们可以 ...

  4. UML建模——图书管理系统(各种图)

    UML建模--图书管理系统(各种图) 用例图 活动图 类图 包图 顺序图 通信图 构件图 部署图 结构图

  5. 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习

    深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 文章目录 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 表示学习 表示学习的意义 离散表示与分布式表示 端到端学习 基于重构损 ...

  6. GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件

    GTK+图形化应用程序开发学习笔记(五)-组装盒.组合表.固定容器构件 一.组装盒 组装盒(GtkBox)也称为组合构件.使用组装盒可以将多个构件放在一个容器中.容器可以把组装盒看作是一个构件.不像按 ...

  7. GTK+图形化应用程序开发学习笔记(一)—概述

    GTK+图形化应用程序开发学习笔记(一)-概述 一.什么是GNOME. GNOME的意思是"GNU Network Object Model Environment"(GNU网络对 ...

  8. Vue学习(组件传参)-学习笔记

    文章目录 Vue学习(组件传参)-学习笔记 父到子 子到父 父操作子-ref(类似于操作dom) 兄弟之间传参 Vue学习(组件传参)-学习笔记 父到子 Father:(index) <temp ...

  9. UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言. UML是面向对象设计的建 ...

最新文章

  1. 动态规划练习1--Unique Paths
  2. 你不可不知的家庭装修禁忌
  3. redis学习笔记-持久化
  4. 现代化自定制 - 页面上的自定制
  5. [分治FFT]「CTSC2018」青蕈领主
  6. 应用上线前的“体检”,你知道需要检测哪些指标吗?
  7. 顺序容器的访问:访问成员函数的返回是引用(和普通数组一样,普通数组的下标返回值也是数组)
  8. linux 的网络操作与配置文件,Linux常用文件与网络操作命令速记指南
  9. android远程命令行工具,Android 使用 adb命令 远程安装apk
  10. 奇虎回应委员退出360督导委员会 称流氓软件产业链已基本消灭
  11. 值得看的hadoop书籍
  12. ASP.NET 3.5 开发大全DOC版
  13. SpringBoot下载项目中文件
  14. VBS 代码合集(慎用,好玩)
  15. 淘宝图片服务器的学习
  16. 利用VB2005制作颜色渐变的进度条
  17. C语言中16进制转字符串字符串转16进制
  18. 五分钟回顾 | 2016年智能交通大事件
  19. 给销售组织分配分销渠道
  20. quartus 中无法选择USB-Blaster下载程序的问题。

热门文章

  1. Ubuntu18.04 通过命令修改ip地址(亲测有效)
  2. 【代码分解】用Python实现一个电影订票系统
  3. ccie路由器技术有哪些?
  4. 开放式系统互联模型(网络的七层架构)
  5. Shader视差贴图
  6. Android 自动化测试(5)robotium
  7. 利用Matlab从图片中获取凸多边形的内角角度
  8. TMS320F2812中文资料介绍
  9. 前端渲染HTML与后端渲染HTML的区别?
  10. Mac - 加密压缩文件(免费)