高架学习笔记之UML图概要

目录

零、什么是UML图

一、类图

二、对象图

三、构件图

四、部署图

五、制品图

六、包图

七、组合结构图

八、用例图

九、序列图

十、通信图

十一、状态图

十二、活动图

十三、定时图

十四、交互概览图


零、什么是UML图

        统一建模语言(Unified Modeling Language,简称UML)是一种用于系统设计和分析阶段进行可视化建模的标准语言。它提供了一套丰富的图形符号和规范,帮助开发团队进行可视化建模、沟通交流、系统分析设计、文档生成和代码生成,能够提高开发效率、降低错误率,并促进团队协作和软件质量的提升。

        UML图分为静态图(结构图)和动态图(行为图)两类,静态图包括类图、对象图、构件图、部署图、制品图、包图、组合结构图共7种,动态图包括用例图、序列图、通信图、状态图、活动图、定时图、交互概览图共7种;其中序列图,通信图,交互概览图和计时图又可以统称为交互图。下面仅对这些UML图做一些简单功能的介绍。

一、类图

        类图(Class Diagram)用于描述系统中对象的类型以及它们之间的关系。在类图中,主要包含以下几种元素:

  • 类(Class):表示系统中的一个实体或对象,通常包括类名、属性和方法等信息。类用矩形框表示,类名位于顶部,属性位于中间,方法位于底部。

  • 属性(Attribute):描述类的特征或状态,如变量、常量等。属性通常以名称:类型的形式表示,例如“name: String”。

  • 方法(Method):描述类的行为或操作,如函数、方法等。方法通常以名称(参数列表):返回类型的形式表示,例如“setName(name: String): void”。

  • 关系(Relationship):表示类与类之间的关系,常见的关系有关联、聚合、组合、依赖、泛化、实现等。

、对象图

        对象图(Object Diagram)展示了在系统中的某个特定时刻,实际的对象实例以及这些对象实例之间的相互关系。对象图可以被看作是类图的一个实例,类图描述了对象的静态结构,而对象图则描述了这些对象的动态实例。在对象图中,主要元素为对象和链。对象中包含对象名,对象类型和对象状态;链是类之间的关联关系的实例,是两个或多个对象之间的独立连接。因此,链在对象图中的作用类似于关联关系在类图中的作用。

、构件图

        构件图(Component Diagram)用于描述系统中各种软件构件之间的依赖关系。构件是系统中可替换的、物理独立的部分,可以是代码模块、库、 可执行文件或其他任何软件构建单元。构件图中,主要元素为构件,接口和依赖关系:

  • 构件:构件是软件系统中可独立部署、可替换的、封装了具体实现逻辑的单元。

  • 接口:接口是构件对外提供的服务或功能的抽象描述。它规定了构件所能执行的操作以及操作的输入输出参数。外部客户或其他构件可以通过调用构件的接口来使用其功能,而不必关心其内部的具体实现细节。

  • 依赖关系:在构件图中,依赖关系表示一个构件(称为依赖者)使用另一个构件(称为供应商)所提供的服务或功能。

、部署图

        部署图(Deployment Diagram)用于描述在物理硬件上配置软件系统的拓扑结构。部署图展示了计算机网络中硬件节点(如服务器、桌面计算机、移动设备等)的物理连接以及在这些节点上运行的软件构件。在部署图中,主要元素有:

  • 节点(Node):代表系统中的一个物理节点,可以是硬件设备(如服务器、PC、手机等)或者软件执行环境(如应用服务器、数据库服务器等)。

  • 构件(Component):代表系统中的一个软件组件,即一个可替换和独立部署的部分。构件可以被部署到节点上运行,展示了软件组件与物理节点的映射关系。

  • 连接(Connection):表示节点之间的通信路径,用于展示不同节点之间的数据传输和交互方式。

、制品图

        制品图(Artifact Diagram)用于描绘一个系统的物理结构。在制品图中,“制品”(Artifacts)指的是系统开发过程中的具体物理产出物,例如源代码文件、库文件、数据库、XML配置文件、文档以及其他任何可以被看作系统组成部分的实体。制品图通常包括两种元素:制品以及它们之间的关系。在实际应用中,制品图常常与部署图共同使用,形成对系统逻辑架构和物理部署的双重理解。

六、包

        包图(Package Diagram)将相关的元素分组或封装成包,并描述包与包之间的依赖、组合和继承关系。在UML中,“包”是一个容器,它可以包含类、接口、组件和其他子包等多种模型元素。包图的主要目的是将系统中的元素进行分类和组织,以提高可读性和可维护性。通过将相关的元素放入同一个包中,可以更好地理解它们之间的关系。此外,包图还可以帮助开发人员更好地协作,因为不同的团队或人员可以负责不同的包。包图中的元素通常包括包、导入和导出关系。包是用于组织元素的容器,导入和导出关系则用于表示包之间的依赖关系。

七、组合结构

        这种图锁定的范围是对象内部,它强调对象内部的组成结构。组合结构图是一种静态结构图,用于表示逻辑上的“组合结构”,可以包括内部零件,这些零件通过相互交互或通过端口与外界交互。组合结构图的结点元素包括部件、端口、合作、合作使用,以及连接器

