UML 简易使用教程

news2024/11/24 0:24:21

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

  • 一、静态建模
    • 1 用例图(use case )
      • 1.1 作用
      • 1.2 要素
      • 1.3 语法
      • 1.4 举例
    • 2 类图
      • 2.1 作用
      • 2.2 要素
      • 2.3 语法
      • 2.4 举例
    • 3 对象图
      • 3.1 作用
      • 3.2 要素
      • 3.3 语法
    • 4 组件图
      • 4.1 作用
      • 4.2 要素
      • 4.3 语法
    • 5 部署图
      • 5.1 作用用来表现用于部署软件的物理设备信息。
      • 5.2 要素
      • 5.3 语法
  • 二、动态建模
    • 1 时序图
      • 1.1 作用
      • 1.2 要素
      • 1.3 语法
      • 1.4 举例
    • 2 协作图
      • 2.1 作用
      • 2.2 要素
      • 2.3 语法
      • 2.4 举例
    • 3 状态图
      • 3.1 作用
      • 3.2 要素
      • 3.3 语法
      • 3.4 举例
    • 4 活动图
      • 4.1 作用
      • 4.2 要素
      • 4.3 语法
      • 4.4 举例
  • 三、总结

一、静态建模

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

三、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TensorFlow 智能移动项目:11~12

原文:Intelligent mobile projects with TensorFlow 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只…

Flutter 第一个界面

第一个页面 app首页 入口函数 一个Flutter工程的入口函数与Dart命令行工程一样是main,不同的是在Flutter中执行runApp(ArticleApp()) 就能够在手机屏幕上展示这个Widget。 import package:flutter/material.dart; void main() > runApp(new ArticleApp()); Ar…

OpenAI不能访问有什么方法解救呢?试试这方法吧

最近发现国内不挂代理是不能访问到openAI的接口的,为了解决这个问题,我一直在github上需在解决方案,今天终于被我找到一个大神开源了一个解决方案。下面就来看看如何做吧。 整个项目的代码很简单只有几行代码: {"rewrites&q…

几种在Python中List添加、删除元素的方法

嗨害大家好鸭!我是爱摸鱼的芝士❤ 一、python中List添加元素的几种方法 List 是 Python 中常用的数据类型, 它一个有序集合, 即其中的元素始终保持着初始时的定义的顺序 (除非你对它们进行排序或其他修改操作)。 …

进程互斥的实现方式

1.进程互斥的软件实现方法 1.单标志法 算法思想:两个进程在访问完临界区后会把使用临界区的权限转让给另一个进程,也就是说每个进程进入临界区的权限只能被另一个进程赋予 局限性 2.双标志先检查法 算法思想:设置一个布尔数组flag[]&#xff…

python 笔记:PyTrack(将GPS数据和OpenStreetMap数据进行整合)【官网例子解读】

论文笔记:PyTrack: A Map-Matching-Based Python Toolbox for Vehicle Trajectory Reconstruction_UQI-LIUWJ的博客-CSDN博客4 0 包的安装 官网的两种方式我都试过,装是能装成功,但是python import PyTrack包的时候还是显示找不到Pytrack …

Altova MapForce 2023 Crack

Altova MapForce 2023 Crack 数据映射项目中的注释-除了支持对数据映射项目的单个连接进行注释外,现在还可以向源组件和目标组件添加注释,以帮助记录映射的作用和实现方式。 支持XML输出中的standalone“yes”声明-在独立文档声明中,值“yes”…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 : https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具,它不仅能管理包,还能隔…

Linux嵌入式学习之Ubuntu入门(四)Makefile

系列文章目录 一、Linux嵌入式学习之Ubuntu入门(一)基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等 三、Linux嵌入式学习之Ubuntu入门(三)用户、用户组…

go语言切片做函数参数传递+append()函数扩容

go语言切片函数参数传递append()函数扩容 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 二叉树递归go代码: var ans [][]int func pathSum(root *TreeNode, targetSum int) ( [][…

Longitudinal Change Detection on Chest X-rays Using Geometric Correlation Maps

文章来源:[MICCAI2019] Keywords:Chest X-ray;Longitudinal analysis;Change detection;Geometric correlation 一、本文提出的问题以及解决方案 在胸部X-ray图像的诊断中,医生会考虑与先前检查相比病变的…

8.网络爬虫—正则表达式RE实战

8.网络爬虫—正则表达式RE实战正则表达式(Regular Expression)re.Ire.Are.Sre.Mre.Xre.Lre.U美某杰实战写入csv文件:前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Pyth…

MongoDB 聚合管道的文档操作($sort,$skip,$limit,$sample,$unwind)

目前为止,我们已经介绍了一部分聚合管道中的管道参数: $match:文档过滤 $group:文档分组,并介绍了分组中的常用操作:$addToSet,$avg,$sum,$min,$max等。 $add…

COCO数据集相关知识介绍

👨‍💻个人简介: 深度学习图像领域工作者 🎉总结链接: 链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括: &am…

SpringTx 源码解析 - @Transactional 声明式事务执行原理

一、Spring Transactional 声明式事务执行原理 Transactional 是 Spring 框架中用于声明事务的注解,可以标注在方法或类上。当标注在类上时,表示该类的所有public方法都将支持事务。当标注在方法上时,表示该方法将在一个事务内执行。 Trans…

BGP对等体建邻配置

BGP对等体大体分为EBGP对等体和IBGP对等体。而BGP对等体的建邻主要分为两种:1、使用物理接口建邻 2、使用环回借口建邻,针对不同的BGP对等体选用不同的建邻方式。 EBGP的建邻主要使用的是物理接口建邻 IBGP的建邻主要使用的是环回接口建邻 这两种建邻方…

VBA的面向接口编程

工作中有时候会用到VBA(Visual Basic for Applications),不是很多,也没有专门去学习VBA,用的时候遇到问题就上网去查资料,解决问题了就放下了。 今天被同事问到VBA中类的用法,我从来没有用过&am…

论文解读:基于 OpenMLDB 的流式特征计算优化

近期,数据库领域的顶级学术会议 ICDE 2023 在迪斯尼主题公园的故乡 - 美国的安纳海姆(Anaheim)举办。由 OpenMLDB 开源社区和新加坡科技设计大学(Singapore University of Technology and Design)联合完成的研究工作在…

Vue2-黑马(三)

目录: (1)vue2-axios (2)axios-发送请求 (3)vue2-axios-请求体格式 (4)vue2-axios-默认配置 (1)vue2-axios 已经配置了代理,可以…

项目部署---shell脚本自动部署项目

通过shell脚本自动部署项目 操作步骤: 在Linux中安装Git在Linux中安装maven编写shell脚本(拉取代码、编译、打包、启动)为用户授予执行shell脚本的权限执行shell脚本 执行过程:Linux服务器(编译、打包、启动&#x…