UML对象图

UML对象图

一、对象图核心概念

对象图(Object Diagram)描述的是系统在某一时刻对象(实例)的状态快照。它关注的是实际对象之间的实例关系,而不是类与类之间的静态结构。主要特点有:

  1. ​对象(Object)

    对象图显示的是类的对象(类的实例化实体)的具体状态,包括对象名、所属类以及部分属性值。从而可以直观看到系统在运行时各种对象之间的关系。

  2. 瞬时快照

    对象图像是一张"照片",展示了在某一具体时刻各对象如何交互、彼此关联,适用于分析系统运行中的状态和数据实例。

  3. 关系展示(Link)

    对象之间可能有连接(例如关联、依赖等关系),这些连接反映了各种对象实例之间的协作或数据传递过程。

通俗理解

想象你在开学第一天拍了一张班级合照,对象图就像这张照片,它显示了班级中每个同学(对象)的身份(所属类)、姓名(对象名称)和部分特征(属性值),以及大家站在一起的相互关系(关联)。这和 UML 的类图不同,类图描述的是同学们应具备的通用属性和方法,而对象图则展示了实际那一刻各个同学的样子和关系。


二、示例

我们以电商订单为例,展示一个简单对象图的快照。在此示例中,我们假设系统中已经存在以下实例对象:

  • 一个用户对象(u1 : User,姓名为 Alice)
  • 一个订单对象(o1 : Order,总额 100)
  • 一个支付对象(p1 : Payment,状态为 completed)

下面利用节点标签描述对象名称、所属类和属性值,以展示对象之间的关系:
下单 支付 u1 : User
name = Alice o1 : Order
total = 100 p1 : Payment
status = Completed

说明

  • 箭头表示对象之间的交互:如用户 u1 (Alice)下单生成订单 o1,订单 o1 调用了支付 p1

三、设计题目

下面给出三个难度层级的设计题目,要求你针对对象图的视角绘制系统在某一时刻的状态快照:

1. Easy 难度:图书馆管理系统对象图

需求描述

设计一个图书馆系统的对象图。假设系统中存在以下实例:

  • 一个读者 对象(例如,r1 : Reader,姓名为 Bob)
  • 一本图书 对象(例如,b1 : Book,标题为 "UML基础")
  • 一本借阅记录 对象(例如,lr1 : LoanRecord,记录借出日期和到期日期)

要求

  • 读者对象与借阅记录对象之间存在关联(表示该读者借阅了这本书);
  • 借阅记录对象关联图书对象。
  • 用 Mermaid 语法绘制该对象图,并标明对象间的关系。

2. Medium 难度:电商订单流程对象图

需求描述

设计一个网购订单系统的对象图快照。系统当前有:

  • 一个用户 对象(例如,u1 : User,姓名为 Carol)
  • 一个购物车 对象(例如,cart1 : ShoppingCart),其中包含多个商品;
  • 一个订单 对象(例如,o1 : Order,订单总额 250);
  • 一个支付 对象(例如,p1 : Payment,支付状态为 pending)

要求

  • 用户对象通过购物车提交订单;
  • 订单对象与支付对象存在关联。
  • 用 Mermaid 语法绘制对象图,展示各对象的属性和相互关联。

3. Hard 难度:实时协作平台对象图

需求描述

设计一个用于支持在线多人编辑平台的对象图,展示系统在某一时刻的内部状态快照。系统包含以下实例:

  • 一个用户 对象(例如,u1 : User,姓名为 David),以及多个在线用户对象;
  • 一个文档 对象(例如,d1 : Document,版本号 5.2);
  • 一个协作会话 对象(例如,s1 : Session,状态为 Active),记录当前协作会话信息;
  • 一个消息对象 (例如,m1 : Message,内容为"编辑保存成功")

要求

  • 用户对象与协作会话对象之间有关联(表示用户正在参与协作);
  • 协作会话对象与文档对象之间有关联;
  • 消息对象与协作会话对象有关联,表示通过该会话发送编辑消息。
  • 使用 Mermaid 语法绘制对象图,注意对象的名称、所属类以及部分关键属性,并清楚标明各对象之间的关系。

