当前位置: 首页 > news >正文

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

相关文章:

  • 小程序UI设计规范,界面设计尺寸详解
  • 囊括所有大模型:高质量中文预训练模型大模型多模态模型大语言模型集合
  • 【QQ版】QQ群短剧机器人源码 全网短剧机器人插件
  • Python数据库编程全指南SQLite和MySQL实践
  • Centos服务器Open Gauss 部署
  • Python练习
  • k8s安装traefik作为ingress
  • 科技下乡:数字乡村改变乡村生活方式
  • 物联网实战--入门篇之(三)嵌入式STM32
  • 如何应对复杂软件工程的开发流程?
  • JVM(二)——垃圾回收
  • 新网站收录时间是多久,新建网站多久被百度收录
  • 沃尔玛百货有限公司 企业网页设计制作 企业html网页成品 跨国公司网页设计开发 web前端开发,html+css网页设计素材,静态html学生网页成品源码
  • BIM自动化简介
  • 主流公链 - Monero
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • const let
  • css系列之关于字体的事
  • ES6简单总结(搭配简单的讲解和小案例)
  • exif信息对照
  • in typeof instanceof ===这些运算符有什么作用
  • miaov-React 最佳入门
  • MySQL的数据类型
  • nginx 负载服务器优化
  • React16时代,该用什么姿势写 React ?
  • Wamp集成环境 添加PHP的新版本
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 阿里云应用高可用服务公测发布
  • 程序员该如何有效的找工作?
  • 讲清楚之javascript作用域
  • 聊聊hikari连接池的leakDetectionThreshold
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 收藏好这篇,别再只说“数据劫持”了
  • 为视图添加丝滑的水波纹
  • 我的面试准备过程--容器(更新中)
  • 白色的风信子
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #QT(TCP网络编程-服务端)
  • (09)Hive——CTE 公共表达式
  • (12)目标检测_SSD基于pytorch搭建代码
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (6)设计一个TimeMap
  • (C语言)逆序输出字符串
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (四)汇编语言——简单程序
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)c++ std::pair 与 std::make
  • (转)总结使用Unity 3D优化游戏运行性能的经验