14种UML图(统一建模语言)

news2024/11/15 9:18:45

目录

    • 1.简述
    • 2.UML组成
    • 3.UML事物
    • 4.UML关系
    • 5.UML图
      • 5.1 UML图的分类
      • 5.2 结构图(静态图)
        • 1)类图
        • 2)对象图
        • 3)构件图
        • 4)部署图
        • 5)制品图
        • 6)包图
        • 7)复合结构图
      • 5.3 行为图(动态图)
        • 1)交互图
          • 1.1)顺序图(时序图/序列图)
          • 1.2)通信图(协作图)
          • 1.3)定时图
          • 1.4)交互概览图
        • 2)用例图
        • 3)活动图
        • 4)状态图

1.简述

什么是UML?

UML,全称 Unified Model Language,中文是 统一建模语言,是由一整套图表组成的标准化建模语言,支持从需求分析开始的软件开发的全过程。

为什么要用UML?

通过使用UML,使得软件开发之前,对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时也可以方便各个开发人员之间的交流。

2.UML组成

从总体上来看,UML的结构包括构造块规则公共机制三个部分。

  • 构造块:UML有三种基本的构造块,分别是事务(thing)关系(relationship)图(diagram)。事务是UML的重要组成部分,关系把事务紧密联系在一起,图是多个关联的事务集合。
  • 规则:是指构造块如何放在一起的规定。
  • 公共机制:是指达到特定目标的公共UML方法。

3.UML事物

  • 结构事物:模型的静态部分,如类、接口、用例、构件等;
  • 行为事物:模型的动态部分,如交互、活动、状态机;
  • 分组事物:模型的组织部分,如包;
  • 注释事物:模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号。

在这里插入图片描述

4.UML关系

  • 依赖一个事物的语义依赖于另一个事物语义的变化而变化
  • 关联:是一种结构关系,描述了一组链,链是对象之间的链接。分为组合聚合,都是部分和整体的关系,其中组合事物之间的关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
  • 泛化一般/特殊的关系,子类和父类之间的关系。
  • 实现一个类元指定了另一个类元保证执行的契约

在这里插入图片描述

在这里插入图片描述

补充:Java中聚合和组合的实现区别?

Java聚合:

class A{
	public void cc(B b){
		System.out.println(b.show());
	}
}
class B{
	public void show(){
		System.out.println("hello");
	}
}
class C{
	A a = new A();
	B b = new B();
	a.cc(b);
}

上面的例子可以看出,B 对象在 A 对象调用完仍然被 C 对象引用,并没有消失。所以相对于 A、B 与 A 的关系就是聚合。

Java组合

class A{
	public A(){
		B b = new B();
	}
	b.show();
}
class B{
	public void show(){
		System.out.println("hello");
	}
}
class C{
	A a = new A();
}

上面的例子可以看出,B 对象在 A 对象调用完自然也就消失了。所以,相对于 A 来说,B 与 A 的关系就是组合。B 随着 A 的创建一起创建,随着 A 的消失一起消失。

5.UML图

5.1 UML图的分类

  • 结构图(静态图):类图、对象图、用例图、构件图、部署图、制品图、包图、组合结构图。
  • 行为图(动态图):交互图、状态图、活动图。
  • 交互图:顺序图(时序图/序列图)、通信图(协作图)、定时图、交互概览图

在这里插入图片描述

5.2 结构图(静态图)

1)类图

描述类、类的特性以及类之间的关系。

类图可以只有类名,可以只有方法没有属性,但不能只有属性没有方法。

在这里插入图片描述

2)对象图

对象是类的实例,而对象图描述一个时间点上系统种各个对象的快照。

对象图和类图看起来是十分相近的,实际上,除了在表示类的机型中添加一些“对象”特有的属性,其他元素的含义是基本一致的。

  • 对象名:由于对象是一个类的实例,因此其名称的格式是“对象:类名”,这两个部分是可选的,但如果是包含了类名,则必须加上“:”,另外,为了和类名区分,还必须加上下划线。
  • 属性:由于对象是一个具体的事物,所有的属性值都已经确定,因此通常会在属性的后面列出其值。

在这里插入图片描述

3)构件图

描述构件的结构与连接。通俗地说,构件是一个模块化元素,隐藏了内部的实现,对外提供一组接口。

在这里插入图片描述

4)部署图

描述在各个结点上的部署。

在这里插入图片描述

5)制品图

描述了系统的物理结构

6)包图

对语义联系紧密的事务进行分组。在 UML 种,包使用一个带标签的文件夹符号来表示的,可以只标明包名,也可以标明包中的内容。

