ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## UML 各个图讲解 ### 一、结构图(描述系统的静态结构) 用于刻画系统中有哪些元素、它们之间的关系。 #### 类图(Class Diagram) **作用** 展示系统中的类、接口及它们之间的关系(继承、实现、关联、依赖等)。 **适用场景** 面向对象系统的建模和设计。 **关系类型**: * **继承(Generalization)**:这是一种是(is-a)的关系。子类继承父类的属性和方法。子类可以看作是父类的一个更具体的版本 * **实现(Realization)**:这种关系用于类和接口之间,表示一个类完全实现了接口中定义的所有抽象方法 * **关联(Association)**:这是一种最常见的关系,表示两个类之间有长期的、稳定的联系,如:“学生”和*课程”之间有关联关系 * **聚合(Aggregation)**:这是一种“**部分-整体**”的关系,但**部分可以脱离整体而独立存在**,如:“班级”**包含**“学生”,但学生离开了这个班级仍然是一个独立的个体 * **组合(Composition)**:这也是一种“**部分-整体**”的关系,但**部分不能脱离整体而独立存在**,它的生命周期完全依赖于整体。如:“公司”**包含**“部门”,但部门通常不能脱离公司而存在 * **依赖(Dependency)**:表示一个类**临时**使用了另一个类。这种关系通常是某个类的方法,如:顾客”**依赖于**“支付系统” **示例** ![](https://img.kancloud.cn/b2/73/b273c58c9b65028cf484def7476ab554_1080x1154.png) #### 对象图(Object Diagram) **作用** 显示某一时刻系统中类的对象实例及它们的关系 **用途** 用于说明类图在运行时的实际情况。 **示例** ![](https://img.kancloud.cn/a0/e4/a0e424e5d2a94e6bd53fa6b2c16816b4_631x366.png) 对象图只有两个部分,类图有三个部分 #### 组件图(Component Diagram) **作用** 展示系统中软件组件(如模块、包、库)之间的关系。 **用途** 软件的分层架构设计,比如 Web 系统分为 UI 层、业务逻辑层、数据库访问层。 **元素** 组件图中主要包括组件、接口及其它们之间的关系三种元素 **示例** ![](https://img.kancloud.cn/6e/bd/6ebd61f6af05f934725ccc927d7781e2_723x518.png) #### 部署图(Deployment Diagram) **作用** 展示系统软件在硬件上的部署情况。 **用途** 运维架构、分布式系统部署图 **示例** ![](https://img.kancloud.cn/8a/9c/8a9c8b4915092535cde02e4c6ed41cf9_1694x1220.png) #### 包图(Package Diagram) **作用** 对类、组件进行分组,展示模块划分和依赖 **用途** 大型系统的分层和分包。 **示例** ![](https://img.kancloud.cn/84/32/84324763f34646122441619877fea7c3_685x544.png) #### 组合结构图(Composite Structure Diagram) **作用** 展示类或组件内部的结构 **用途** 适合复杂类或组件的内部逻辑建模。 **示例** ![](https://img.kancloud.cn/72/be/72be613171fbb0c3374fc24aebc717d1_1123x463.png) ### 二、行为图(描述系统的动态行为) 用于刻画系统在运行过程中的交互、状态变化和流程。 #### 用例图(Use Case Diagram) **作用** 展示系统的功能(用例)以及外部参与者(用户、系统)的关系 **关系类型**: * **包含(Include)**:强制依赖(虚线箭头 + «include») * **扩展(Extend)**:可选依赖(虚线箭头 + «extend») * **泛化(Generalization)**:参与者或用例的继承关系 **用途** 需求分析阶段最常见,帮助与用户沟通需求 **示例** ![](https://img.kancloud.cn/77/a5/77a5eff4fb043f10e70dbf3d17ab64fe_1080x700.png) #### 顺序图(Sequence Diagram) **作用** 展示对象之间随时间发生的消息交互顺序 **用途** 描述具体场景的调用过程,比如用户登录流程 **示例** ![](https://img.kancloud.cn/32/03/32039057a97fc397db2007953f737a92_558x402.png) #### 通信图/协作图 (Communication Diagram / Collaboration Diagram) **作用** 类似顺序图,但更关注对象之间的链接关系,而不是时间顺序。 **用途** 补充顺序图,强调对象之间的结构性联系。 **示例** ![](https://img.kancloud.cn/0c/5d/0c5d20da0349e834a1a8c0612f6a41db_742x453.png) #### 状态图(State Machine Diagram / Statechart) **作用** 描述对象在生命周期中随事件发生而转移的状态。 **用途** 有限状态机建模,如订单状态流转(待支付 → 已支付 → 已发货 → 已完成) **元素**: * **状态**(普通状态、复合状态、并发状态、历史状态) * **初始状态 & 终止状态** * **事件、条件、动作** * **转移(箭头)** **示例** ![](https://img.kancloud.cn/e4/b0/e4b05551acb5de1bac977fd9a5e7ebe9_1080x534.png) #### 活动图(Activity Diagram) **作用** 展示业务流程或系统操作流程 **用途** 工作流、算法流程图。 **流程元素**: * **开始/结束节点**:实心圆 / 同心圆 * **活动(Activity)**:椭圆矩形 * **分支/合并**:菱形 * **并行/汇合**:粗横杠 **示例** ![](https://img.kancloud.cn/eb/0f/eb0f1a1c1be0069c011a1a91b9640ac1_1494x994.png) #### 时序图(Timing Diagram) **作用** 关注对象随时间变化的状态或条件。 **用途** 嵌入式系统、实时系统。 **UML时序图的三种消息及其概念** - 同步消息:消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。 - 异步消息:消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。 - 返回消息:返回消息表示从过程调用返回。 **示例** ![](https://img.kancloud.cn/f3/ae/f3ae86d9e0f00b85ac42a6e4bf828fd6_1000x843.png) #### 交互概览图(Interaction Overview Diagram) **作用** 结合活动图和交互图,展示多个交互之间的控制流。 **用途** 适合高层次描述复杂交互场景。 **示例** ![](https://img.kancloud.cn/19/02/19026a4f88608f7ab61a56f6bd928f6c_914x850.png) ## 表格对比 | **类别** | **图类型** | **主要作用** | **适用场景** | **关键元素** | | --- | --- | --- | --- | --- | | **结构图** | 类图(Class Diagram) | 描述类、接口及其关系 | 系统设计、OOP建模 | 类、属性、方法、继承、实现、依赖 | | | 对象图(Object Diagram) | 显示某一时刻的对象实例及关系 | 调试、说明类关系的实例化 | 对象、链接 | | | 组件图(Component Diagram) | 展示系统模块及依赖关系 | 分层架构、模块划分 | 组件、接口、依赖 | | | 部署图(Deployment Diagram) | 展示系统运行时的硬件与软件部署 | 分布式系统部署、运维架构 | 节点、组件、连接 | | | 包图(Package Diagram) | 模块/类的分组与依赖关系 | 大型系统分层、分包管理 | 包、依赖关系 | | | 复合结构图(Composite Structure Diagram) | 展示类或组件的内部结构 | 内部对象协作关系建模 | 部件、端口、连接器 | | **行为图** | 用例图(Use Case Diagram) | 展示系统功能及用户交互 | 需求分析、业务沟通 | 参与者、用例、关系 | | | 顺序图(Sequence Diagram) | 按逻辑顺序或消息顺序展示对象交互 | 功能调用流程(如登录流程) | 对象、生命线、消息 | | | 协作图/通信图(Communication Diagram) | 展示对象间消息传递关系 | 对象协作关系说明 | 对象、链路、消息编号 | | | 活动图(Activity Diagram) | 描述业务流程或操作流程 | 工作流、算法流程 | 活动、决策、并行、开始/结束 | | | 状态图(State Machine Diagram) | 描述对象生命周期中的状态变化 | 状态机建模(如订单流转) | 状态、事件、转移 | | | 时序图(Timing Diagram) | 展示对象随时间的状态变化 | 实时系统、嵌入式系统 | 状态、时间轴 | | | 交互概览图(Interaction Overview Diagram) | 结合活动图与交互图,展示多个交互场景 | 系统中多个流程的组织方式 | 活动、交互节点、控制流 | ## UML 图所属角色 | **角色** | **需求设计** | **概要设计** | **详细设计** | | :----------- | :----------------------------- | :---------------------------------- | :--------------------------------- | | **产品经理** | 用例图、**时序图**、**活动图**、状态图 | | | | **架构师** | | 部署图、类图(高阶)、**时序图**、**活动图**、组件图 | | | **开发人员** | | | 类图、**时序图**、**活动图**、状态图、协作图 |