【UML】类图及其六种关系,超详细介绍,细节满满

目录

一、概念

推荐一个画UML相关图的软件:ProcessOn

二、快速介绍类图

1、普通类的类图

2、抽象类的类图

3、接口的类图

三、类与类之间的关系

(一)、关联关系

1、单向关联

2、双向关联

3、自关联

(二)、聚合关系(强关联)

1、一对多:学校和学生

2、一对一:汽车和某个零件

(三)、组合关系(强聚合)

(四)、依赖关系

(五)、继承关系(也叫泛化关系)

(六)、实现关系


一、概念

类图显示了模型中存在的类的内部结构以及它们与其他类的关系。

类图是面向对象建模的主要组成部分,简化人们对系统的理解。

类图是系统分析和设计阶段的重要产物。

推荐一个画UML相关图的网站:ProcessOn

二、快速介绍类图

1、普通类的类图

在UML类图中。类使用包含类名、属性(成员变量)、方法且带有分割线的矩形来表式,如下图:表示名字为MyClass的,包含ID、name、age这3个属性,myName、myID、myAge这三个方法。

其中 :

 " : "后面是属性的类型或方法的返回类型。

方法名后面()里面是参数列表。

访问权限:

+:表示public

-:表示private

#:表示protect

2、抽象类的类图

与普通类不同的是,抽象类的类名和方法都用斜体表示:

有时为了更加容易区分,我们可以将实线方框换做虚线方框。

3、接口的类图

接口类图与上述区别:接口名和属性用斜体表示,因为接口主要是抽象方法,所以可以不写属性一栏,即方框里面只写两行内容。

三、类与类之间的关系

(一)、关联关系

关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生学生和课程等。关联关系是类与类之间最常用的一种关系,一般引用的对象,会作为另外一个类的成员变量来使用。关联关系分为一般关联关系、聚合关系和组合关系。一般关联又可以分为单向关联,双向关联,自关联。

1、单向关联

即一个类的对象作为另一个类的成员(部分和整体),那么两个类就具有单向关联的关系。用一个带箭头的实线表示。由整体指向部分,这里学校就是一个整体

2、双向关联

即两个类的对象互相作为对方的成员变量,用一条不带箭头的实现表示

3、自关联

即自己作为自己的成员(如链表就有类似的实现),用一个带有箭头的线且指向自己表示

(二)、聚合关系(强关联)

1、一对多:学校和学生

聚合关系是关联关系的一种, 是强关联关系,是整体和部分之间的关系。聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。用一条线一头是个空心菱形表示,一指向多,例如,一个学校可以有多个学生,所以是学生指向箭头。

2、一对一:汽车和某个零件

与一对多区别是:整体和部分变成一对一,如果汽车只包含某一个零件,此时汽车和该零件就是一种一对一聚合关系。用的线和一对多一样,是从部分指向整体(零件指向汽车)

注意:这里也可以画成单向关联关系,因为聚合关系本身就是一种关联关系,但是当关联属性较强时,就用聚合更合适。

(三)、组合关系(强聚合)

组合:表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系。在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,订单表与订单项的关系,如果订单表不存在,订单项也不存在了。

UML类图中,组合关系用带实心萎形的实线来表示,菱形指向整体

(四)、依赖关系

依赖关系:是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。在UML类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类

如下,人画正方形:正方形类对象作为人类中方法的参数。

(五)、继承关系(也叫泛化关系)

继承关系:是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系。在UML类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。例如,Student 类和Teacher类都是Person类的子类,其类图如下图所示:

(六)、实现关系

实现关系:是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。在UML类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口(继承是实线空心三角箭头,实现是虚线空心带三角箭头)。例如,鼠标和键盘实现了USB接口,如图所示:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML文件中引入jQuery的库文件

