UML中的关系

2023-05-16

UML中的关系

  UML中的关系(Relationships)主要包括5种:关联关系、聚合关系、依赖关系、泛化关系和实现关系。

关联(Association)关系

  关联关系是一种结构化关系,指一种对象和另一种对象有联系。注重的是对象之间的结构。关联关系用一条实线表示。现实生活中所有的两个事物之间都有联系,可以把它们统叫做关联关系,但要细分的话就产生了后四种关系。
  用一条没有箭头的实线表示。

聚合关系

  聚合也称为聚集,是关联的特例。聚合表示类与类之间的关系是整体与部分的关系,即一个表示整体的模型元素可能由几个表示部分的模型元素聚合而成。(一个整体由多个部分组成)

聚合关系有以下2种情况,在不同的情况下有特定的叫法。
(1) 如果部分对象同时参与了多个整体对象的构成,则叫做共享聚合。
(2) 如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则叫做复合聚合(简称为组成)。
  聚合关系用一端带有空心小菱形的直线表示,小菱形端连接表示整体事物的模型元素,另一端连接表示部分事物的模型元素。如图:

  此图表示歌唱大赛由专业评委等对象组成(具体细分为共享聚合,因为专业评委可能同时参加多个歌唱大赛)。

  还有一种更紧密的聚合关系——组合关系(很少使用)。组合关系是在聚合关系之上的更紧密的耦合关系,它同样是描述元素之间部分与整体的关系,但部分类需要整体类才能存在,当整体类被销毁时,部分类将同时被销毁。组合关系用一端带有实心小菱形的直线表示,小菱形端连接表示整体事物的模型元素,另一端连接表示部分事物的模型元素。

依赖(Dependency)关系

  描述两个模型元素(类、用例)之间的语义关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变,将影响依赖于它的元素。
  依赖关系中在具体一点分为包括关系(include)和扩展关系(extend)。

  包含关系:指的是其中一个用例(称作基础用例)的行为包含了另一个用例(称作包含用例)的行为。基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。包括关系用一条带箭头的虚线加《include》字样表示,箭头指向是被包含的对象。

  此图说明了,在修改用户信息前需要先查出要修改的那一条记录。修改的行为包含了查询行为。

  扩展关系:一个用例也可以被定义为基础用例的增量扩展,这称作扩展关系。扩展关系是把新行为插入到已有用例的放。在UML中,扩展关系表示为虚线箭头加《extend》字样,箭头指向被扩展的用例。

  图中描述了向图书馆归还图书时,如果逾期了就会产生缴纳罚款的行为。归还图书的行为扩展出缴纳罚款行为,箭头是指向归还图书的。

泛化(Generalization)关系

  UML中的泛化关系定义了一般元素和特殊元素之间的分类关系,与C++及Java中的继承关系有些类似。泛化可分为普通泛化和受限泛化。
1.普通泛化
  就是没有给泛化添加约束。普通泛化关系用一条带有空心箭头的实线来表示,箭头指向更抽象程度高的对象。

  图中表示【汽车】是【交通工具】的一种。

2.受限泛化
  可以给泛化关系附加约束条件,说名该泛化关系的使用方法或扩充方法,称为受限泛化。预定义的约束有4种:多重、不相交、完全和不完全。这些约束都是语义约束。

实现(Realization)关系

  实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由使用接口的模型元素来完成。

  通常在两种地方会遇到实现关系:
  (1)一种是在接口和实现它们的类或构件之间;
  (2)另一种是用例和实现它们的协作之间。
