当前位置: 首页 > news >正文

UML(统一建模语言)

文章目录

  • 一、UML 是什么?
  • 二、为什么要用UML?
  • 三、UML图的分类(14种图)
  • 四、常用 UML 图详解(含 Mermaid 实例)
    • 1. 用例图
    • 2. 类图
    • 3. 时序图
    • 4. 活动图
    • 5. 状态机图
  • 总结

一、UML 是什么?

UML(Unified Modeling Language,统一建模语言)是一种标准化的建模语言,用于为软件系统进行可视化说明、构建和文档化。它就像是软件界的蓝图,让不同角色的人(产品、开发、测试)都能基于统一的图形语言进行高效沟通。

二、为什么要用UML?

1、促进沟通,减少歧义: 图形比文字更能清晰、无歧义地表达复杂的设计思路。
2、可视化系统结构: 帮助开发人员从宏观和微观两个层面理解系统,看清系统的组成部分以及它们之间的关系。
3、用于分析和设计: 在编码之前进行建模,可以提前发现设计缺陷,降低后期修改的成本(修复设计阶段的错误比修复代码阶段的错误要便宜得多)。
4、生成代码框架: 很多现代IDE(集成开发环境)可以根据UML图(尤其是类图)自动生成代码骨架,极大提高开发效率。
5、项目文档的核心部分: UML图本身就是最好的技术文档,它清晰地记录了系统的架构和设计决策。

三、UML图的分类(14种图)

UML 2.x 中定义了14种图形,根据其描述的侧重点不同,可以分为两大类和几个子类:

1、结构图:描述系统的静态结构(类、组件、部署等)。
2、行为图:描述系统的动态行为(交互、状态变化、活动流程等)。

下面是这14种图的分类概览,重点介绍其中最常用的几种:
(下图展示了UML图的分类体系)
在这里插入图片描述

quadrantCharttitle UML图分类图谱x-axis "静态结构" --> "动态行为"y-axis "系统状态" --> "交互逻辑""类图": [0.15, 0.8]"组件图": [0.1, 0.6]"部署图": [0.1, 0.4]"对象图": [0.15, 0.2]"复合结构图": [0.2, 0.5]"包图": [0.25, 0.7]"轮廓图": [0.3, 0.9]"用例图": [0.7, 0.9]"活动图": [0.9, 0.7]"状态机图": [0.9, 0.3]"时序图": [0.7, 0.1]"通信图": [0.6, 0.15]"交互概览图": [0.5, 0.25]"定时图": [0.8, 0.45]

四、常用 UML 图详解(含 Mermaid 实例)

下面我们挑选几种最常用、最重要的UML图进行详细说明。

1. 用例图

描述用户与系统之间的交互,是从用户角度看到的系统功能集合。

在线商城系统
include
浏览商品
加入购物车
下单
支付
管理商品
顾客
管理员

核心元素:

  • 小人代表参与者(Actor),是系统外部的角色。
  • 椭圆代表用例(Use Case),是系统提供的功能。
  • 箭头表示关联关系。
  • 虚线箭头<<include>>表示包含关系,指“下单”用例必然包含“支付”用例。

2. 类图

描述系统的静态结构,展示系统中的类的属性方法以及之间的关系。(如关联、依赖、泛化/继承、实现)。它是面向对象设计的核心,直接对应代码结构

Inheritance
Inheritance
Composition
Employee
+String name
+int id
+calculateSalary() : float
SalariedEmployee
+float monthlySalary
+calculateSalary() : float
HourlyEmployee
+float hourlyRate
+int hoursWorked
+calculateSalary() : float
Car
-Engine engine
+start()
Engine
-int horsepower
+init()

核心元素:

  • Employee 是父类,SalariedEmployeeHourlyEmployee 继承自它(泛化/继承关系,空心三角箭头)。
  • CarEngine组合关系(实心菱形箭头),表示Car拥有Engine,且生命周期一致(车没了,引擎也没了)。
  • + 表示 public- 表示 private

3. 时序图

描述对象之间传递消息的时间顺序,强调交互过程中的先后次序。

用户界面认证控制器数据库输入密码点击登录login(username, password)selectUser(username)User Data验证成功显示“欢迎回来!”用户界面认证控制器数据库
  • 核心元素:
    • 垂直生命线表示对象随时间的存在。
    • 激活条(长条矩形)表示方法执行的时间段。
    • 带箭头实线表示同步消息(比如函数调用)。
    • 虚线表示返回消息。

4. 活动图

描述业务流程或算法的步骤流程,类似于流程图,支持并行行为。

