UML--类之间的五种关系

2023-05-16

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

1.关联(Association)关系

关联关系是一种结构化的关系,指一种对象和另一种对象有联系。它使一个类知道另一个类的属性和方法。

关联关系有双向关联和单向关联。

双向关联:两个类都知道另一个类的公共属性和操作。

单向关联:只有一个类知道另一个类的公共属性和操作。

大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可复用的类。

UML图中实现使用一条实线连接相同或不同类。如图:


→聚合(Aggregat ion)关系

聚合也称聚集,是关联的特例。表示类与类之间的关系是整体与部分的关系,即一个表示整体的模型元素

可能由几表示部分的模型元素聚合而成。

共享聚合:如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集成为共

享聚合。

复合聚合(简称为组成):如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之

消失(或去存在价值),则该类聚集成为复合聚合。

普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同层次:一个整体,一个部分。同时,

是一种的”拥有“关系。此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属

于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等。表现在代码层

面,和关联关系是一致的,只能从语义级别来区分。

UML图中聚合使用一条带有虚心菱形的线来表示。如图:


2.依赖(Dependency)关系

依赖关系描述两个模型元素(类、用例等)之间的语义关系:其中一个模型元素是独立的,另一个模型元

素不是独的,它依赖于独立的模型元素,如果独立的模型元素改变,将影响依赖于它的元素。

例如:如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。

UML图中依赖使用一条右箭头的虚线指向被依赖的类。如图:


3.泛化(Generalization)关系

UML中的泛化关系定义了一般元素和特殊元素之间的分类关系,与C++及Java中的继承关系有些类似。

具体形式类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系。

泛化可分为普通泛化和受限泛化。

UML图中泛化使用一条带有空心三角箭头的实现指向基类。如图:


4.实现(Realization)关系

实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,其中接口只是行为的说明而

不是结构或实现。真正的实现由前一个模型元素来完成。

或者理解为:一个类实现接口(可以是多个)的功能;

实现是类与接口之间最常见的关系,在以下两种地方会经常遇到:

(1)一种是在接口和实现它们的类或构件之间;

(2)一种是在用例和实现它们的协作之间。

UML图中实现使用一条带有空心三角箭头的虚线指向接口。如图:


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