八、用例图

        用例图主要用于描述系统、子系统或类的功能,并展示了用户和与用户相关的功能的交互,但是不会描述系统在内部工作的方式。用例图由参与者、用例、子系统以及它们之间的关系构成。参与者不是特指人,而是指系统以外的,在使用系统或与系统交互中所扮演的角色,因此参与者可以是人、事物、时间或其他系统等等用例则是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。

九、序列图

        序列图(Sequence Diagram)用于描述对象之间的交互顺序。序列图展示了对象之间的交互过程,包括对象之间发送消息的顺序和时间。在序列图中,参与者(Actor)以垂直的生命线(Lifeline)表示,每个生命线代表一个对象或角色。对象之间的交互通过箭头表示消息的传递方向,可以显示同步消息、异步消息、返回消息等不同类型的消息。

十、通信图

        通信图(Communication Diagram)用于描述系统中对象之间的交互关系。通信图展示了系统中各个对象之间的通信路径和消息传递方式,以便更好地理解系统的结构和交互。通信图与序列图相似,但通信图更侧重于展示对象之间传递消息的关系和结构,而序列图更关注对象之间的动态交互和消息传递顺序。

十一、状态图

        状态图(State Diagram)用于描述对象在其生命周期中各种状态之间的转换和行为。状态图展示了对象在不同状态下的行为和状态之间的转移条件。在状态图中,一个对象可以处于多个状态之一,并且可以根据一定的条件或事件触发,从一个状态转移到另一个状态。状态图由状态(State)、转移(Transition)、事件(Event)和动作(Action)等元素组成。状态表示对象所处的状态,转移表示状态之间的转换条件,事件表示触发状态转移的事件,动作表示状态转移时执行的动作。

十二、活动图

        活动图(Activity Diagram)用于描述系统中的业务流程、工作流程或算法流程。活动图展示了系统中各个活动(Activity)之间的顺序关系、并发关系和条件逻辑。在活动图中,活动表示系统中的一个动作或操作,活动之间通过控制流(Control Flow)连接,表示活动之间的顺序关系。除了顺序流之外,活动图还可以展示并发流(Concurrent Flow)、分支流(Branch Flow)和合并流(Merge Flow)等不同类型的流程控制。活动图还可以包含决策节点(Decision Node)、合并节点(Merge Node)、分支节点(Fork Node)等节点,用于描述流程中的条件判断和并发执行。

十三、定时图

        定时图(Timing Diagram)专注于描述对象之间随时间变化的交互。定时图特别适合于实时系统和嵌入式系统的建模,因为它们需要考虑消息的发送和接收时间以及对象状态的持续时间。在定时图中,时间沿着水平轴(时间轴)展开,而对象的状态和生命线沿着垂直轴表示。定时图显示了对象在其生命周期内的状态变化,以及对象之间如何随着时间发送和接收消息。这些图可以用来分析和设计系统的实时行为,确保系统满足时间约束。定时图采用一种带数字刻度的时间轴来精确地描述消息的顺序,而不是像顺序图那样只是指定消息的相对顺序,而且它还允许可视化地表示每条生命线的状态变化,当需要对实时事件进行建模时,定时图可以很好地满足要求

十四、交互概览图

        交互概览图(Interaction Overview Diagram)是交互图与活动图的混合物,可以把交互概览图理解为细化的活动图,在其中的活动都通过一些小型的交互图来表示。交互图包含序列图,通信图,交互概览图和定时图。大多数交互概览图标注与活动图一样。由于交互概览图的每个活动节点内部可以包含嵌套的交互图,这使得它能够详细地展示活动内部的交互细节。这样的结构使得交互概览图非常适合于展示复杂的业务流程和决策逻辑。

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

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

相关文章

pytorch中的torch.hub.load():以vggish为例

pytorch提供了torch.hub.load()函数加载模型,该方法可以从网上直接下载模型或是从本地加载模型。官方文档 torch.hub.load(repo_or_dir, model, *args, sourcegithub, trust_repoNone, force_reloadFalse, verboseTrue, skip_validationFalse, **kwargs)参数说明&a…

【Qt】:坐标

坐标 一.常用快捷键二.使用帮助文档三.Qt坐标体系1.理论2.代码 一.常用快捷键 注释:ctrl / • 运⾏:ctrl R • 编译:ctrl B • 字体缩放:ctrl ⿏标滑轮 • 查找:ctrl F • 整⾏移动:ctrl shift ⬆/…

protobuf学习笔记(二):结合grpc生成客户端和服务端

上一篇文章大概讲了如何将自定义的protobuf类型的message转换成相应的go文件,这次就结合grpc写一个比较认真的客户端和服务器端例子 一、项目结构 client存放rpc服务的客户端文件 server存放rpc服务的服务端文件 protobuf存放自定义的proto文件 grpc存放生成的g…

代码随想录训练营Day36:● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

435. 无重叠区间 题目链接 https://leetcode.cn/problems/non-overlapping-intervals/description/ 题目描述 思路 直接统计重叠区间的个数,就是需要删除的个数 public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,b)-> Intege…

