UML 简易使用教程

最近刚好有空,遂决定对应 UML 常用的一些图进行整理,供自己以及需要的人查阅。
UML 分为静态模型与动态模型。静态模型描述一个系统的静态特征,固定的框架结构。包括用例图类图、对象图、组件图、部署图;动态模型包括时序图、协作图、状态图、活动图。本文将主要对用例图、类图、时序图、状态图的使用进行了简要介绍。

一、静态建模

1 用例图(use case )

1.1 作用

展示系统的核心功能及与其交互的用户。系统可以是整个系统,也可以是某个局部,但用户一定是在该系统外。

1.2 要素

用例(use case):也就是一个相对独立的功能。

参与者(actor):与用例存在交互关系的外部实体。

关系:包括参与者与用例间的关系,参与者之间的关系,以及用例间的关系。

1.3 语法

用例 用椭圆表示,中间写上功能名。
image.png

参与者 一般是一个小人的形状。
image.png

关系 用带箭头的直线表示,箭头表示信息传输方向,如果不关注信息的流向,也可省略箭头。
image.png

1.4 举例

如图是某视频软件播放系统的用例图,我们能从中获取的最主要信息是什么呢?显然是普通用户能使用播放、暂停、选集、查历史记录的功能,而会员用户还能使用投屏功能。
image.png

2 类图

类图是我们使用较多且相当实用的一种图。

2.1 作用

展现多个类的特性,以及类之间的协作与交互,用来对系统的静态结构进行建模。

2.2 要素

类:包括类名、属性和方法三部分。

接口:这里指的是接口类,不可被实例化,只可被实现。

关系:类之间的关系主要有以下几种:

  • 关联 事物之间的一种基本关系,如老师和学生间有教学关系,员工和公司间是雇佣关系。
  • 组成关系 包括组合金额聚集,前者部分与整体的联系更紧密。(1)聚集 表示多个同类型的部分构成了整体,如森林是树木的聚集,蚁群是蚂蚁的聚集。(2)组合 同一事物整体与局部的紧密组成关系。如人组合了眼睛,眼睛组合了眼球。
  • 依赖 这个关系不好描述,如农民使用锄头种地,鱼依赖水存活,程序员通过chatgpt 干活。
  • 泛化 类图里就是继承。
  • 实现 实现某个接口。

需要明白,类之间的关系并不总是那么明确,比如关联和依赖,有时间就不太好判定。个人认为,也没必要过于较真究竟是哪种关系,在面向对象写法中,主要就是继承和组合,类图能传递出该用哪种就足够了。

2.3 语法

用一块矩形表示。从上到下依次是类名、属性和方法。属性后可加上属性的类型,方法的括号中也可写上参数,但个人比较喜欢下图这种最简略的写法。属性和方法名前需加上符号说明访问权限:

  • + 表示公有
  • - 表示私有
  • # 表示保护
    image.png

接口 用一个圆圈表示
image.png

关系 关系的表示直接看下面的图吧,当然,部分图有不同的画法,不再赘述。

image.png

2.4 举例

下面是我 YY 的一个视频播放系统的类图,主要是看看各种关系怎么画,对照着回顾一下 2.3 中的内容。(1)继承,普通用户和会员用户都继承了用户这个类;(2)依赖,用户依赖于播放管理器进行各种操作;(3)组合,播放管理器组合了多媒体控制器、启停管理器、资源管理器;(4)实现,多媒体控制器需要实现投屏这个接口;(5)关联,资源管理和视频资源间存在管理关系。

image.png

3 对象图

个人似乎还没有使用过。

3.1 作用

描述在某一时刻,类图中各个对象之间的关系。在不同时刻,类图中每一个类对应的对象数目是不一样的,也就是说同一个类图的对象图会随着时间变化。

3.2 要素

对象结点:某时刻类对应的对象。

关系:对象间的关系,通过链来联系。

3.3 语法

对象结点 的表示方法与类相似,只是对象名下加下划线,与类作区分。
image.png

关系 用直线表示,有向关系加箭头。

4 组件图