UML--类之间的五种关系 的相关文章

  • Android NDK Tools 下载链接大全

    NDK Download Links ndk r13b Oct 2016 Windows 32 bit https dl google com android repository android ndk r13b windows x86
  • SRv6网络编程自学系列 | BGP-LS for SRv6

    书籍来源 xff1a SRv6网络编程 xff1a 开启IP网络新时代 这本书已经出了很多年了 xff0c 但多年之后因为工作需要再来读一遍 xff0c 除了温习之外 xff0c 发现自己学到了更多的知识 一边学习一边整理读书笔记 xff0
  • OpenCV学习笔记1

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 参考 OpenCV 浅墨 专栏 读入 xff0c 显示 xff0c 保存图像 include lt opencv2 core
  • Error: Could not find or load main class org.apache.hadoop.fs.FsShell

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 错误 xff1a Error Could not find or load main class org apache had
  • centos 6.x安装squid

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 不设置用户认证 安装 安装 yum install squid yum install httpd 查看版本 rpm qa g
  • VMware清理vmdk文件,解决vmdk越来越大的问题

    目录 压缩 vmdk方法在虚拟机上操作在主机上操作 参考链接 问题 xff1a 主机是Windwos xff0c 安装了VMWare 在VMWare中安装了虚拟机Ubuntu操作系统 Ubuntu本身不大 xff0c 但是 vmdk很大 网
  • 安全-认证授权、数据脱敏

    一 认证授权 JWT xff1a JWT xff08 JSON Web Token xff09 是一种身份认证的方式 xff0c JWT 本质上就一段签名的 JSON 格式的数据 由于它是带有签名的 xff0c 因此接收者便可以验证它的真实
  • 树莓派4b 串口通信实现自发自收

    1 树莓派串口映射设置 运行以下命令 xff1a ls dev al 出现串口映射的情况 xff0c 但是此时是在默认状态下 xff0c serial0 就是GPIO14 15 是映射到ttyS0的 xff0c serial1 xff08
  • 按要求编写一个Java应用程序程序: (1)定义一个接口CanFly,描述会飞的方法public void fly(); (2)分别定义类飞机和鸟,实现CanFly接

    代码 第三题 xff1a 按要求编写一个Java应用程序程序 xff1a xff08 1 xff09 定义一个接口CanFly xff0c 描述会飞的方法public void fly xff08 2 xff09 分别定义类飞机和鸟 xff
  • plc热电偶模块模拟量数据波动原因

    要找到模拟数据波动的根本原因 可能是以下原因 您可能使用了自供电或隔离的传感器电源 xff0c 并且两个电源没有相互连接 xff0c 即模拟输入模块的电源接地和传感器的信号接地没有连接 这会产生上下振动的高共模电压 xff0c 从而影响模拟
  • C #Winform窗体自适应

    说明 xff1a Winform让窗体内的控件随着窗体的大小而改变 xff0c 而且能让指定的控件始终处于居中位置 封装成类 xff0c 直接拷贝过去即可 一 类源码如下 xff1a using System using System Co
  • Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)解决方案

    docker service Docker Application Container Engine Loaded loaded usr lib systemd system docker service enabled vendor pr
  • emWin - Movie篇

    STemWin版本 xff1a 544 xff08 ST购买了emWin的license xff0c 可以在ST芯片中使用emWin工具包 xff0c 就叫STemWin xff09 emWin开发工具包可以转换JPG BMP GIF等各种
  • 大规模集群故障处理

    我相信每一个集群管理员 xff0c 在长期管理多个不同体量及应用场景的集群后 xff0c 都会多少产生情绪 其实这在我看来 xff0c 是一个很微妙的事 xff0c 即大家也已经开始人性化的看待每一个集群了 既然是人性化的管理集群 xff0
  • ADRC调试经验(已调通)

    自抗扰控制的组成 有关自抗扰的相关内容 xff0c 韩老师在他的一系列论文中已经描绘的非常清晰了 xff0c 具体资料可以点击这里下载 其中对于TD和ESO这两个部分其实是比较好调节的 xff0c 很容易就能够获得很好的效果 比较难调节的参
  • 浏览器的同源策略

    https developer mozilla org zh CN docs Web Security Same origin policy 这篇翻译不完整 请帮忙从英语翻译这篇文章 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个
  • centos简单解决报错-bash 未找到命令

    centos报错 bash 未找到命令 在使用纯净镜像的时候 经常找不到一些额外的命令 想用但是不知道怎么安装 拿telnet 和netstat 举例 telnet yum provides telnet 这里只需要 yum y span
  • [问题已处理]-docker build出来的镜像没有更新成功

    导语 xff1a 记录一下docker build镜像的坑 如果修改代码文件的话 xff0c docker build 有时候会不替换文件 xff0c 而会使用cache xff0c 导致代码文件没有更新 第一次构建镜像 产生了cache
  • [问题已处理]在docker中使用nohup

    导语 xff1a docker运行容器是否能使用nohup 以下是测试在不同的情况下使用nohup 先启动一个容器 仅看进程的pid号参考 docker run it rm ubuntu 16 04 bash sleep 5 amp amp
  • k8s-集群搭建的三种方式和区别,kubeadm、minikube,二进制包

    k8s 集群搭建的三种方式 xff0c 目前主流的搭建k8s集群的方式有kubeadm minikube xff0c 二进制包 kubeadm 是一个工具 xff0c 用于快速搭建kubernetes集群 xff0c 目前应该是比较方便和推

