UML-认识6种箭头(画类图无烦恼)

news2024/11/19 2:44:54

文章目录

    • 一、背景
    • 二、箭头详解
      • 2.1 泛化(Generalization)
      • 2.2 实现(Realize)
      • 2.3 依赖(Dependency)
      • 2.4 关联(Association)
      • 2.5 聚合(Aggregation)
      • 2.6 组合(Composition)

一、背景

因公司需求需要看懂类图以及能独立上手画类图,因类图中的基础就是6大箭头,而且6大箭头概念有些模糊,所以就有了此文章

二、箭头详解

UML中描述对象和类之间相互关系的方式包括:泛化、实现、依赖、关联、聚合、组合等。

2.1 泛化(Generalization)

1)概念:是一种继承关系(is-a),表示一般与特殊的关系,它指定了子类如何特化父类的所有特性和行为。例如:老虎是动物的一种,既有老虎的特性也有动物的共性。
2)图标
请添加图片描述
3)案例
请添加图片描述

2.2 实现(Realize)

1)概念:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
2)图标
请添加图片描述
3)案例
请添加图片描述

2.3 依赖(Dependency)

1)概念:是一种使用的关系,即一个类的实现需要另一个类的协助。如方法参数需要传入另一个类的对象,就表示依赖这个类。
2)图标
请添加图片描述

3)代码体现::局部变量、方法的参数或者对静态方法的调用
4)案例
请添加图片描述

2.4 关联(Association)

1)概念:表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。程序中一个类的全局变量引用了另一个类,就表示关联了这个类,关联关系分为单项关联和双向关联。在Java中,单向关联表现为:类A当中使用了类B,其中B作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量(双向关联有两个箭头或者没有箭头)。
2)图标
请添加图片描述

3)代码体现::成员变量
4)案例
请添加图片描述

2.5 聚合(Aggregation)

1)概念:是整体与个体的关系(has-a),且个体可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合是关联关系的一种,是强的关联关系;关联和聚合在语义无法区分,必须考察具体的逻辑关系
2)图标
请添加图片描述

3)代码体现:成员变量
4)案例
请添加图片描述

2.6 组合(Composition)

1)概念:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期
2)图标
请添加图片描述

3)代码体现:成员变量
4)案例
请添加图片描述

借鉴地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1308911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

npm安装,idea中启动vue失败

node 设置配置之后,要查询时,会从.npmrc中读取路径 .npmrc自己创建的(默认情况下.npmrc会创建在C盘中) 我创建的在D:\studay-and-working\node16.14\node_modules\npm中 指定.npmrc文件,因为默认会访问C盘的.npmrc文件…

现代雷达车载应用——第2章 汽车雷达系统原理 2.4节 雷达波形和信号处理

经典著作,值得一读,英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.4 雷达波形和信号处理 对于连续波雷达来说,波形决定了其基本信号处理流程以及一些关键功能。本节将以FMCW波形为例,讨论信号…

# 和 $ 的区别①

# 和 $ 都是为了获取变量的值 # 和 $ 区别 : 使用 # 查询 id 为 1 的内容 如果看不懂代码,就去看<<Mybatis 的操作(结合上文)续集>>,我这里为了简练一点就不多解释了 Select("select * from userInfo where id #{id}")UserInfo selectOne(Integer id…

2023版本QT学习记录 -1- 手写登录注册界面(信号与槽)

登录界面图片 登录界面设计 分别创建如下图的&#xff0c;一个文本框&#xff0c;两个输入框&#xff0c;两个按键 注册界面图片 注册界面设计 分别创建如下图的&#xff0c;一个文本框&#xff0c;两个输入框&#xff0c;两个按键 设计子框&#xff08;也就是注册页面&…

机器视觉系统选型-线光源分类及应用场景

标准线光源 从线性LED的发光面照射漫射光 玻璃划痕检测印刷字符检测手机屏幕检测PCB板检测 高亮线光源 从线性LED的发光面照射高亮度漫射光高速流水线检测表面印刷检测表面缺陷检测 集光型线光源 从线性LED的发光面照射直射光划痕缺陷检测印刷字符检测布料检测 同轴线光源 与相…

做数据分析为何要学统计学(2)——如何估计总体概率分布

我们可以通过手头掌握的样本来估计总体的概率分布。这个过程由以下步骤组成。 第一步&#xff0c;我们采用Seaborn软件的histplot函数建立核密度图&#xff08;一种概率密度图&#xff09;。 import numpy as np #输入样本数据 xnp.array([2.12906357, 0.72736725, 1.0515282…

Simple Water Caustic Pattern In Unity ShaderGpaph

shadertoy上有各种神奇的效果&#xff0c;以我的见识根本想象不到这些是怎么弄出来的。 不过不会做至少可以先会用。 这篇文章抓取一个shadertoy的示例以制作一个测试效果。 参考这篇shadertoy&#xff0c;使用自定义节点装填hlsl的noise代码 Shader - Shadertoy BETA 首先使…

