当前位置: 首页 > article >正文

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

小结

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

相关文章:

UML对象图

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

【NLP 53、投机采样加速推理】

目录 一、投机采样 二、投机采样改进:美杜莎模型 流程 改进 三、Deepseek的投机采样 流程 Ⅰ、输入文本预处理 Ⅱ、引导模型预测 Ⅲ、候选集筛选(可选) Ⅳ、主模型验证 Ⅴ、生成输出与循环 骗你的,其实我在意透了 —— 25.4.4 一、…...

[250403] HuggingFace 新增检查模型与电脑兼容性的功能 | Firefox 发布137.0 支持标签组

目录 Hugging Face 让寻找兼容的 AI 模型变得更容易Firefox 137 版本更新摘要 Hugging Face 让寻找兼容的 AI 模型变得更容易 Hugging Face 是一个流行的在线平台,用于访问开源人工智能 (AI) 工具和模型。该平台推出了一项有用的新功能,允许个人轻松检查…...

VScode连接CentOS 7.6虚拟机

本文内容:在Windows上使用VMware运行虚拟机,然后使用VScode连接CentOS 7.6虚拟机。 进入系统前 安装VMware 安装教程参考:VMware安装 下载CentOS 7.6镜像 可以使用国内镜像源,但是一般国内镜像源要么已经不维护CentOS 7.6这个…...

Android Hilt 教程

Android Hilt 教程 —— 一看就懂,一学就会 1. 什么是 Hilt?为什么要用 Hilt? Hilt 是 Android 官方推荐的 依赖注入(DI)框架,基于 Dagger 开发,能够大大简化依赖注入的使用。 为什么要用 Hi…...

高德地图 3D 渲染-区域纹理图添加

引入-初始化地图&#xff08;关键代码&#xff09; // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…...

K8S核心技术点

Pod&#xff0c;Service和Deployment的关系 Pod&#xff1a;Kubernetes 中最小的部署单元&#xff0c;用于运行容器化应用。 Service&#xff1a;提供服务发现和负载均衡&#xff0c;为 Pod 提供稳定的网络端点&#xff0c;ClusterIP&#xff0c;NodePort&#xff0c;LoadBala…...

Spring Boot 与 TDengine 的深度集成实践(二)

创建数据模型 定义实体类 在完成数据库连接配置后&#xff0c;我们需要创建与 TDengine 表对应的 Java 实体类。实体类是 Java 对象与数据库表之间的映射&#xff0c;通过定义实体类&#xff0c;我们可以方便地在 Java 代码中操作数据库中的数据&#xff0c;实现数据的持久化…...

搭建hadoop集群模式并运行

3.1 Hadoop的运行模式 先去官方看一看Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster. 本地模式&#xff1a;数据直接存放在Linux的磁盘上&#xff0c;测试时偶尔用一下 伪分布式&#xff1a;数据存放在HDFS&#xff0c;公司资金不足的时候用 完全分布式&a…...

Qt实现鼠标右键弹出弹窗退出

Qt鼠标右键弹出弹窗退出 1、鼠标右键实现1.1 重写鼠标点击事件1.2 添加头文件1.3 添加定义2、添加菜单2.1添加菜单头文件2.2创建菜单对象2.3 显示菜单 3、添加动作3.1添加动作资源文件3.2 添加头文件3.3 创建退出动作对象3.4菜单添加动作对象 4、在当前鼠标位置显示菜单4.1当前…...

Spring 服务调用接口时,提示You should be redirected automatically to target URL:

问题 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><title>Redirecting...</title><h1>Redirecting...</h1><p>You should be redirected automatically to target URL: <a href"http://xxx/api/v1/branch…...

Springboot整合Mybatis+Maven+Thymeleaf学生成绩管理系统

前言 该系统为学生成绩管理系统&#xff0c;可以当作学习参考&#xff0c;也可以成为Spirng Boot初学者的学习代码&#xff01; 系统描述 学生成绩管理系统提供了三种角色&#xff1a;学生&#xff0c;老师&#xff0c;网站管理员。主要实现的功能如下&#xff1a; 登录 &a…...

马井堂js设置倒计时页面

js-倒计时页面 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;项目场景&#xff1a;倒计时需求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible&…...

C#里第一个WPF程序

WPF程序对界面进行优化,但是比WINFORMS的程序要复杂很多, 并且界面UI基本上不适合拖放,所以需要比较多的时间来布局界面, 产且需要开发人员编写更多的代码。 即使如此,在面对诱人的界面表现, 随着客户对界面的需求提高,还是需要采用这样的方式来实现。 界面的样式采…...

【Java设计模式】第5章 工厂方法模式讲解

5. 工厂方法模式 5.1 工厂方法讲解 定义:定义一个创建对象的接口,由子类决定实例化的类,将对象创建延迟到子类。适用场景: 创建对象需要大量重复代码。客户端不依赖具体产品的创建细节。优点: 符合开闭原则,新增产品只需扩展子类。客户端仅依赖抽象接口,不依赖具体实现…...

PyTorch 生态迎来新成员:SGLang 高效推理引擎解析

SGLang 现已正式融入 PyTorch 生态系统&#xff01;此次集成确保了 SGLang 符合 PyTorch 的技术标准与最佳实践&#xff0c;为开发者提供了一个可靠且社区支持的框架&#xff0c;助力大规模语言模型&#xff08;LLM&#xff09;实现高效且灵活的推理。 如需深入了解 PyTorch…...

时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化

小T导读&#xff1a;在物联网和工业互联网场景下&#xff0c;企业对高并发、低延迟的数据处理需求愈发迫切。本文将带你深入了解 TDengineCloud 如何通过全托管服务与私有连接&#xff0c;帮助企业实现更安全、更高效、更低成本的数据采集与传输&#xff0c;从架构解析到实际配…...

微服务注册中心选择指南:Eureka vs Consul vs Zookeeper vs Nacos

文章目录 引言微服务注册中心概述什么是服务注册与发现选择注册中心的标准 常见的微服务注册中心1. Eureka1.1 理论基础1.2 特点1.3 示例代码 2. Consul2.1 理论基础2.2 特点2.3 示例代码 3. Zookeeper3.1 理论基础3.2 特点3.3 示例代码 4. Nacos4.1 理论基础4.2 特点4.3 示例代…...

Java - WebSocket配置及使用

引入依赖 Spring Boot 默认支持 WebSocket&#xff0c;但需要引入 spring-boot-starter-websocket 依赖&#xff0c;然后重新构建项目 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</arti…...

厦门未来之音:科技与自然共舞的奇幻篇章

故事背景 故事发生在中国福建厦门&#xff0c;描绘未来城市中科技与传统文化深度融合的奇景。通过六大创新场景展现人与自然、历史与未来的和谐共生&#xff0c;市民在智能设施中感受文化传承的力量。 故事内容 从鼓浪屿的声波音乐栈道到BRT天桥上的空中茶园&#xff0c;从修复…...

React 列表与 Keys 的深入探讨

React 列表与 Keys 的深入探讨 在 React 中,列表渲染是一个常见的操作,而 Keys 是在列表渲染中一个非常重要的概念。本文将深入探讨 React 列表与 Keys 的关系,帮助开发者更好地理解并运用它们。 引言 React 是一个用于构建用户界面的 JavaScript 库,它的虚拟 DOM 和组件…...

【Python】Python 100题 分类入门练习题 - 新手友好

Python 100题 分类入门练习题 - 新手友好篇 - 整合篇 一、数学问题题目1&#xff1a;组合数字题目2&#xff1a;利润计算题目3&#xff1a;完全平方数题目4&#xff1a;日期天数计算题目11&#xff1a;兔子繁殖问题题目18&#xff1a;数列求和题目19&#xff1a;完数判断题目21…...

2025年Python的主要应用场景

李升伟 编译 Python在2025年仍是最受欢迎和强大的编程语言之一。其简洁易读的语法以及庞大的库生态系统&#xff0c;使其成为各行业开发者的首选。无论是构建复杂的数据管道&#xff0c;还是自动化重复性任务&#xff0c;Python都能提供广泛的应用场景&#xff0c;以实现快速、…...

PyTorch中的Flatten

在 PyTorch 中&#xff0c;Flatten 操作是将多维张量转换为一维向量的重要操作&#xff0c;常用于卷积神经网络(CNN)的全连接层之前。以下是 PyTorch 中实现 Flatten 的各种方法及其应用场景。 一、基本 Flatten 方法 1. 使用 torch.flatten() 函数 import torch# 创建一个4…...

深入浅出动态规划:从基础到蓝桥杯实战(Java版)

引言&#xff1a;为什么你需要掌握动态规划&#xff1f; 动态规划&#xff08;DP&#xff09;是算法竞赛和面试中的常客&#xff0c;不仅能大幅提升解题效率&#xff08;时间复杂度通常为O(n)或O(n)&#xff09;[4]&#xff0c;更是解决复杂优化问题的利器。统计显示&#xff…...

VS Code-i18n Ally国际化插件

前言 本文借鉴&#xff1a;i18n Ally 插件帮你轻松搞定国际化需求-按模块划分i18n Ally 是一款 VS Code 插件&#xff0c;它能通过可视 - 掘金本来是没有准备将I18n Ally插件单独写一个博客的&#xff0c;但是了解过后&#xff0c;功能强大&#xff0c;使用方便&#xff0c;解决…...

YOLO中mode.predict()参数详解

Inference arguments: ArgumentTypeDefaultDescriptionsourcestr‘ultralytics/assets’指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时源的设备 ID。支持多种格式和数据源&#xff0c;可在不同类型的输入中灵活应用。conffloat0.25设置检测的最小置信度阈值。…...

收敛算法有多少?

收敛算法是指在迭代计算过程中&#xff0c;能够使序列或函数逐渐逼近某个极限值或最优解的算法。常见的收敛算法有以下几种&#xff1a; 梯度下降法&#xff08;Gradient Descent&#xff09; 原理&#xff1a;通过沿着目标函数的负梯度方向更新参数&#xff0c;使得目标函数…...

在亚马逊云科技上使用n8n快速构建个人AI NEWS助理

前言&#xff1a; N8n 是一个强大的工作流自动化工具&#xff0c;它允许您连接不同的应用程序、服务和系统&#xff0c;以创建自动化工作流程&#xff0c;并且采用了开源MIT协议&#xff0c;可以放心使用&#xff0c;他的官方网站也提供了很多的工作流&#xff0c;大家有兴趣的…...

STM32单片机入门学习——第27节: [9-3] USART串口发送串口发送+接收

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.08 STM32开发板学习——第27节: [9-3] USART串口发送&串口发送接收 前言开发板说…...