开始
用户提交订单
库存充足?
扣减库存
通知库存不足
结束
生成订单
安排发货
结束
  • 核心元素:
    • 圆角矩形表示**活动v(Action)。
    • 菱形表示判断(Decision)。
    • 圆环表示开始和**结束v。
    • 分叉/汇合节点: 粗黑线,表示并发。

5. 状态机图

描述一个对象在其生命周期内所经历的各种状态,以及引起状态转移的事件。(如信号、操作条件变化)。对于具有复杂状态变化的对象(如订单、电梯、游戏角色)非常有用。

支付
发货
确认收货
取消订单
Created
Paid
Cancelled
AdminCancelled
UserCancelled
Shipped
Delivered
  • 核心元素:
    • 圆角矩形表示对象的状态。
    • 箭头表示转移(Transition),箭头上的文字是触发转移的事件
    • [*] 表示初始状态和终止状态。
    • 还可以包含子状态(如Cancelled状态下的两种不同类型)。

总结

图类型核心用途开发阶段
用例图需求分析,界定系统范围需求分析
类图系统详细设计,定义核心类系统设计
时序图细化功能实现逻辑,明确对象交互详细设计、编码
活动图梳理复杂业务工作流需求分析、系统设计
状态机图管理有复杂状态变化的对象系统设计

UML是一个强大的工具,但不必在项目中用完所有14种图。正确的做法是根据项目的实际需求,选择最合适的几种图来表达设计思想。通常,用例图(需求)类图(设计)时序图(逻辑) 三者组合,就能解决大部分问题。


文章转载自:

http://iwu99tC3.kwcnf.cn
http://JKauIbvP.kwcnf.cn
http://W0hOpHHe.kwcnf.cn
http://fSt4LrZG.kwcnf.cn
http://ADIIvX5B.kwcnf.cn
http://GGkZ0Chp.kwcnf.cn
http://w3QZGX4H.kwcnf.cn
http://t0P0Wwh8.kwcnf.cn
http://YwXONVUt.kwcnf.cn
http://cpa9frJ9.kwcnf.cn
http://fl1m1tTY.kwcnf.cn
http://Nf2eUMvq.kwcnf.cn
http://faniZmUs.kwcnf.cn
http://dpZJrcRS.kwcnf.cn
http://cBYUuQyk.kwcnf.cn
http://J5cwR35C.kwcnf.cn
http://FqhC15MM.kwcnf.cn
http://ilT54Kgi.kwcnf.cn
http://RKMCNkgO.kwcnf.cn
http://wnqBi7D5.kwcnf.cn
http://1qPJxg18.kwcnf.cn
http://nBn445tU.kwcnf.cn
http://kolNIiWP.kwcnf.cn
http://WP1sKvW5.kwcnf.cn
http://lQEkcZiF.kwcnf.cn
http://lw0YKvvz.kwcnf.cn
http://X31eVFo6.kwcnf.cn
http://WW51x520.kwcnf.cn
http://vByGZEWf.kwcnf.cn
http://sl1I5uSb.kwcnf.cn
http://www.dtcms.com/a/372085.html

相关文章:

  • Android开发-常用布局
  • Spring Cloud Gateway 进行集群化部署
  • EmbodiedOneVision——类似π0.5集成了离散自回归解码与连续流匹配去噪:单个模型中完成具身推理、动作生成
  • Paper reading - 03. Speech sequencing in the human precentral gyrus
  • Spring事务失效的常见陷阱与解决方案
  • 现代C++:现代C++?
  • ZSet
  • Linux初级篇
  • MySQL集群高可用架构——组复制 (MGR)
  • MySQL Cluster核心优缺点
  • RestTemplate使用 | RestTemplate设置http连接池参数
  • 01OpenCV简介
  • 美股市场股票数据API对接文档
  • Coze源码分析-资源库-删除插件-前端源码-核心接口与工具
  • 【深度学习】重采样(Resampling)
  • http接口幂等性
  • 无重复字符的最长子串
  • 架构思维:架构师视角的 FullGC 治理
  • pytest(1):fixture从入门到精通
  • Logstash中http_poller插件的用法
  • 软考中级习题与解答——第三章_操作系统(1)
  • 基于Python的智能工程资料自动生成模型设计与实现
  • 硬件:传感器(DS18B20)
  • muduo库搭建客户端
  • smpp3.4 协议
  • 阿里云高可用生产环境网络架构实战:VPC规划与多可用区部署
  • 中国移动中兴云电脑W132D-RK3528-2+32G-刷机固件包(非原机制作)
  • 疯狂星期四文案网第63天运营日记
  • 【PCIe EP 设备入门学习专栏 -- 8.2 PCIe EP 寄存器配置空间介绍】
  • Android开发-按钮触控