本文对UML中除了用例图之外的剩余三种共九个图形进行介绍;UML将面向对象技术分成用例模型 和分析模型两种,用例图常用在用例模型中,而本文介绍的剩余九个图形常用在分析模型中。
下面逐个介绍UML的行为图:交互图(顺序图、协作图)、状态图和活动图
UML--交互图
交互图介绍
- 交互图是用来描述对象之间以及对形象和参与者之间的动态协作关系以及协作过程中行为次序的图形文档。
- 其作用是为了描述一个用例的行为。
- 一个用例需要多个顺序图或者协作图,除非是非常简单的用例。
- 交互图又可以细分成顺序图和协作图,它们的侧重点不同 ,但是可以进行相互转换。
交互图的作用
用来检查每个用例中所描述的用户需求,如果没有将需求落实到现有的类中,则需要补充相应的类或者方法。
顺序图(时序图)
- 显示对象 之间交互的图,按照时间顺序排列,重点在于交互对象之间的消息交互
- 一个用例模型由若干个用例图描述。
- 用例图上可能会使用各种颜色,但是颜色只是起辅助阅读的作用。
- 是二维图形,水平是对象维度(没有强制的顺序);垂直轴为时间维度。
- 组成成分:
- 用户:小人儿
- 对象:矩形,表示代码中类的实例化对象
- 时间:从上到下的长条形矩形
- 消息:有方向的箭头(从参与者或者对象指向另外一个对象(参与者))
协作图
- 功能:描述某个系统的行为是如何由系统的成分协作实现的图形。
- 组成:参与者、对象、消息、链。
UML--状态图和活动图
状态图
- 描述一个对象在其生存期间 的动态行为,表示一个对象所经历的状态序列 、引起状态转移的事件 和因为状态转移而伴随的动作。
- 是对系统的动态行为建模的五个图之一;
- 常用来检查、调试和描述 类的动态行为;
- 状态图用来显示状态机 ,重点在于描述状态之间的控制流。
状态图的组成
- 起始:填充圆
- 结束:带边填充圆
- 状态:圆角矩形
- 事件:实心箭头
活动图
- 是对系统的动态行为建模的五个图之一;
- 用来描述系统的工作流程和并发行为;
- 可以看成是状态图的特殊形式;
- 活动图中的一个活动结束后将立即进入下一个活动(可能会需要事件的触发);
- 分成动作状态 和活动状态。
状态图的组成
- 活动:表示某任务的执行;
- 动作状态:原子的、不可分割的、没有内部的;是特殊的活动状态,耗时是可以忽略的。
- 活动状态:可分解的、完成需要一段时间的;(执行进入动作然后转向另一个活动)。
- 泳道:和类是一对多的关系;表示责任区;
- 分支:对于同一个事件,判断出来不同的活动;每一种可能性称为分支;
- 分叉:表示并发行为的开始;
- 汇合:表示并发行为的结束;
- 对象流:对象可以作为活动的输出和输入(比如活动可以创建一个对象或者使用对象)
下面逐个介绍UML的静态图:类图、对象图、包图
UML--类图和对象图
- 类是具有相似结构、行为和关系的一组对象的抽象;
- 在UML中使用划分成三个各自的长方形表示;
- 其名称一般是名词;
- 类之间的关系有:关联、聚集、组合、泛化、依赖
- 关联:表示类和类之间的关系;关联的实例化称为链 ,链表示的是对象和对象之间的关系 (实心三角);关联衍生出来的一个概念称为关联类,用来进一步面熟关联的属性、操作等信息 ,甚至还有自反关联,表示同一个类两个对象之间的关系。
- 聚集:本质上仍然是关联关系,表示整体和部分之间的关系,关键词为包含、组成、分为...部分(空心棱形)
- 组合:是具有生命周期的聚集关系(实心棱形)
- 泛化:本质上是继承关系(空心三角)
- 依赖:如果修改了X导致Y发生了变化,则称Y依赖于X
类图
类图以直观、抽象的方式展示了不同对象之间的静态结构关系。
对象图
- 对象图描述了系统中的对象实例及其之间的关系。它展示了在特定时间点上系统中的对象、类的实例以及它们之间的连接。
- 对象图用于具体展示系统运行时的实例化情况,可以显示对象的状态、属性和关联等信息。
对象图和类图之间的关系是:对象图可以看成是类图的一个快照。
UML--包图
- 描述的是包和包之间的关系
- 包图描述的是模型中的包及其包含的元素组合,是维护和控制系统总体结构的重要建模工具。
- 系统中的每一个元素都只能为一个包所有,一个包可以嵌套在另一个包中。一个包图可以由任何一种的UML图 组成,通常是用例图或者类图。
组成
- 包图由名称和表示/内容两个部分组成;
- 每个部分都使用一个矩形表示,并且名称 使用的是小矩形而内容使用大矩形,因此形如:
plaintext
-----
| |
--------------
| |
| |
--------------
- 包的名称是普通的字符串,或者路径;所以可以是普通名 或者路径名
- 包中内容的可见性:
- +:public的意思
- -:private的意思
- #:protected的意思
关系
包和包之间的关系有两种:依赖和泛化
- 依赖: <--<< name >>--
- 泛化:同类图之间的泛化关系,使用空心箭头表示
下面逐个介绍UML的实现图:构件图、部署图
构件图
- 所谓构件,指的就是遵从一组接口并且提供实现的物理的、可替换的部分;
- 而构件图表示的就是构件之间的相互关系(以及构件和接口之间的相互关系),这种相互关系包括:依赖关系(构件和构件,构件和接口之间)和实现关系(接口和构件之间);
构件的类型--本质上就是一个文件
- 部署构件:基本文件
- 工作产品构件:用来产生部署构件(文件)
- 执行构件:系统执行之后得到的构件(文件)
构件图模型
- 对源代码之间的相互关系进行建模
- 对可执行文件之间的相互关系进行建模
图形特征
- 一个大一些的矩形,中间写上文件名称,可能还会有版本号
- 左侧横跨两个小一点的矩形
- 使用不填充的圆形表示接口
部署图(实施图)
- 用来表示系统中计算节点的拓扑结构 和通信路径与结点上运行的软构件
- 一个系统只能由一个部署图,常用来理解分布式系统
- 部署图常被:结构设计师、网络工程师、系统工程师使用
图形特征
- 长方体
- 长方体内置构件
- 参与者(小人儿)