也称为构建图,是被封装起来的软件逻辑部件,软件系统正是由这些部件构成。与类相似,但是其范围更大,可以是包含多个类的子系统,当然也可以是单独一个类。

4.1 作用

描述一个系统所分解的构建及其关系,用来封装系统中的一组类,从而使这组类实现的功能可被复用。

4.2 要素

组件:包括接口和端口。接口是指其向外部提供或从外部获取的操作,与类中的接口类似;端口是一个部件,用来与外部进行通信,它是对接口的包装,一个构建额可以只有接口而没有端口。

关系:组件间的关系。

4.3 语法

构建 的表示如图。端口可以没有,接口直接由构建呈现。

image.png

5 部署图

这块我没有实战经验,只是根据资料进行的简单总结。

5.1 作用用来表现用于部署软件的物理设备信息。

5.2 要素

结点:可以部署软件制品并能够进行计算的物理设备。
连接:结点间进行通信的交互路径。结点间的关系有通信、包含、和使用。

5.3 语法

结点 用一个立方体表示。
image.png

二、动态建模

1 时序图

1.1 作用

描述一段时间范围内,多个对象之间交互的消息时间顺序

1.2 要素

实体:时序图中参与交互的角色。

生命线:参与交互的实体及其下面的虚线被称为生命线,在这条线上,时间是从上到下递增的。

消息:对象之间传递的信息。包括(1)同步消息,发送者需要停止活动等待接收方返回;(2)异步消息,发送方不等待返回,继续活动;(3)返回消息,过程调用返回。

交互事件:在交互的某个时刻发生的事件,也被叫做激活。一条消息必然对应着发送消息的事件和接收消息的事件。

1.3 语法

生命线 用矩形框加虚线表示。

image.png

消息 的表示如下。(哈哈,我发现这个软件里的小图标画的很到位,我就不画蛇添足再搞一遍了,直接贴过来了

image.png

1.4 举例

还是用之前的视频软件举例,下面是其登录时的时序图。

image.png

在这个流程中,有一个 alt 选项框,表示如果校验通过(虚线框上部分),就跳转到内容主页,否则就提示错误信息(虚线框下部分)。其他常用的条件操作还有:

  • opt:if true,如果成功就执行条件框里对应的内容;
  • loop:循环,满足条件时,虚线框内容可以多次执行;
  • par:并行,每一个虚框里的内容会同时执行;
  • region:临界区域,该虚框只允许一个线程对它立即执行。

2 协作图

2.1 作用

表现一定范围内对象之间的协作的信息,也就是参与交互对象间的结构关系,也称为通信图。

2.2 要素

对象实体:参与交互的对象实体。

链:两个实体之间存在的消息联系。

消息:实体间传递的消息。

2.3 语法

对象实体 用矩形框表示,冒号前是对象名(可省略),冒号后是对象所在类的名。
image.png

用一条无箭头的线表示。

消息 用带箭头的直线表示。

2.4 举例

image.png

3 状态图

3.1 作用

描述一个对象在事件触发时,其内部状态的转变过程。

3.2 要素

状态结点:表示事物的一个相对稳定的状态,必有一个初始状态和一个结束状态。

动作:导致状态变化的操作或事件。

3.3 语法

状态结点 用一个圆角矩形表示

image.png

3.4 举例

image.png

4 活动图

4.1 作用

用于事物的动态行为过程建模,描述活动的过程,展现从一个活动到另一个活动的控制流。

4.2 要素

活动结点:活动流程中的一个步骤,分为(1)动作结点,活动的执行单元;(2)控制结点,包括判断(decision)/合并(merge),特点是只会走一条路径;分叉(fork)/结合(join),特点是所有路劲都走了才会继续进行活动流程(3)对象结点,描述活动中的实体或对象。
转换:从一个活动到下一个活动。

4.3 语法

image.png

4.4 举例

image.png

三、总结

用例图、类图、时序图、状态机图这四种图形是最为常用的,需要熟练绘制理解。至于其他几种图形,在我的见识中,几乎没有使用过,能读懂即可,所以我写的也不很详细。

猜你喜欢

转载自blog.csdn.net/hejnhong/article/details/130190454