在UML图中,实现关系一般用一条带有空心箭头的虚线来表示,,箭头指向接口。

  该图表示的是一种实现关系,类【car】实现了接口【runable】。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UML中的关系 的相关文章

  • 在序列/类图中将消费/生产事件表示为从微服务到消息队列[Kafka]的UML组件

    我有一个生成一些事件的用例 消费其他微服务生成的事件以及自己生成的事件 如何在序列图 类图中表示 Kafka 系统 运行中的微服务以及生产 消费事件 在 UML 中 我们有一个来自 DB 的特殊图表 我们有 Kafka 和 cron 作业的
  • 使用基于关联数组的 UML 建模类型

    假设有一个 PHP 子系统 它仅使用关联数组来存储某种结构化数据 因此 实际上在语言级别上没有机制来约束这些结构 但您希望在设计中使用 UML 来定义它们 E g 在 PHP 中 联系人可能是这样的关联数组 name gt John Doe
  • 用例图包括

    我有一个关于用例图的问题 如图所示 用户可以输入或更新他的姓名和问题 正如您所看到的 用户在第一次输入信息时需要输入姓名和问题 因此包括在内 但是 如果他希望更新他的信息 图表是否表明他必须修改名称和问题 因为它们包含在内 例如 如果他拼错
  • 如何使用用例关系 - uml

    嘿伙计们 我一直在研究 UML 并且正在尝试设计问题的用例图 假设我的应用程序包含以下内容 两个要求 创建团队 创建玩家 这是这笔交易 用户可以创建一个球队 创建球队后可以为该球队创建球员 非必需 但在这个应用程序中有多个用户 一个用户可以
  • 如何在 UML 类图中表示回调

    我有一个界面说 Interface ICallback public void informFunction 我有一堂课说 Class Implementation implements ICallback public Implement
  • 建模/记录功能程序

    我发现 UML 对于记录 OO 系统的各个方面非常有用 特别是用于总体架构的类图和用于说明特定例程的序列图 我想为我的 clojure 应用程序做同样的事情 我目前对模型驱动开发不感兴趣 只是对交流应用程序如何工作感兴趣 UML 是函数式编
  • 从 umbrello 中的 java 代码自动创建类图?

    我能够将 java 代码导入到 umbrello 中 但是 如何自动生成类图呢 也许雨伞可以not有那个功能 来自handbook http docs kde org stable en kdesdk umbrello code impor
  • 显示除“<>”或“<>”之外的 UML 用例图的依赖关系

    除了 扩展 或 包含 之外 我们如何显示用例之间的简单依赖关系 例如 我们想说用例 1 依赖于由用户 1 完成的用例 2 可以用一个简单的箭头来实现吗 向哪个方向 是的 还有其他依赖项 直接连接到用例的类的完整列表是 UML 2 5 标准的
  • 如何在 UML 中指定“一次一个”?

    我正在制作一个类图Classroom and a Course class 我怎样才能表明Classroom只能有一个Course一次在其中吗 我知道我可以使用多重性来指定教室可以只开设一门课程 但这并不能完全指定在不同时间可以有除该一门课
  • 如何在 UML 中建模协变关联类?

    In short 我想对两个类之间的协变关联进行建模 每个类都可以专门化 我需要展示相关关联类的专业化 但我想避免我的模型可能意味着存在冗余关联 即泛化之间的关联和专业化之间的关联 问题的逐步解释 我在 UML 类图中有一个多对多关联Per
  • 将 StarUML 图转换为 Visio 绘图

    我有一个使用 Star Uml 创建的类图 但现在的要求是将其移植到 MS Visio 是否可以将 uml 移植到具有可用 xml 信息的 vsd 提前致谢 导出为 Windows 图元文件 WMF 和增强型 Windows 图元文件 EM
  • UML - 关联或聚合(简单的代码片段)

    有多少书自相矛盾 真让我抓狂 Class A class B void UseA A a some say this is an association no reference is held but communication is p
  • 类图中的组合和依赖之间的区别?

    我知道 有人就这个案例问过同样的问题 但我仍然不明白 我需要一个具体的答案 谢谢你 D 既然冈努斯没有正确解释构图的含义 我就只好这么做了 正如 Gangnus 所解释的 聚合是一种特殊形式协会具有预期含义部分 整体关系 但没有精确的语义
  • 这是正确的 UML 活动图吗?

    这是活动图截图 https i stack imgur com 575VU jpg 这是对的吗 如果不是 我做错了什么 从语法上讲 这个带有分区的活动图似乎几乎是正确的 起始节点应该是实心 黑色 圆圈 最终节点应该有一个内部实心 黑色 圆圈
  • UML 图 - 在我的应用程序中发送电子邮件被视为外部系统

    我的应用程序有一个联系选项 它将打开带有按摩页面的电子邮件应用程序 并且消息接收者设置为应用程序支持电子邮件 我已附上我的意思的图片 我已将其编写为需求 但不确定如何在系统类图和用例图中说明它 我最初在用例图中所做的是 将我的用户 主要参与
  • UML 的 XMI 有 XSD 吗?

    是否有 UML XMI 文件的 XSD 标头仅包含名称空间引用
  • 是否可以在 UML 中可视化一堆函数

    我正在改进一个使用类和函数文件 只是包含各种函数的 php 文件 的内容管理系统 例如 我有一堂课叫Admin以及一个功能文件 其功能包括显示管理员概述 创建新管理员 编辑现有管理员 删除管理员 函数文件使用类并执行 mvc 概念的可视化部
  • 不同保护条件下的状态转换

    在状态模式中这是如何建模的 当当前状态为 A 时 在触发器 X 和条件 C1 上状态 A 到状态 B 当当前状态为 A 时 在触发器 X 和条件 C2 上状态 A 到状态 C 这通常是如何实现的 我有很多可能需要实施的守卫条件 这是相当标准
  • UML 帮助 C# 设计原则

    我在理解下面的 UML 时遇到问题 具体来说 两者之间有什么关系PersistentSet and ThirdPartyPersistentSet 之间有什么关系PersistentObject and ThirdPartyPersiste
  • Visual Basic 6.0 UML 图生成器

    有没有免费的 UML 图生成器可以将 VB6 源代码转换为 UML 图 您是否见过 Deanna 提到的内置 Visual Modelerhere https stackoverflow com questions 16912161 use

