高架学习笔记之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.hqwc.cn/news/578851.html

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

相关文章

SinoDB数据库导入导出工具onunload/onload

onunload以二进制形式将数据库或表写到磁带上或磁盘上。当写到磁盘时&#xff0c;以磁盘页为单位卸下数据&#xff0c;这种方式卸下的数据其效率高于dbexport。 1.onunload语法 onunload [-l] [-t <tape_device>] [-b <block size>] [-s <tape size>] <…

微服务demo(四)nacosfeigngateway

一、gateway使用&#xff1a; 1、集成方法 1.1、pom依赖&#xff1a; 建议&#xff1a;gateway模块的pom不要去继承父工程的pom&#xff0c;父工程的pom依赖太多&#xff0c;极大可能会导致运行报错&#xff0c;新建gateway子工程后&#xff0c;pom父类就采用默认的spring-b…

Redis中处理处理没有ACK确认的Stream

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Stream是一个只能追加内容的数据类型。也就是说Stream这种数据类型,我们…

持续交付/持续部署流水线介绍(CD)

目录 一、概述 二、典型操作流程 2.1 CI/CD典型操作流 2.2 CI/CD操作流程说明 2.3 总结 三、基于GitHubDocker的持续交付/持续部署流水线&#xff08;公有云&#xff09; 3.1 基于GitHubDocker的持续交付/持续部署操作流程示意图 3.2 GitHubDocker持续交付/持续部署流水…

郭林保大夫——帕金森病明明很早就诊疗了,还是见不到好效果?

郭林保大夫&#xff1a;帕金森是一种常见的神经系统退行性疾病&#xff0c;如果不及时治疗&#xff0c;病情会逐渐加重&#xff0c;导致患者的生活质量严重下降。可能会出现肌肉僵硬、震颤、运动障碍等症状&#xff0c;使患者行动不便&#xff0c;甚至丧失自理能力。此外&#…

顺序栈、链式栈、顺序队列、链式队列的ADT及其实现

顺序栈ADT及其实现 链式栈ADT及其实现 顺序队列的ADT及其实现 在数组中队首队尾的分配方案 第三中方案&#xff0c;即达到入队出队操作的时间代价是O&#xff08;1&#xff09; 同时可充分利用空间&#xff0c;不会出现空间似乎用完了的假象 时间性能和空间性能发挥到最大 链…

什么样的人适合学习网络安全?怎么学?_

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a;什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 会产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级学科&#xff0c;…

pycharm复习

1.字面量 2.注释&#xff1a; 单行注释# 多行注释" " " " " " 3.变量&#xff1a; 变量名 变量值 print&#xff1a;输出多个结果&#xff0c;用逗号隔开 4.数据类型&#xff1a; string字符串int整数float浮点数 t…

Python:执行py命令,提示: Can‘t find a default Python.

1.Python运行环境罢工 今天&#xff0c;要运行一个前年用python编写的爬虫程序&#xff0c;先检测python运行环境是否正常&#xff1a; D:\Python38-32\works>c:\windows\py.exe Cant find a default Python. 再试&#xff1a; D:\Python38-32\works>py --list Installe…

为什么我们应该使用QGIS

QGIS地理信息系统是免费的开源软件&#xff0c;已成为创建地图和分析空间数据的强大工具。在本文中&#xff0c;我们将探讨 QGIS 为地图公司带来的诸多好处&#xff0c;以及为什么使用它可以促进您的业务成功。使用QGIS的好处&#xff1a; 1. 免费开源软件&#xff0c;但从长远…

uniapp-打包IOS的APP流程

打包前所需配置 在manifest文件内配置 1. APP图标 2. 启动界面 有三种启动界面配置 第一种是 HBuilderX 官方给的通用启动界面&#xff0c;页面单一&#xff0c;屏幕中间就一个圆框图标 第二种是自定义的启动图&#xff0c;无法通过AppStore的审核 第三种是自定义storyboard启动…

Spark-Scala语言实战(7)

在之前的文章中&#xff0c;我们学习了如何在IDEA中导入jars包&#xff0c;并做了一道例题&#xff0c;了解了RDD。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢…