【需求工程】统一建模语言UML类图中关联、多样性和角色 📅 发布时间:2026/7/14 23:16:44 👁️ 浏览次数: UML类图关联、多样性、角色 完整解读这是UML类图的基础知识点分为图示样例 文字定义两部分我拆开逐点讲清楚。一、先看懂上面的建模样例人 ↔ 车辆1. 两个「类」人属性 姓名、出生日期车辆属性 车辆ID、生产年份中间实线代表两个类之间的关联关系关联名称是「拥有」。2. 多样性多重度图上数字1和0..*多样性写在关联线的两端描述一端的1个实例可以对应另一端多少个实例靠近「人」这端标注 1含义1台车辆只能属于1个人一辆车不能有多个车主。靠近「车辆」这端标注 0…*0 可以没有* 任意多台含义1个人可以0台、1台、多台车辆有人没买车有人有多辆车。整体关系一对多1对0或多一个人 → 0/多辆车一辆车 → 仅一个人。3. 角色图中虚线标注的文字角色写在对应类的一侧用来定义这个类在本次关联里的身份人这边角色所有者人在“拥有车辆”这件事里身份是车主、所有者。车辆这边角色自身拥有的车辆在关联里是被人所拥有的物品。4. 关联名称「拥有」写在两根多样性标注中间代表这条关联的业务语义人和车辆之间的关系动作是“拥有”。二、下方文字逐句翻译解释类之间的关联是通过边界来描述的。可选择性地为关联定义一个名称。两个矩形类之间的实线就是关联用来表达两个事物存在业务联系关联名称本例“拥有”是可选加的不加也合法加了方便看懂业务含义。另外多样性可以被注释在每一个关联的末端。多样性是关于类的实例层级的声明并且描述一个类中可以以一种特定的方式与另外一个类中所定义实例数量进行关联的实例数量。多样性多重度写在关联线两头它描述实例数量对应规则不是类与类的关系是真实数据行的对应关系举例子类“人”、类“车辆”实例就是张三、奔驰车、宝马车多样性1和0..*规定一条车辆数据只能绑定一条人数据一条人数据可以绑定0/多条车辆数据。在关联的一端或两端注释可选择性的角色能够进一步精炼出与关联相关的这个类的实例含义。角色是可选项两端可以都写、只写一端也可以不写作用区分同一个类在不同关联里的身份。拓展举例“人”既可以是车辆的「所有者」也可以是订单里的「购买人」用角色就能区分同一类在不同关系里的身份。三、补充关键知识点1. 常见多样性符号含义标注含义1有且仅有1个0..10个或1个可选最多一个0..*/*0个、1个、多个无上限1..*至少1个最多无限多2. 关联、多样性、角色三者分工关联线说明两个类有关系关联名说明是什么关系拥有、购买、租用多样性两边实例数量对应规则一对多、多对多、一对一角色这个类在关系里是什么身份所有者、商品、买家。3. 套回样例总结一句话一个所有者人可以拥有0台或多台自身拥有的车辆而每一台车辆只能归属1位所有者。回答2第一步先看这张图图一画了什么这张图描述了“人”和“车辆”在现实世界中的归属关系。两个对象类人关注他的姓名和出生日期。车辆关注它的车辆ID和生产年份。一条关系线关联叫做“拥有”。两个“身份标签”角色站在“人”这边角色叫“所有者”说明这个人是以车主的身份参与关系的。站在“车辆”这边角色叫“自身拥有的”说明这辆车是被拥有的资产而不是租的或借的。两串数字多样性 / 多重性图中标注了0.虽然有点模糊但结合上下文它通常是0..*或0..1这类符号的简写或OCR识别偏差。我们重点理解它的含义。第二步用图二的“规则”来解读这张图图二告诉我们类图上的线条、数字和标签分别有什么用。结合图一1. 什么是“关联”就是那条连线图二说类之间通过边界连线来描述关系。图一实例人和车辆之间画了一条线名字叫“拥有”。这明确表示这两个类在业务上是有联系的不是孤立存在的。2. 什么是“角色”就是线两端的身份标签图二说在关联的一端或两端注释角色能进一步精炼类的实例含义。图一实例如果没有角色你只知道“人和车有关系”但具体是车主司机还是代驾说不清。在人的那一端标上“所有者”说明人在这段关系里是“车主”。在车的那一端标上“自身拥有的”说明车在这段关系里是“被拥有的财产”。作用消除歧义。明确告诉你这里的“拥有”是“所有权归属”而不是“临时使用权”。3. 什么是“多样性多重性”就是线两端的数字图二说多样性是关于实例层级的声明描述“这一端的一个实例能关联到另一端多少个实例”。图一实例假设数字是0..*或1我们按标准逻辑推演看“人”这一端如果写的是0..*意思是“一辆车可以被 0 到多个 人拥有吗”不通常一辆车只有一个法定车主。所以更合理的解读是这里的数字在约束“人的数量”。正确的看图方法数字写在哪一端就约束哪一端的数量。假设写在车辆那端是0..*零到多写在人这端是0..1零或一。翻译成业务规则一个人所有者可以拥有 0 辆或多辆0…*车。有人没车有人是土豪有多辆。一辆车自身拥有的只能被0 个或 1 个0…1人所拥有。新车未售出时是0个主人卖出后是1个主人杜绝了一辆车登记在两个人名下的歧义。第三步三者合体起到什么作用把关联线角色标签多样性数字结合起来就能精准地定义出一条“业务铁律”不需要再用大段文字描述。这张图最终想表达的唯一、精准含义是在这个系统中我们只关心“所有权”关系。一个人作为所有者可以拥有任意多辆车包括零辆而一辆车作为被拥有的资产最多只能归属于一个人也可能暂时没主人。总结为什么要费劲画这个如果没有角色和多样性只用一条线写个“拥有”程序员可能会懵是“父子关系”的拥有继承是“司机开车”的拥有使用是“车主”的拥有所有权加上角色明确了是“所有者/资产”加上数字多样性明确了是一对多还是多对多。这样后续建数据库表比如外键怎么放、写代码逻辑比如校验一个人名下最多几辆车就有了绝对精确的依据产品经理和开发就不会吵架了。多样性 - 示例由上图判断一下描述是否正确三名导演可以合作导演一部影片。判断该描述不正确错误。根据你提供的 UML 类图或领域模型“三名导演合作导演一部影片”是不被允许的。为了帮你彻底看懂这张图我们分三步来拆解图中的“多重性多样性”约束1. 复习 UML 多重性的读法关键在 UML 中靠近哪个类的数字就约束“这个类的实例”能关联对方“多少个”实例。例如A ——— B如果 A 旁边写着1B 旁边写着0..*含义是一个 A 实例可以关联 0 到多个 B 实例而一个 B 实例必须且只能关联 1 个 A 实例。2. 针对“导演”与“电影”的关联重点图里关于“由某某执导”这条关联线的约束是靠近“导演”这一端写的是1含义一部电影即一个电影实例必须恰好关联 1 位导演。这是强制性的一对一或严格的一对一上限约束这意味着系统规定“一部电影只能有唯一的导演”。靠近“电影”这一端写的是1..3含义一位导演可以执导 1 到 3 部电影。这约束的是“一位导演名下可以挂几部电影”而不是“一部电影可以有几位导演”。3. 结论与陷阱提示你的描述是“三名导演合作拍一部电影”这意味着“一部电影”对应“3 个导演”。这在逻辑上违反了导演端写的1上限为 1的强制性约束。正确的解读是在这个模型里一部电影只能由 1 位导演执导但反过来这 1 位导演可以同时执导 1 到 3 部不同的电影。特别提示帮你避免混淆图中电影端也写着1..3它可能让你误以为“一部电影可以有 1 到 3 个导演”。但请一定看准数字所在的位置——1..3写在电影的对面靠近导演一侧它是在说导演的能力上限而不是电影的名额上限。如果想让“三位导演合拍一部电影”成立导演那一端的数字必须改成1..3或*而不是现在的1。
遗传算法工业级调参与可解释性实践指南 1. 项目概述:从“会跑”到“跑得明白”的遗传算法进阶实践你手头刚跑通一个遗传算法示例,种群迭代了200代,目标函数值从1500掉到了87,屏幕上跳着一串数字——但你心里没底:这结果靠谱吗?为什么交叉概率设0.… 2026/7/14 23:16:44
Python使用SMTP发送电子邮件 1 文章背景 在 Web 系统或桌面工具中,经常会遇到发送邮件的需求,例如发送注册验证码、密码找回验证码、系统通知、任务提醒等。 Python 标准库中提供了 smtplib 和 email 相关模块,可以比较方便地完成邮件发送。本文主要整理如何开启邮箱 SMT… 2026/7/14 23:16:44
Windows“此电脑“清理终极指南:MyComputerManager让你彻底告别流氓快捷方式 Windows"此电脑"清理终极指南:MyComputerManager让你彻底告别流氓快捷方式 【免费下载链接】MyComputerManager 管理“此电脑”里删不掉的流氓“快捷方式”(包括侧边栏),同时可自己添加这类“快捷方式” 项目地址: ht… 2026/7/14 23:12:43
计算机网络核心概念与实战应用全景解析:从协议栈到现代网络架构 1. 从协议栈到现代网络架构的演进之路记得我第一次抓包分析HTTP请求时,看着密密麻麻的十六进制数据头皮发麻。直到导师指着屏幕说:"看这段ASCII码,这就是你刚发的登录密码"——那一刻我突然理解了协议栈的意义。计算机网络就像一座… 2026/7/15 1:11:22
终极FGA自动战斗配置指南:从新手到专家的完整实战方案 终极FGA自动战斗配置指南:从新手到专家的完整实战方案 【免费下载链接】FGA Auto-battle app for F/GO Android 项目地址: https://gitcode.com/gh_mirrors/fg/FGA Fate/Grand Automata(简称FGA)是一款专为FGO安卓玩家设计的智能自动战… 2026/7/15 1:09:21
csp信奥赛C++高频考点专项训练:【二分答案】案例5:进击的奶牛 csp信奥赛C高频考点专项训练:【二分答案】案例5:进击的奶牛 题目描述 Farmer John 建造了一个有 NNN(2≤N≤1052 \leq N \leq 10 ^ 52≤N≤105) 个隔间的牛棚,这些隔间分布在一条直线上,坐标是 x1,x2,⋯,xNx _ 1, x … 2026/7/15 1:09:21
HarmonyOS RDB 模糊搜索变慢怎么办:中式美食菜名、别名和食材关键词怎么分层查询 本地菜谱越来越多以后,搜索响应慢,结果排序还经常把弱相关菜排前面。 中式美食里同一个菜谱会从搜索、分类、收藏、推荐和购物清单多个入口出现,状态一旦没拆清楚,用户看到的就是点了没反应、返回位置丢了、统计不准或者卡片状态串… 2026/7/15 1:07:20
套用 NIST 框架做风控,五步搞定企业安全体系 从混乱到有序:用 NIST 框架重构企业风控体系面对日益复杂的网络威胁,许多企业的安全团队往往陷入“救火式”运维的泥潭:今天修补一个漏洞,明天响应一次钓鱼邮件,缺乏系统性的防御逻辑。这种碎片化的应对方式不仅效率低… 2026/7/15 1:05:20
工艺窗口太窄良率不稳:我用DOE方法找到了最优参数组合 新工艺导入时窗口太窄,温度偏差2度就超规,良率从92%波动到75%。PE调了一周没找到稳定点,我建议用实验设计(DOE)方法系统化寻找最优参数组合。做了一套4因素3水平正交实验,27组实验后找到了温度、压力、流量… 2026/7/15 1:03:19
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41