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 关联,表示相关编辑消息通过该会话被发送出去。

小结

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

相关推荐
程序员JerrySUN7 分钟前
RK3588 Android SDK 实战全解析 —— 架构、原理与开发关键点
android·架构
KoiHeng2 小时前
操作系统简要知识
linux·笔记
巴伦是只猫3 小时前
【机器学习笔记Ⅰ】11 多项式回归
笔记·机器学习·回归
DKPT7 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
巴伦是只猫9 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
ai小鬼头11 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
掘金-我是哪吒13 小时前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
国服第二切图仔13 小时前
文心开源大模型ERNIE-4.5-0.3B-Paddle私有化部署保姆级教程及技术架构探索
百度·架构·开源·文心大模型·paddle·gitcode
SelectDB14 小时前
SelectDB 在 AWS Graviton ARM 架构下相比 x86 实现 36% 性价比提升
大数据·架构·aws
X_StarX14 小时前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生