方法一: 1. 首先,在官方网站(https://jquery.com/)上下载最新版本的jQuery库文件,通常是一个名为jquery-x.x.x.min.js的文件。 2. 将下载的jquery-x.x.x.min.js文件保存到你的项目目录中的一个合适的文件夹中,比如将它保存在你的项…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据,找到设备(host)接收信息的数据 第二栏出现hid报告,右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…

ReactPress与WordPress:一场内容管理系统的较量

ReactPress Github项目地址:https://github.com/fecommunity/reactpress WordPress官网:https://wordpress.org/ ReactPress与WordPress:一场内容管理系统的较量 在当今数字化时代,内容管理系统(CMS)已成为…

DevExpress WinForms中文教程:Data Grid - 如何绑定到实体框架数据源?

在本教程中,您将学习如何将DevExpress WinForms的网格控件绑定到实体框架数据源、如何使用数据注释属性来更改网格显示和管理数据的方式,以及如何将单元格值更改发送回数据源。 P.S:DevExpress WinForms拥有180组件和UI库,能为Wi…

使用多种机器学习调参模型进行二分类建模的全流程,代做分析辅导

使用多种机器学习调参模型进行二分类建模的全流程教程 机器学习全流程分析各个模块用到的总的参数文件 0. 分析参数文件 参数文件名称:total_analysis_params_demo.xlsx ,很多分析模块都是这个总的参数文件,我的这个总的参数文件如果有更新…

材质(一)

描述: 材质蓝图,蓝图可以这么定义,是一种数据结构,是一种带有流水线的模糊的数据结构, 材质蓝图也是一种蓝图。 示例操作:

SCI论文数据可视化的在线网址

目录 SCI论文数据可视化的在线网址 EVenn(Evenn):免费 SCI论文数据可视化的在线网址 数据可视化的在线网址,以下是一些值得推荐的资源: ImageGP(ImageGP | ImageGP):该平台可以在线生成常见的线图、柱状图、散点图、箱线图、集合图、热图和直方图等。用户只需粘贴数…

电子应用产品设计方案-4:基于物联网和人工智能的温度控制器设计方案

一、概述 本温度控制器旨在提供高精度、智能化、远程可控的温度调节解决方案,适用于各种工业和民用场景。 二、系统组成 1. 传感器模块 - 采用高精度的数字式温度传感器,如 TMP117,能够提供精确到 0.01C 的温度测量。 - 配置多个传感器分布在…

5G的发展演进

5G发展的驱动力 什么是5G [远程会议,2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下,ITU-R WP 5D#35e远程会议宣布3GPP 5G技术(含NB-IoT)满足IMT-2020 5G技…

人工智能--自然语言处理简介

上一篇:《人工智能模型训练中的数据之美——探索TFRecord》 序言:自然语言处理(NLP)是人工智能中的一种技术,专注于理解基于人类语言的内容。它包含了编程技术,用于创建可以理解语言、分类内容&#xff0c…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计,一般放置在页面的顶部。水平 导航适用性强,几乎所有类型的网站都可以使用,设计难度较低。 如果导航过于普通,无法容纳复杂的信息结构,就需要在…

企望制造ERP系统 drawGrid.action SQL注入致RCE漏洞复现

0x01 产品简介 企望制造ERP系统是一款专为制造企业设计的企业资源计划(ERP)软件,旨在优化企业的资源配置,提高运营效率,并增强企业的竞争力。系统集成了财务管理、生产管理、供应链管理、客户关系管理(CRM)、人力资源管理(HRM)等多个核心功能模块,能够全面覆盖企业的…

基于JDBC的书库系统(MySQL)

一、创建数据库中的表 1、需求 有一张表叫javabook【创建表要求使用sql语句进行】 表中列 bookid 整数自增类型 表中列 bprice 小数类型 表中列 bookname 字符串类型 长度不能小于50 工程和包要求: domain dao …

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片: 二、 产品特性: 4G性能:支持2K超高清图传,数据传输不掉帧,更稳定。 独立北…

腾讯音乐2024Q3财报:“稳”是核心,再进一步

11月12日,腾讯音乐娱乐集团(以下简称“腾讯音乐”)发布了截至2024年9月30日止的第三季度未经审计财务报告,各项核心财务指标均符合市场预期。本季度总收入为70.2亿元,同比增长6.8%;调整后净利润为19.4亿元&…

地宫取宝(摘花生+最长上升子序列)C++

1212. 地宫取宝 - AcWing题库 #include <iostream>using namespace std;const int N 55; const int MOD 1000000007;int w[N][N],f[N][N][13][14]; int n,m,k;int main() {cin >> n >> m >> k;for (int i 1;i < n;i) {for (int j 1;j < m;j)…

2024 年 8 个最佳 API 设计工具图文介绍

8 个最佳 API 设计工具推荐&#xff0c;包括 Apifox、Postman、Swagger、Insomnia、Stoplight、Hoppscotch、RapidAPI和Paw。 详细介绍&#xff1a;2024 年 8 个最佳 API 设计工具推荐

minio 分布式

方案设计 需要5台服务器&#xff0c;一台nginx用作分发请求&#xff0c;4台minio服务器&#xff0c;每个minio服务器上至少2个盘。在这个方法中&#xff0c;我使用了lvm的缓存&#xff0c;在同种固态盘的情况下&#xff0c;可以使读性能提高数倍到十倍&#xff0c;使写性能提高…

kettle开发-Day43-数据对比

前言&#xff1a; 随着数字化的深入&#xff0c;各种系统及烟囱的建立&#xff0c;各系统之间的架构和数据存储方式不同&#xff0c;导致做数据仓库或数据湖时发现&#xff0c;因自建的系统或者非标准化的系统经常存在物理删除而不是软删除。这就延伸出一个问题&#xff0c;经常…

vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-

1.前提&#xff1a; VScode中的git组件执行任何合并动作的时候需要提交远程合并的commit信息&#xff0c;然后编辑器自动打开的是nano文本编辑器 2.nano编辑器说明&#xff1a; 1.保存文件&#xff1a;按 Ctrl O&#xff0c;然后按 Enter 来保存文件。 2.退出编辑器&#xf…