UML类图画法及其关系

news/2024/5/19 23:15:49/

UML类图画法及其关系

本文主要是介绍 UML类图画法及其关系,方便今后温习!!!

一、类之间的关系汇总

  1. 泛化(Generalization)
  2. 实现(Realization)
  3. 关联(Association)
    • 聚合(Aggregation)
    • 组合(Composition)
  4. 依赖(Dependency)

二、类之间的关系详解

(一)泛化(Generalization)

泛化是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为,描述了一种“is a kind of” 的关系。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

用带空心箭头的实线表示,箭头指向父类,如下图:
在这里插入图片描述

(二)实现(Realization)

是一种类与接口的关系,表示类是接口所有特征和行为的实现。

用带空心箭头的虚线表示,箭头指向接口,如下图:

在这里插入图片描述

(三)关联(Association)

(1)一般关联

a、 关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系,如:老师与学生、丈夫与妻子。关联可以是双向的,也可以是单向的,还有自身关联。

b、 用带普通箭头的实心线表示。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,如下图:
在这里插入图片描述

(2) 聚合(Aggregation)

它是整体与部分(整体 has a 部分)的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

用带空心菱形的实线表示,菱形指向整体,如下图:
在这里插入图片描述

(3)组合(Composition)

它是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

用带实心菱形的实线表示,菱形指向整体,如下图:
在这里插入图片描述

(四)依赖(Dependency)

元素A的变化会影响元素B,那么B和A的关系是依赖关系,B依赖A。要避免双向依赖,一般来说,不应该存在双向依赖。关联、实现、泛化都是依赖关系。

用带箭头的虚线表示,箭头指向被依赖元素
在这里插入图片描述

三、总结

各种关系的强弱顺序如下:

泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。


http://www.ppmy.cn/news/73337.html

相关文章

Linux 学习笔记(七):时间片

