目录
前言:
1、UML概述
1.1. 定义
1.2. UML的组成分类 :
1.2.1结构图示例:
1.2.2行为图示例:
3. UML 2.x核心图(14种)详解 :
3.1重点掌握(7种高频考试图表) :
(1) 类图(Class Diagram):
(2) 用例图(Use Case Diagram):
(3) 序列图(Sequence Diagram):
(4) 活动图(Activity Diagram):
(5) 状态图(State Machine Diagram):
(6) 组件图(Component Diagram):
(7) 部署图(Deployment Diagram):
拓展:
结语:
前言:
博主回来了,最近事情很对,基本没有时间写文章了,今天的文章是关于UML建模的,是博主在学习过程的一点点总结和收获吧,关于这篇文章,只是作为大家学习面向对象过程中分析定义软件的需求,希望这篇文章可以帮助到大家.
1、UML概述
1.1. 定义
UML(Unified Modeling Language,统一建模语言)
本质:一种图形化、标准化的建模语言,用于软件系统的**可视化、规范设计、构造和文档化。
核心价值:
统一不同开发方法(如面向对象分析设计)的表达方式。
促进开发团队、客户、架构师之间的**高效沟通**。
适用阶段:
需求分析(用例图)、系统设计(类图、序列图)、部署规划(部署图)等。
1.2. UML的组成分类 :
UML图按**描述维度**分为两大类:
1.2.1结构图示例:
类图:描述类、接口、关联关系(如电商系统的`用户类`与`订单类`的关系)。
部署图:展示系统物理部署(如Web服务器、数据库服务器节点分布)。
1.2.2行为图示例:
用例图:定义用户(Actor)与系统的功能交互(如“用户下单”用例)。
序列图:描述对象间基于时间的消息传递(如用户登录的交互流程)。
3. UML 2.x核心图(14种)详解 :
3.1重点掌握(7种高频考试图表) :
(1) 类图(Class Diagram):
用途:定义系统的静态结构(类、接口、关联关系)。
核心元素:
类:属性(`-name: String`)、方法(`+getOrder(): void`)。
关系类型:
(2) 用例图(Use Case Diagram):
用途:描述系统功能需求及用户(Actor)与系统的交互。
核心元素:
参与者(Actor):系统外部实体(人、设备或其他系统)。
用例(Use Case):系统提供的功能单元(如“支付订单”)。
关系类型:
包含(Include):必须执行的子用例(如“下单”必须包含“验证库存”)。
扩展(Extend):条件触发的扩展用例(如“支付失败”扩展“支付”)。
泛化:用例的继承关系(如“VIP支付”泛化“支付”)。
(3) 序列图(Sequence Diagram):
用途:按时间顺序展示对象间的消息交互流程。
核心元素:
对象生命线(Lifeline):垂直虚线表示对象存活时间。
消息(Message):
同步消息:实线箭头(如调用方法需等待返回)。
异步消息:虚线箭头(如触发事件无需等待)。
激活条(Activation Bar):矩形条表示方法执行时间段。
组合片段(Combined Fragment)**:
循环(Loop):重复执行的消息块(如循环查询库存)。
条件(Alt):分支判断(如“库存充足”与“缺货”分支)。
(4) 活动图(Activity Diagram):
用途:描述业务流程或算法步骤(类似流程图)。
核心元素:
活动节点(Action):具体执行步骤(如“提交订单”)。
控制节点:
开始/结束节点:流程起点与终点。
判断节点(Decision):菱形分支条件(如“库存>0?”)。
分叉/汇合(Fork/Join):并行流程控制(如同时处理订单和扣款)。
泳道(Swimlane):划分责任主体(如“用户”、“支付系统”泳道)。
(5) 状态图(State Machine Diagram):
用途:描述对象生命周期内的状态变迁(如订单状态流转)。
核心元素:
- 状态(State):对象在某一时刻的条件(如“待支付”)。
- 转移(Transition):状态间的箭头,标注**事件(Event)和守护条件(Guard)(如“支付成功[金额>0]”触发到“已支付”)。
- 初始状态/终止状态:起点与终点。
(6) 组件图(Component Diagram):
用途:描述系统组件及其接口依赖关系。
核心元素:
- 组件(Component):可替换的功能模块(如“支付组件”)。
- 接口(Interface):组件提供的服务(如`IPaymentService`)。
- 依赖关系:虚线箭头表示组件间的调用(如“订单组件”依赖“支付组件”)。
(7) 部署图(Deployment Diagram):
用途:描述系统物理部署结构(硬件节点、软件组件分布)。
核心元素:
- 节点(Node):硬件设备(如“Web服务器”、“数据库服务器”)。
- 组件实例:部署在节点上的软件(如“订单服务”部署在Web服务器)。
- 通信路径:节点间的连接(如TCP/IP协议)。
拓展:
了解即可(4种低频图表)
1. 对象图:类图的实例化(如某时刻的`用户A`与`订单001`对象关系)。
2. 包图:代码逻辑分组(如将“用户管理”和“订单管理”划分为不同包)。
3. 通信图(协作图):强调对象拓扑结构的交互(类似序列图,但忽略时间顺序)。
4. 定时图:描述时间约束下的交互(如实时系统中消息的响应时间限制)。
总结:UML概述学习要点
结构图 vs 行为图:静态结构(What) vs 动态行为(How)。
高频图表:类图(关系类型)、用例图(包含/扩展)、序列图(消息与片段)。
考试重点:理解图表的核心元素与应用场景,而非死记符号。
如果需要进一步展开某一种图的细节或示例,请随时告诉我!
2. UML的组成
结构图:描述系统静态结构(如类图、组件图、部署图)。
行为图:描述系统动态行为(如用例图、活动图、状态图、序列图)。
3. UML 2.x核心图(14种)
重点掌握**(考试高频):
- 类图(Class Diagram)
- 用例图(Use Case Diagram)
- 序列图(Sequence Diagram)
- 活动图(Activity Diagram)
- 状态图(State Machine Diagram)
- 组件图(Component Diagram)
- 部署图(Deployment Diagram)
- 了解即可:
- 对象图、包图、通信图、定时图等。
三、UML建模原则
1. 抽象分层
- 从需求分析到设计逐步细化(如用例图→类图→序列图)。
2. 高内聚低耦合
-通过类图的关联关系设计松耦合结构。
3. 面向对象思想
- 封装、继承、多态在类图中的体现。
四、考试重点与学习建议
1. 高频考点
类图的关系(组合 vs 聚合 vs 继承)。
序列图的消息时序与组合片段(如循环、条件判断)。
活动图与状态图的区别(流程 vs 状态变迁)。
用例图的包含(Include)与扩展(Extend)关系。
2. 学习建议
理解图表本质:每个图的用途和适用场景(如类图用于设计,用例图用于需求)。
对比记忆:如活动图 vs 流程图,组件图 vs 部署图。
结合真题:通过历年试题分析高频图表和常见题型。
动手绘图:尝试用工具(如StarUML、PlantUML)绘制实际案例。
3. 推荐资源
《UML精粹》(Martin Fowler)
软考官方教程《软件设计师教程》(UML章节)
在线工具:draw.io、Visual Paradigm(免费版)。
结语:
好的,最后也到了总结的时候了,这次写这篇文章是因为考软件设计师中级的时候刚好学到这个UML视图觉得还是比较有意义所有就分享出来,这篇文章或许还有很多地方不足之处,欢迎各位大佬的斧正。