使用FluentAvalonia组件库快速完成Avalonia前端开发

前言 工欲善其事必先利其器,前面我们花了几篇文章介绍了Avalonia框架以及如何在Avalonia框架下面使用PrismAvalonia完成MVV模式的开发。今天我们将介绍一款重磅级的Avalonia前端组件库,里面封装了我们开发中常用的组件,这样就不用我们自己再写组件了。专注业务功能开发,提…

tesseract-ocr安装使用

描述&#xff1a; 在centos上安装 tesseract 并在springboot项目中使用 步骤一&#xff1a;安装 确认使用的版本tesseract和test4j版本需要匹配&#xff0c;这里选择最新版 tesseract5.3.3 &#xff0c;test4j 5.9.0 版本匹配可查看 Releases nguyenq/tess4j GitHub 或…

「Leetcode」滑动窗口—长度最小的子数组

&#x1f4bb;文章目录 &#x1f4c4;题目✏️题目解析 & 思路&#x1f4d3;总结 &#x1f4c4;题目 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …,…

deepstream-python安装

​ 安装deepstream-docker 在这边文章中deepstream-docker详细介绍了如何在Ubuntu下安装deepstream-docker&#xff0c;安装完成之后&#xff0c;为了快速入门deepstream&#xff0c;我们可以安装deepstream-python库&#xff0c;通过阅读相应的例子来快速搭建一个应用。 安…

【Hive】

一、Hive是什么 Hive是一款建立在Hadoop之上的开源数据仓库系统&#xff0c;将Hadoop文件中的结构化、半结构化数据文件映射成一张数据库表&#xff0c;同时提供了一种类SQL语言&#xff08;HQL&#xff09;&#xff0c;用于访问和分析存在Hadoop中的大型数据集。Hive的核心是将…

第一届古剑山ctf-pwn全部题解

1. choice 附件&#xff1a; https://github.com/chounana/ctf/blob/main/2023%E7%AC%AC%E4%B8%80%E5%B1%8A%E5%8F%A4%E5%89%91%E5%B1%B1pwn/choice.zip 漏洞代码&#xff1a; 漏洞成因&#xff1a; byte_804A04C输入的长度可以覆盖nbytes的值&#xff0c;导致后面输入时存…

数据管理与持久化:深度解析Docker数据卷

Docker 数据卷在容器化应用中扮演着关键角色&#xff0c;它们提供了一种灵活且可持久化的方式来处理应用数据。本文将深入讨论 Docker 数据卷的基本概念、使用方法以及一系列高级应用场景&#xff0c;通过更为丰富和实际的示例代码&#xff0c;帮助大家全面掌握数据卷的使用和管…

Impala4.x源码阅读笔记(二)——Impala如何高效读取Iceberg表

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 Iceberg表是一种用于存储大规模结构化数据的…

市场全局复盘 20231213

昨日回顾&#xff1a; SELECT TOP 10000 CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅 ,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封板, 120) AS 最后封板 FROM dbo.全部&#xff21;股20231213_ALL WHERE 连板天 > 1AND DDE大单净量 > 0AND DDE散户数量…

bugku--source

dirsearch扫一下 题目提示源代码&#xff08;source&#xff09; 也就是源代码泄露&#xff0c;然后发现有.git 猜到是git泄露 拼接后发现有文件 但是点开啥也没有 kali里面下载下来 wegt -r 下载网站的所有内容 ls 查看目录 cd 进入到目录里面 gie reflog 引用日志使用…

Cent OS7 磁盘挂载:扩展存储空间和自动挂载

文章目录 &#xff08;1&#xff09;概述&#xff08;2&#xff09;查看磁盘使用情况&#xff08;3&#xff09;VMware虚拟机挂载磁盘&#xff08;4&#xff09;物理机磁盘挂载&#xff08;5&#xff09;ntfs硬盘处理 &#xff08;1&#xff09;概述 在Linux系统中&#xff0c…

ubuntu 自动安装 MKL Intel fortran 编译器 ifort 及完美平替

首先据不完全观察&#xff0c;gfortran 与 openblas是 intel fortran 编译器 ifotr和mkl的非常优秀的平替&#xff0c;openblas连函数名都跟mkl一样&#xff0c;加了一个下划线。 1&#xff0c; 概况 https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-too…

【Hadoop】Hadoop基础架构的变化

1.x版本架构2.x版本架构3.x版本架构参考 1.x版本架构 NameNode&#xff1a;&#xff0c;负责文件系统的名字空间(Namespace)管理以及客户端对文 件的访问。NameNode负责文件元数据的管理和操作。是单节点。 Secondary NameNode&#xff1a;它的职责是合并NameNode的edit logs到…