【电子取证篇】哈希校验值的变与不变

【电子取证篇】哈希校验值的变与不变 哈希值(散列值)是针对电子数据内容来计算的,内容变则哈希变;但计算对象的文件名、文件时间等属性改变不会影响散列值!!!—【蘇小沐】 (一&…

点点数据K参数加密逆向分析(RPC方案跟加密算法还原)

文章目录 1. 写在前面2. 接口分析3. 断点分析4. RPC调用5. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长…

Nginx转发代理请求(http)+转发mysql(stream)

1.Nginx能处理的不同类型模块 1.1 http 模块 http 模块用于处理 HTTP 和 HTTPS 协议的请求和响应,通常用于构建 Web 服务器和反向代理服务器。通过 http 模块配置的服务可以处理 Web 浏览器发起的 HTTP 请求,并向客户端提供 Web 页面、静态资源、API 接…

linux通用命令 ssh命令连接慢问题排查

系列文章目录 文章目录 系列文章目录一、 ssh 连接慢3.1 查找原因3.2 解决方案 一、 ssh 连接慢 最近的 koji 服务器 使用 ssh 连接很慢。 3.1 查找原因 可以通过 ssh -vvv 192.168.0.123 或 time ssh root192.168.0.123 exit 查找原因如下: SERVER的SSHD会去DN…

【论文通读】UFO:A UI-Focused Agent for Windows OS Interaction

UFO:A UI-Focused Agent for Windows OS Interaction 前言AbstractMotivationMethodsExperimentConclusion 前言 Windows客户端第一个JARVIS,利用GPT4 Vision识别截图信息辅助智能体自动化执行操作,作为微软大肆宣传的一篇工作,其…

什么是齐纳二极管?齐纳二极管1SMB5944BT3G参数详解+应用方案

关于齐纳二极管基本知识: 齐纳二极管,又称稳压二极管。利用PN结的反向击穿状态,电流变化范围大,电压基本不变。制作了具有稳压功能的二极管。这种二极管是一个高电阻半导体器件,直到临界反向击穿电压。在这个临界击穿…

如何将Maven与TestNG集成

我们已经讨论了如何在maven中执行单元测试用例,但那些是JUnit测试用例,而不是TestNG。当maven使用“mvn test”命令进入测试阶段时,这些用例被执行。 本文将介绍如何将Maven与TestNG集成,并在maven进入测试阶段时执行TestNG测试。…

创新研报 | 2024+人工智能安全报告

人工智能(AI)是新一轮科技革命和产业变革的核心技术,被誉为下一个生产力前沿。具有巨大潜力的 AI 技术同时也带来两大主要挑战:一个是放大现有威胁,另一个是引入新型威胁。 奇安信预计,未来十年,人工智能技术的恶意使用将快速增长…

【数据结构】树tree

树的遍历 广度遍历Breadth-first traversal Breadth-first traversal is the traversal strategy used in the binary tree.Breadth first traversal, also known as level order traversal is the traversal strategy used in a binary tree. It involves visiting all the …

每日一题(leetcode2909):单份查找与群组查找

如果按照简单的方式,逐个查找中间元素(往两边扩散),那么复杂度会是n方。 这种方式没有对比较大小后的数据进行充分利用,所以复杂度较高。 我们考虑到既然要遍历,那么不妨干脆先把所有元素的左边最小值和右…

《HelloGitHub》第 96 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …

ZYNQ学习之Ubuntu下Linux文件系统与用户权限

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Linux 文件系统 1.1 Linux 文件系统简介以及类型 操作系统的基本功能之一就是文件管…

JavaScript练手小技巧:仿米哈游官网人物跟随鼠标位移效果

最近&#xff0c;有同学找到我&#xff0c;说&#xff1a;老师&#xff0c;我想模仿米哈游官网。 我说&#xff1a;可以&#xff0c;很不错的。 她说&#xff1a;有些效果有点难&#xff0c;能不能帮我看下。 于是&#xff0c;我就简单大概粗糙的讲解了下大致的原理&#xf…

2024 ccfcsp认证打卡 2022 06 01 归一化处理

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 输入数字的个数int[] a new int[1010]; // 创建一个数组来存储输入的数字double sum 0; // 用于计算所有输入数字的总…

Let`s move - sui move开发实战-dao(3)

引言 经过之前的学习&#xff0c;准备进行实战开发一个简单的dao项目&#xff0c;实现一个去中心化自治组织&#xff0c;用于管理共享资金、社区任务、提案和投票等功能&#xff0c;本篇文章分享了提案模块、错误定义。 提案设计 关于提案模式的具体设计&#xff1a; dao m…

Android开发 OCR:通过Tesseract实现图片文字识别

下面是整个详解步骤过程 效果图一、OCR的含义二、什么是Tesseract三、前提准备1、添加依赖2、数据文件下载路径 四、实际代码案例Demo如下&#xff1a;Main.xmlMain.java 效果图 流程&#xff1a;获取assets中的图片显示到页面&#xff0c;提取照片内的文字 一、OCR的含义 o…