UML
发布时间 2023-12-07 15:26:28作者: Arkiya
用例图 (Use Case Diagrams)
用例图是用于描述系统功能需求的图表,展示了系统如何与外部实体(称为参与者)交互以实现特定目标。让我们举一个简单的例子:
示例:在线购物系统
参与者 (Actor):
用户
支付网关
用例 (Use Case):
登录
浏览商品
添加商品到购物车
结账
支付订单
关系:
用户通过登录来访问系统并执行购物流程。
支付网关作为外部系统参与支付订单的处理。
类图 (Class Diagrams)
类图描述系统中的类、接口以及它们之间的关系。让我们以一个简单的图书馆系统为例:
示例:图书馆管理系统
类:
书籍
读者
图书馆员
借阅记录
关系:
书籍和借阅记录之间存在关联,记录了哪个读者借了哪本书。
图书馆员可以管理借阅记录并处理书籍归还。
对象图 (Object Diagrams)
对象图展示类图的实例,并呈现对象及其之间的关系。考虑一个简单的汽车租赁系统:
示例:汽车租赁系统
对象:
Car1: Model - "Tesla", License - "ABC123"
Car2: Model - "Toyota", License - "XYZ789"
Customer: Name - "Alice", RentedCar - Car1
序列图 (Sequence Diagrams)
序列图用于展示对象之间的交互以及消息传递的时间顺序。以在线订单处理为例:
示例:在线订单处理
对象:
用户
订单系统
支付网关
交互:
用户发送订单请求给订单系统。
订单系统验证订单并发送支付请求给支付网关。
支付网关处理支付并返回支付状态给订单系统。
协作图 (Collaboration Diagrams)
协作图也描述对象间的交互,但注重于交互的组织结构。考虑一个简单的社交平台:
示例:社交平台
对象:
用户
帖子
评论
交互:
用户创建帖子,并且其他用户可以对帖子进行评论或点赞。
状态图 (State Diagrams)
状态图描述对象在其生命周期内可能经历的状态变化。以订单状态为例:
示例:订单状态
状态:
待处理
已确认
运送中
已完成
转移:
当订单确认后,状态从“待处理”转移到“已确认”。
随着订单交付,状态从“已确认”到“运送中”,最终到达“已完成”。
活动图 (Activity Diagrams)
活动图用于展示一系列的动作和决策,通常用来描述业务流程。考虑一个简单的申请流程:
示例:申请流程
活动:
用户申请
审批流程
结果反馈
动作:
用户填写申请表
审批人员审核申请
系统发送批准或拒绝通知给用户
部署图 (Deployment Diagrams)
部署图展示系统的硬件配置和软件组件在硬件上的部署方式。以一个简单的网络应用为例:
示例:网络应用
元素:
Web 服务器
数据库服务器
客户端设备
连接:
Web 服务器连接到数据库服务器以获取和存储数据。
客户端设备通过网络与服务器通信。
UML 其他常用符号和含义
泳道 (Swimlanes)
含义:泳道用于将系统的不同部分、参与者或执行者分组表示,显示它们的职责和关联。
示例:在活动图和协作图中,使用泳道可以清晰地区分各个执行者或系统组件的职责范围。
接口 (Interfaces)
含义:接口定义了类或组件对外提供的服务、操作或功能的契约。
示例:在类图中,接口通常用带有斜线的矩形表示,展示类所实现的接口。
包 (Package)
含义:包用于组织和管理 UML 中的各种元素,将相关的元素放在一起。
示例:包可以包含类、接口、子系统等,并通过包的层次结构组织这些元素。
注释 (Annotations)
含义:注释用于提供关于 UML 图中元素的额外信息或解释,以增强图表的可读性和理解。
示例:在图表中使用文本框来添加注释,解释特定元素的功能、约束或其他重要信息。
约束 (Constraints)
含义:约束用于定义对系统或类的限制、条件或规则。
示例:在类图中使用大括号表示,指定类的属性或操作的约束条件。
消息 (Messages)
含义:在序列图中,消息表示对象之间的通信或交互,可以是同步或异步的。
示例:消息通常带有箭头,用来表示信息传递的方向和类型(同步、异步、返回等)。
生命周期 (Lifelines)
含义:序列图和协作图中表示对象存在的时间跨度,描述对象在交互中的生命周期。
示例:生命线通常以竖直的虚线表示,沿着序列图中的交互展示对象的存在时间。
虚线 (Dashed Lines)
含义:在 UML 中,虚线通常用于表示依赖、关联、继承等关系,并强调这些关系的松散性或动态性。
示例:虚线可用于表示类之间的依赖关系、不同系统组件之间的关联等。
关联方向 (Association Direction)
含义:在关联关系中,箭头表示关联的方向,即两个类之间的引用方向。
示例:在类图中,箭头指向被引用的类,表示一个类知道另一个类的存在。