随机推荐

  • 精确算法、启发式算法、元启发式算法及增长方式浅析

    组合优化问题是通过用数学方法的研究去寻找离散事件的最优编排 分组 次序或筛选等 xff0c 其变量是离散分布的 对于结构化的组合优化问题 xff0c 其解空间的规模能够得到控制 xff0c 对于这样的问题 xff0c 使用精确算法就可以求得
  • 重构一个快不可维护的项目

    历史原因 xff0c 接手了一个一直堆业务逻辑 xff0c 没有重构过的项目 xff0c 简单看了一下代码就感觉麻头皮 xff0c 满目都是一个方法里面大段的代码 xff0c 阅读起来极度困难 可以合并的类没有合并 xff0c 导致一个请求
  • 芯片端子的多路复用

    嵌入式软件的开发 xff0c 经常要和芯片打交道 xff0c 和个人电脑的通用平台的CPU使用X86或X64架构不同 xff0c 嵌入式电子产品使用的主控芯片是各种各样的 xff0c 从8051单片机 xff0c 到ARM Cortex M
  • 树莓派学习笔记——获取树莓派CPU温度

    0 前言 本文通过文件操作读取树莓派CPU温度 xff0c 在linux系统中任何设备的操作都被抽象成为文件读写 xff0c 通过读取 sys class thermal thermal zone0 temp文件中的内容便获得树莓派CPU的
  • DHT11温湿度传感器

    1 封装信息 2 DHT11通讯总介 微处理器与DHT 11之间的通讯和同步 xff0c 采用单总线数据格式 xff0c 一次通讯时间4ms左右 xff0c 数据分小数部分和整数部分 一次完整的数据传输为40bit xff0c 高位先出 数
  • does not support raise

    This plugin does not support propagateSizeHints This plugin does not support raise arm平台界面无法显示 xff0c 有如上日志 该系统上安装的是5 11
  • docker jvm 内存限制

    docker 容器提供了相关的内存限制 具体使用方式如 xff1a m 512m 完整例子 docker run rm m 512m e JAVA OPTS 61 Xmx512m tomcat 8 通过 m 进行限制 但是在实际应用重 xf
  • DES加密算法—实现(C语言)

    http www iteye com topic 478024 DES xff08 Data Encrypt Standard数据库加密标准 xff09 是迄今为止使用最广泛的加密体制 初学信息安全的新生 xff0c 一般都会被老师要求实现
  • 国家运输ITS通信协议(NTCIP)简介

    国家智能交通系统工程技术研究中心 张北海 中交国通智能交通系统技术有限公司 肖媛媛 1 NTCIP的发展历程 NTCIP National Transportation Communications for ITS Protocol 是美国
  • linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能

    本文转载自链接 xff1a http blog csdn net chenzba article details 51224715 xfeff xfeff 最近使用redis的c接口 hiredis xff0c 使客户端与redis服务器通
  • 推荐ucos-II 3本参考书 经典

    在这里给大家推荐三本学习ucos的必看书籍 1 xff08 比较难买 xff09 嵌入式实时操作系统uc os II教程 西安电子科技大学出版 这本书对UCOS的源代码分析的非常清楚 比作者原著 在某种程度上要好 xff0c 这本书对关键的
  • Windbg查看调用堆栈(k*)

    https www 52pojie cn thread 664189 1 1 html 无论是分析程序崩溃原因 xff0c 还是解决程序hang问题 xff0c 我们最常查看的就是程序调用堆栈 学会windbg调用堆栈命令 xff0c 以及
  • POV写作手法

    POV xff08 Point of View xff09 xff0c 一种写作手法 xff0c 即 视点人物写作手法 xff0c 在叙述同一件事可以自由选取最丰厚的角度 xff0c 大大加强了叙述的灵活性 xff0c 在讲述故事的同时作者
  • Go语言学习资料整理

    整理网上找到的Golang语言学习资料 基础 基础教程 书籍在线版 Go 指南 A Tour of Go Go语言圣经 xff08 中文版 xff09 Effective Go中文版 Go Web编程 build web applicati
  • 更好的内存管理-jemalloc

    今年年初由于facebook而火起来的jemalloc广为人之 xff0c 但殊不知 xff0c 它在malloc界里面很早就出名了 Jemalloc的创始人Jason Evans也是在FreeBSD很有名的开发人员 此人就在2006年为提
  • Windows上安装Net-SNMP5.7

    本文简要记录了在Windows上安装 net snmp 5 7 1的步骤 xff0c 最新的源码包可上net snmp官方网站下载 安装net snmp 5 7 1之前需要先安装 VS2010Win32 OpenSSL v1 0 1fAct
  • Redis源码分析(二)--结构体分析(1)

    继上次的redis源码分析 一 之后 xff0c 本人开始订制着一份非常伟大的计划 啃完redis源代码 xff0c 也对他进行了切块划分 xff0c 鉴于本人目前对他的整个运行流畅还不特别清楚的情况下 xff0c 所以决定第一个要解决的就
  • Redis源码分析(三)---dict哈希结构

    昨天分析完adlist的Redis代码 xff0c 今天马上马不停蹄的继续学习Redis代码中的哈希部分的结构学习 xff0c 不过在这里他不叫什么hashMap xff0c 而是叫dict xff0c 而且是一种全新设计的一种哈希结构 x
  • 【原创】关于wince OS开发面试问题的总结系列之Bootloader

    参考资料 xff1a 1 Windows CE 工程事件完全解析 by xff1a 李大为 2 Windos CE 实用开发技术 by xff1a 张冬泉 等 3 Windows Embedded CE 6 0 Fundamentals 4
  • UML--类之间的五种关系

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