在这里插入图片描述

7)复合结构图

显示结构化类的内部结构。

在这里插入图片描述

5.3 行为图(动态图)

1)交互图

1.1)顺序图(时序图/序列图)

描述对象之间的交互,重点在于强调按时间顺序。

在这里插入图片描述

1.2)通信图(协作图)

描述对象之间的交互,重点在于连接。通信图和顺序图语义相通,关注点不同,可相互转换。

在这里插入图片描述

1.3)定时图

描述对象之间的交互,重点在于给出消息经过不同对象的具体时间。

1.4)交互概览图

属于一种顺序图与活动图的混合。

2)用例图

描述用例、参与者及其关系。

在这里插入图片描述

3)活动图

描述过程行为与并行行为。

在这里插入图片描述

4)状态图

描述对象状态的转移。

在这里插入图片描述

整理完毕,完结撒花~ 🌻





参考地址:

1.掌握14种UML图,清晰图示,https://blog.csdn.net/qq_35423190/article/details/125069834

2.java组合与聚合区别,https://blog.csdn.net/heardreamperson/article/details/120484327

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

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

相关文章

k8s进阶4——安全机制常用工具之kube-beach、kube-hunter、Trivy、kubesec

文章目录 一、K8s安全机制二、kube-beach工具2.1 安装2.2 工具使用2.2.1 改成INFO状态2.2.2 改成pass状态 三、kube-hunter工具四、Trivy镜像漏洞扫描工具五、kubesec检查YAML文件安全配置 一、K8s安全机制 基本了解: 我们在前面学习的安全控制RBAC就属于K8s安全机制…

【Midjourney】Midjourney Prompt 提示词 ② ( 怀旧像素风 | 物体 A 被物体 B 包围 | 折纸艺术风格 )

文章目录 一、8-bit 16bit 提示词 - 怀旧像素风二、A out of B 提示词 - 物体 A 被物体 B 包围三、layered paper 提示词 - 折纸艺术风格 一、8-bit 16bit 提示词 - 怀旧像素风 使用 8-bit 16-bit 提示词 , 可以绘制出 像素游戏风格的图像 , 如下图所示 ; 该提示词适合创作与游…

Linux Web服务(HTTP HTML DNS)

DNS 域名解析 DNS负责将域名转换为IP地址。 详细的介绍在之前的博客中有详细记录。 这里回顾一下DNS的解析过程。 域名结构 主机名.子域.[二级域].顶级域.(根域) DNS 解析过程(面试题) 客户端 -> 本地缓存域名服务器 -> 根域服务器 -> 二级域服…

测试分析流程及输出项

测试分析 一、确认测试范围 根据测试项目的不同需求,有大致几类测试项目类型:商户平台功能测试、支付方式接入测试、架构调整类测试、后台优化测试、性能测试、基本功能自动化测试。 测试项目需要按照文档要求进行测试需求分析,并给出对应…

NIFI1.21.0最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050

这里要提一嘴...看中文的,视频或者文档虽然学习会快一点,但是... 有的时候一些新的东西没有中文的,还是得看英文的...时间就了就好了,要不然解决不了问题 英文写的,凡是好东西,肯定是很详细的,并且就是为了让别人弄明白,做了大量解释,所以不用担心看不懂... 首先,把安装包,上…

Java的Arrays类的sort()方法(41)