一、时间片概念 时间片(timeslice)又称为 “量子”(quantum)或 “处理器片”(processor slice),是分时操作系统分配给每个正在运行的进程微观上的一段 CPU 时间(在抢占内核中是&…

将有序数组转换为二叉树

md这个破CSDN模板怎么没了,编辑器也死难用,气死 1、题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不…

异地研发团队都使用哪些研发协同工具?盘点7类最主流的研发管理协同软件

产品研发场景下好用的协同办公软件有哪些?分享7类研发过程中主流的协同办公软件,比如项目管理协作与问题跟踪工具PingCode、代码托管与版本控制平台github、持续集成与持续部署(CI/CD)工具jinkens、文档协作与知识管理工具conflue…

Node开发Web后台服务

简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。 能方便地搭建响应速度快、易于扩展的网络应用&#…

支付宝沙箱支付(java电脑版)

目录 下载支付demo配置环境AlipayConfig 下载支付demo 网址&#xff1a;https://open.alipay.com/ 下载并打开项目发现无法运行&#xff1a; 手动转化项目&#xff1a; 等待下载整理一下maven pom 通过tomat部署运行测试。 导入阿里支付的pom依赖 <dependency> &l…

《计算机网络—自顶向下方法》 Wireshark实验(十):NAT 协议分析

NAT&#xff08;Network Address Translation&#xff09;网络地址转换&#xff0c;即在私有地址和全局地址之间转换的协议。私有地址是不能用在 Internet 上(路由器将丢弃寻址这种地址的包)的内部地址。这些地址是不能够在公网上面用的&#xff0c;只能用在局域网的内部。私有…

可以白嫖的语音识别开源项目whisper的搭建详细过程 | 如何在Linux中搭建OpenAI开源的语音识别项目Whisper

原文来自我个人的博客。 1、前提条件 服务器为GPU服务器。点击这里跳转到我使用的GPU服务器。我搭建 whisper 选用的是 NVIDIA A 100显卡&#xff0c;4GB显存。 Python版本要在3.8~3.11之间。 输入下面命令查看使用的Python版本。 python3 -V2、安装Anaconda 为啥要安装A…

教材管理系统

目 录 第一章 引言 3 1.1 背景 3 1.1.1教材管理系统 3 1.1.2信息管理系统 3 1.2开发教材管理系统的目的和原则 5 1.3开发环境介绍 6 1.3.1 开发平台 6 1.3.2 数据库查询语言——SQL 8 1.3.3 数据库设计工具——ACCESS数据库管理系统 9 第二章 系统设计 11 2.1 系统分析 11 2.2 …

惯性导航论文详解:神经惯性定位

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;Neural Inertial Localization 论文链接: https://arxiv.org/pdf/2203.15851v1.pdf 图1.从IMU测量到位置估计。给定惯性传感器数据&#xff08;左&#xff09;&#xff0c;我们的方法…

面了一个测试工程师要求月薪26K,总感觉他背了很多面试题...

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

测试类的使用

1.在pom文件中添加依赖 <dependencies> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope> </dependency> </dependencies>2.在s…

Vmware Linux磁盘空间扩容

Linux磁盘空间扩容 VMware虚拟机中配置&#xff08;1&#xff09;进入虚拟机设置界面&#xff0c;选择扩展磁盘容量。&#xff08;2&#xff09; 本次是在原来30G的基础上扩展为50G。 Linux中设置&#xff08;1&#xff09; 可以看出sda3是根分区&#xff0c;下面按照博客提示&…

掌握XPath:安装配置、解析流程、语法和实战练习全攻略

目录 引言 xpath安装与使用 解析流程与使用 xpath语法 xpath实战练习 引言 众所周知&#xff0c;XPath是Web开发中重要的工具之一&#xff0c;可以帮助我们在HTML或XML文档中快速定位和选择内容。但是对于初学者来说&#xff0c;XPath的安装配置、语法解析以及实际应用可…

响应式编程中Mono和Flux的区别

前言 当我们在使用Project Reactor&#xff0c;或者使用依赖于它的框架的时候。例如spring webflux&#xff0c;spring cloud gateway等&#xff0c;经常会用看到代码中有Mono和Flux两个术语。 响应式流 Reactor是由Pivotal公司开发的开源框架&#xff0c;它是开发响应式应用…

魔改车钥匙实现远程控车:(番外)在macOS上安装使用MicroPython

前言 哈哈&#xff0c;各位可能会奇怪为啥上一篇文章还在说怎么在 ESP32C3 上安装 Arduino&#xff0c;现在怎么又变成了安装 MIcroPython。 其实是因为上次写 Arduino 还是我高中时候的事了&#xff0c;已经不太会了。 虽然 MIcroPython 我从来没有接触过&#xff0c;但是 …

织梦网做城市分站织梦分站群二级目录织梦城市分站教程

一、安装网站 1、上传到服务器上输入www.xxxx.com/install进行安装(具体安装方法找百度一大堆); 可以参考http://www.hlzcb.com/zhimengxueyuan/zhimenganzhuangshiyong/25830.html 2.安装好后台点击后台系统→数据库备份还原→数据还原,点击下面的开始还原数据; 二、设…

vue导出word

先在项目中安装所需要的依赖包 npm install file-saver npm install docxtemplater-image-module-free npm install docxtemplater npm install pizzip npm install jszip-utils //angular-expressions 如果需要自定义图片尺寸需要安装此依赖包如图&#xff0c;一定要装完整 …

关于SD webui 部署运行的一些坑

[Bug 1]: RuntimeError: Couldnt install gfpgan 可以先尝试&#xff1a; pip install gfpgan 不过是在虚拟环境venv下的 E:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install gfpgan 如果还是无法安装gfpgan的原因是网络问题&#xff0c;就算已经科学上网…

【SAP Abap】X-DOC:SE18/19 - SAP第四代增强概念理解

【SAP Abap】X-DOC&#xff1a;SE18/19 - SAP第四代增强概念理解 1、Tcode2、概念3、增强选项类型4、增强实现类型5、增强操作方式6、增强选项与增强实现关系7、增强实施建议 1、Tcode SE18&#xff1a;Business Add-Ins: Definitions&#xff08;增强点定义/查看&#xff09;…

深度解析Qt背景设计:从基础到高级,从Widget到Quick

深度解析Qt背景设计&#xff1a;从基础到高级&#xff0c;从Widget到Quick 一、Qt背景设计的基础知识&#xff08;Basic Knowledge of Qt Background Design&#xff09;1.1 Qt背景的基本概念&#xff08;Basic Concepts of Qt Background&#xff09;1.1.1 QWidget和QQuickIte…