随机推荐

  • pytorch框架下faster rcnn使用softnms

    pytorch faster rcnn softnms frcnn使用softnms方法一 xff1a pytorch复现版本的cpu版softnms xff08 本方法可以跑通 xff09 0 首先overview一波 xff1a inf
  • Xmanager--本地远程连接CentOS7及ubuntu图形化

    win10远程连接centos7参考以下文章 https blog csdn net kevinyankai article details 80266767 https www linuxidc com Linux 2017 03 142
  • FreeRTOS学习笔记——FreeRTOS任务创建和删除实验(动态方法)

    6 1 任务创建和删除API 函数 FreeRTOS 最基本的功能就是任务管理 xff0c 而任务管理最基本的操作就是创建和删除任务 xff0c FreeRTOS 的任务创建和删除API 函数如表6 1 1 1 所示 xff1a 1 函数x
  • cmake脚本汇总(持续更新中)

    主要针对VS生成项目 1 release模式下生成pdb文件 xff1a set CMAKE CXX FLAGS RELEASE 34 CMAKE CXX FLAGS RELEASE Zi Od 34 对应调试信息格式以及优化等级 set
  • 关于C,看过的一些书

    忘了名字的书 xff0c C语言程序设计 xff08 老谭版 xff09 高质量程序设计 C陷阱与缺陷 C专家编程 程序员成长计划 UNIX环境高级编程 深入理解计算机系统 代码大全 编程精粹 重构 xff08 在读 xff09 按照自己的
  • JavaScript删除数组对象中指定key对应的对象

    例如 xff1a 删除数组对象a中key值为3的对象 xff0c 并返回新的数组 span class token variable let span span class token variable a span span class
  • FreeRTOS第一个任务的创建和调度详解(SVC异常)

    在上一篇文章中 xff0c 我详细分析了FreeRTOS中上下文切换 xff1a 基于Cortex M的RTOS上下文切换详解及FreeRTOS实例 但是第一个任务没有上下文 xff0c 它是怎么运行的呢 xff1f 1 创建任务 如果我们
  • windows 下最底层的模拟键盘

    对于大多程序模拟按键使用下面的代码就可以胜任 但是换成游戏就不行了 keybd event VK LWIN 0 0 0 keybd event VK LWIN 0 KEYEVENTF KEYUP 0 键盘的原理是向操作系统的键盘驱动程序发送
  • 理解Vue中的MVVM

    MVVM是前端视图层的开发思想 xff0c 主要关注于视图层 xff0c 是把每个页面分成了M xff08 Model xff09 V xff08 View xff09 VM xff08 ViewModel xff09 Model层 数据层
  • windows server2019数据中心桌面版多远程桌面RDP方案

    Windows Server 默认远程桌面连接数是2个用户 xff0c 如果多于两个用户进行远程桌面连接时 xff0c 系统会提示需要挤掉一个用户的连接 如果需要实现多用户远程登录则需要通过添加远程桌面授权或者修改底层代码 安装以下服务 打
  • openstack创建实例报Build of instance d401db9e-xxxx-97c5d7685592 aborted: Unknown auth type: None

    这是在Dashborad界面得到以上报错 排查半天没有任何结果 xff0c 发现keystone还是报认证错误 controller其他日志正常 通过shell手动创建实例 root 64 controller openstack serv
  • No valid host was found. There are not enough hosts available.

    系统总算是恢复了 xff0c 但是在创建实例的时候是有一个节点创建成功 xff0c 其他节点报错如下 节点的报错日志 root 64 compute 1 nova cat nova compute log 2020 12 18 19 18
  • React应用中封装axios

    本文在enjoytoday首发 xff0c 点击原文查看 Axios简介 Axios 是一个基于 promise 的 HTTP 库 xff0c 可以用在浏览器和 node js 中 特性 支持node端和浏览器端支持拦截器等高级配置使用Pr
  • No valid host was found. There are not enough hosts available. 之二

    啥都不多说了 xff0c 自己乌龙了自己一把 把域名写错了 rocky写成了rokcy导致DNS无法解析 2020 12 21 17 11 20 750 2533 WARNING nova compute manager req 185a1
  • Linux键盘区域出错terminal还原办法(keyboard layout change)

    Ubuntu默认区域并不是国内常用的US 可以通过修改 etc default keyboard来修改 xff0c 把XKBLAYOUT改成 us xff0c pc105也改成自己的键盘设置就可以了 保存后再执行 xff1a setupco
  • CentOS OpenStack Pike tacker 之 mistral 安装实录

    格式有点乱有空再整理 一 安装mistral组件 xff08 官网手册为Ubuntu版 xff0c 操作有点坑 xff09 For information on how to install and configure the Workfl
  • 未来与AI

    该文章已删除
  • Ubuntu16.04系统中创建新用户

    Ubuntu16 04系统中创建新用户 本文基于Linux的Ubuntu系统新建一个普通用户 xff0c linux系统的用户名为peng 主机名为ubuntu 1 新建用户2 允许该用户以管理员身份执行指令 1 新建用户 1 1 新建只能
  • 如何将dockerhub与github关联

    本文目录 如何将dockerhub账户与github相关联如何在dockerhub中利用github上的Dockfile进行auto build dockerhub具有Create Automated Build xff0c 也就是说 xf
  • UML中的关系

    UML中的关系 UML中的关系 xff08 Relationships xff09 主要包括5种 xff1a 关联关系 聚合关系 依赖关系 泛化关系和实现关系 关联 xff08 Association xff09 关系 关联关系是一种结构化