目录 sort()方法 1.sort()方法的格式 2.使用sort()方法时要导入的类 3.作用 4.作用的对象 5.注意 6.代码及结果 (1)代码 (2)结果 sort(&…

redis【stream】:对redis流数据类型的详细介绍

目录 stream产生原因 stream的概念 stream底层实现 stream的常用指令 常用命令一览: xadd命令 xread命令 xlen命令 xrange命令 xrevrange命令 xtrim命令 xdel命令 xgroup命令 xinfo命令 xpending命令 xreadgroup命令 xack命令 xclaim命令 stream产…

集合的三种遍历方式

文章目录 目录 文章目录 一.迭代器遍历 二.增强for遍历 三. forEach方法 四. Lambda表达式 函数式接口: 函数式接口是指只有一个抽象方法的接口 为什么Lambda只能用于函数式接口 总结 前言 作者简介:最爱吃兽奶 座右铭:抱怨身处黑暗,不如提灯前行 内容介绍:今天给大家讲一下集合…

学完能拿下阿里23k的JMeter+Grafana+Influxdb搭建可视化性能测试监控平台

【背景说明】 使用jmeter进行性能测试时,工具自带的查看结果方式往往不够直观和明了,所以我们需要搭建一个可视化监控平台来完成结果监控,这里我们采用三种JMeterGrafanaInfluxdb的方法来完成平台搭建 【实现原理】 通过influxdb数据库存储…

Shell运维实战3-while、case、for、select

目录 case基本case 企业级案例 while 循环当型与直到后台运行while 实战 for & selectfor 循环方法linux 生成随机数select case 基本 请注意 case 使用后的闭合问题,开头 case,结尾 esac #! /bin/bashread -p "input your number:" ans…

【C++刷题集】-- day3

目录 选择题 单选 OR59 字符串中找出连续最长的数字串⭐ 【题目解析】 【解题思路】 JZ39 数组中出现次数超过一半的数字⭐ 【题目解析】 【解题思路1】 【解题思路2】 选择题 单选 1、以下程序的输出结果是 ( ) #include <stdio.h> int main() {char a[10] …

vite + vue3 + storybook + ts 搭建组件库记录

目标 只按需引入&#xff0c;不依赖babel-import-plugin 插件。第三方依赖都不打包。用原生fetch请求数据。仅支持esmodule。配置package.json type:"module" 搭建 根据storybook 官网文档&#xff0c;需要在已有的项目中运行 npx storybooklatest init 也就是事…

电源原理分析、波形分析、应力计算、回路布局

1、Flyback变换器工作模态分析&#xff1b; 2、Flyback关键波形分析&#xff1b; 3、RCD吸收电路设计及开关管应力&#xff1b; 4、从噪音回路看布线要点。 5、基于实际项目&#xff0c;原创反激开关电源视频教程曝光 Flyback 变换器模态分析 ​ ON&#xff1a;开关管导通&…

516. 最长回文子序列

516. 最长回文子序列 C代码&#xff1a;dp int longestPalindromeSubseq(char* s) {int n strlen(s);int dp[n][n];memset(dp, 0, sizeof(dp));for (int i 0; i < n; i) {dp[i][i] 1;}for (int i n - 1; i > 0; i--) {for (int j i 1; j < n; j) {if (s[i] s[…

2023最新CTF入门的正确姿势

前言 随着网络安全意识的增强&#xff0c;越来越多的人开始涉足网络安全领域&#xff0c;其中CTF比赛成为了重要的学习和竞赛平台。本人从事网络安全工作多年&#xff0c;也参加过大大小小的CTF比赛&#xff0c;今天就来详细介绍CTF的流程&#xff0c;以及需要具备的知识&…

【前端相关】elementui使用el-upload组件实现自定义上传

elementui使用el-upload组件实现自定义上传 一、问题描述二、实现方式三、实现步骤3.1 方式一&#xff1a;选择后自动上传3.2 方式二&#xff1a;选择图片后手动上传3.3 拓展&#xff1a;上传文件夹 四、服务器相关接口 一、问题描述 elmentui 中的upload默认的提交行为是通过…

[C++]哈希表实现,unordered_map\set封装

目录​​​​​​​ 前言&#xff1a; 1 哈希 1.1 为什么有哈希 1.2 哈希结构 1.3 哈希冲突 2 闭散列 2.1 闭散列结点结构和位置状态表示 2.2 哈希类结构 2.3 插入 2.4 查找 2.5 删除 3 开散列 3.1 哈希表结点结构 3.2 哈希表结构 3.3 插入 3.4 查找、删除 3.5…

Ubuntu/Debian/CentOS搭建Socks5代理一键脚本

说明 Socks5属于明文代理&#xff0c;不要用于科学上网&#xff0c;否则会被阻断端口&#xff0c;可用于正常的跳板使用&#xff1b; 比如SSH转发加速国外VPS的连接速度&#xff0c;特别是一些延迟高或者丢包高的VPS&#xff1b; 使用Socks5转发后SSH就可以快速稳定的连接了&a…

Java中的Replace和ReplaceAll的区别

replace和replaceAll是都是String类中提供的两种用于字符/字符串替换的方法&#xff0c;从字面意思理解&#xff0c;replace表示替换单个匹配项&#xff0c;而replaceAll表示替换所有匹配项&#xff1b;实际上并不是这样子的,replace和replaceAll都是替换所有匹配项,replace是非…

链式二叉树OJ题思路分享

⏩博主CSDN主页:杭电码农-NEO⏩   ⏩专栏分类:刷题分享⏪   ⏩代码仓库:NEO的学习日记⏩   &#x1f339;关注我&#x1faf5;带你刷更多C语言和数据结构的题!   &#x1f51d;&#x1f51d; 链式二叉树OJ题分享 1. 前言&#x1f6a9;2. 单值二叉树&#x1f6a9;2.1 审题…