三、设计题目参考答案

1. Easy 难度:图书馆管理系统对象图

下面对象图示例,满足图书馆管理系统的需求。
借阅 关联图书 r1 : Reader
name = Bob lr1 : LoanRecord
borrowDate = 2023-08-15
dueDate = 2023-09-15 b1 : Book
title = UML基础

说明

  • r1 表示读者对象,属性 name = Bob
  • lr1 表示借阅记录对象,包含借出日期和到期日期(此处示例日期为 2023-08-15 和 2023-09-15,可根据需要修改)。
  • b1 表示图书对象,属性 title = UML基础
  • 箭头显示了对象之间的关联关系,表示读者借阅了图书,具体记录在借阅记录中。

2. Medium 难度:电商订单流程对象图

下面展示电商订单流程对象图的快照。
通过购物车提交订单 生成订单 关联支付信息 u1 : User
name = Carol cart1 : ShoppingCart
items = [item1, item2, ...] o1 : Order
total = 250 p1 : Payment
status = pending

说明

  • u1 : User 对象表示用户,其姓名为 Carol。
  • cart1 : ShoppingCart 对象表示购物车,其中包含多个商品(这里用 [item1, item2, ...] 作为示例数据)。
  • o1 : Order 对象表示订单,其订单总额为 250。
  • p1 : Payment 对象表示支付,其状态为 pending(待支付)。
  • 箭头显示对象间的关系:
    • 用户通过购物车提交订单;
    • 购物车生成订单;
    • 订单与支付对象建立关联。

3. Hard 难度:实时协作平台对象图

下面展示在线多人编辑平台在某一时刻的内部状态快照。该图除了包含一个示例用户 u1 : User(David)外,还增加了多个在线用户对象,清晰展示了对象间的关联关系:
参与协作 参与协作 参与协作 关联文档 通过会话发送 u1 : User
name = David u2 : User
name = Alice u3 : User
name = Bob d1 : Document
version = 5.2 s1 : Session
status = Active m1 : Message
content = 编辑保存成功

说明

  • 用户对象

    • u1 表示用户 David,
    • u2 表示在线用户 Alice,
    • u3 表示在线用户 Bob。
      他们都通过箭头表示正在参与相同的协作会话 s1
  • 文档对象 d1

    • 表示当前编辑的文档,版本号为 5.2。
  • 协作会话对象 s1

    • 状态为 Active,记录当前正在进行的团队协作信息,并与文档 d1 关联,反映该会话对应于哪个文档。
  • 消息对象 m1

    • 内容为 "编辑保存成功",通过箭头与协作会话 s1 关联,表示相关编辑消息通过该会话被发送出去。

小结

对象图提供了系统在某一具体时刻的状态快照,有助于了解实际对象的属性和它们之间的联系。

相关推荐
chase。4 小时前
【学习笔记】MeshCat: 基于three.js的远程可控3D可视化工具
javascript·笔记·学习
尖枫5087 小时前
学习笔记:金融经济学 第1讲
笔记·学习·金融
拉不动的猪7 小时前
设计模式之--------工厂模式
前端·javascript·架构
未定义.2217 小时前
UML-银行取款序列图
设计模式·流程图·软件工程·需求分析·uml
Acxymy8 小时前
MySQL学习笔记十九
笔记·学习
WDeLiang8 小时前
Vue学习笔记 - 逻辑复用 - 组合式函数
vue.js·笔记·学习
_yingty_9 小时前
Go语言入门-反射4(动态构建类型)
开发语言·笔记·后端·golang
再玩一会儿看代码9 小时前
[特殊字符] 深入理解 WSL2:在 Windows 上运行 Linux 的极致方案
linux·运维·windows·经验分享·笔记·学习方法
明明真系叻9 小时前
2025.4.13机器学习笔记:文献阅读
人工智能·笔记·机器学习
魔道不误砍柴功9 小时前
2025年Java无服务器架构实战:AWS Lambda与Spring Cloud Function深度整合
java·架构·serverless