[UML 扫盲]什么是UML?

article/2025/8/19 11:07:22

文章目录

    • 一、UML 是什么?
    • 二、UML 与 面向对象
    • 三、UML 基本要素
    • 四、UML 常见图

  • 概述

    UML 是统一建模语言(Unified Modeling Language)的缩写。UML 提供了标准通用的图形化设计语言,使得在构建计算机应用时,开发团队的成员更高校直观地进行交流,用来绘制软件的蓝图。同时,UML 很好地支持面向对象的设计范式。

  • 详情

    一、UML 是什么?

    UML 是 Unified Modeling Language 的缩写,即统一建模语言或标准建模语言。1997年,由OMG 组织(Object Management Group对象管理组织)发布。目的是为开发团队提供标准通用的设计语言来开发和构建计算机应用。

    UML 提出了一套 IT 专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划。UML支持面向对象的技术,能够准确的方便地表达面向对象的概念,体现面向对象的分析和设计风格。

    UML 不是一种编程语言,而是一种绘图语言,用来绘制软件蓝图。

    二、UML 与 面向对象

    UML 可以表示出 OO 中所有的概念以及关系。面向对象中的类、对象、接口以及封装、继承、多态的概念都可以用 UML 表示出来。

    在OO设计的过程中,有三个基本步骤:

    OO Analysis --> OO Design --> OO implementation using OO languages
    

    分析:确定对象,并以适当的方式来描述。如果可以有效地识别出对象,接下来的设计将会非常容易。

    设计:对象的要求及其履行情况。

    执行:使用编程语言进行实现

    三、UML 基本要素

    UML 的基本元素包含:事物(Things)、图(Diagrams)、关系(Relationships)

    事物(Things):实体抽象化的最终结果,分为四类:结构、行为、分组、注释

    1. 结构(Structural):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,有类(Class)、接口(Interface)、协作(Collaboration)、用例(Use case)、组件(Component)、节点(Node);
      - 类:表示一组具有类似职责的对象
      - 接口:定义了一组操作,这些操作指定了类的职责
      - 协作:定义了元素之间的交互
      - 用例:表示系统位特定目标执行的一组动作
      - 组件:描述系统的物理部分
      - 节点:可以定义为运行时存在的物理元素
    2. 行为(Behavioral):行为事物指的是 UML 模型中的动态部分,代表语句里的 “动词”,表示模型里随着时空不断变化的部分,包含两类:交互、状态机;
    3. 分组(Grouping):可以把分组事物看成是一个"盒子",模型可以在其中被分解。目前只有一种分组事物,即包(package)。
    4. 注释(Annotational):注释事物可以被定义为一种机制来捕捉UML模型元素的言论,说明和注释。注释是唯一一个注释事物。

    关系:显示元素是如何彼此相关联,UML中定义了四种关系(依赖关系依次增强):

    1. 泛化:generalization 表示符号为 实线+空心三角形

      可以表示继承(Inheritance)的关系,两个类之间是“is-a”的关系,是一种表示特殊与一般的关系,Java中对应关键字 extends。

    2. 实现:realization 表示符号为 虚线+空心三角形

      可以表示类对接口的实现(对应Java中的关键字 implements)

    3. 依赖:dependency 表示符号为 虚线+箭头

      可以用来表示类之间“uses-a”的关系,如果类A中的方法操纵另一个类B的对象,就说类A依赖于类B。

    4. 关联:association 表示符号为 实线+箭头

      可以用来表示类之间“has-a”的关系

    5. 聚合:aggregation 表示符号为 实线+空心菱形

      关联关系中的一种特例,可以用来表示类之间“has-a”的关系,例如类A的对象包含类B的对象。

    6. 组合:composition 表示符号为 实线+实心菱形

      关联关系中的一种特例,表示整体与部分的关系,整体与部分不可分离,且有相同的生命周期,是“contains-a”的关系。

UML关系图示

:结构图、行为图两大类。UML 结构图表示系统的静态方面,行为图基本上捕捉系统的动态方面。

结构图:

  1. 类图
  2. 对象图
  3. 组件图
  4. 部署图

行为图:

  1. 用例图
  2. 序列图
  3. 协作图
  4. 状态图
  5. 活动图

四、UML 常见图

  1. 类图

    定义系统中的类,描述类的内部结构 (属性, 方法等),表示类之间的关系 (泛化、实现、依赖、关联、聚合、组合);

    类的表示:

    • 名称部分(Name) : 在顶端存放;

    • 属性部分(Attribute) : 在中间存放属性,属性类型(AttributeType),初始值(InitialValue);

      👉 语法:[可见性] 属性名 [:类型][ =初始值][{属性字符串}]
      注:[]中的内容可选

      👉 可见性:公有(public + ),私有(private - ),受保护(protected # ),UML中不存在默认, 如果没有任何符号,就表示没有定义该属性。

    • 方法部分(Operation) : 底部存放操作,参数表(arg:ArgumentType),返回值(ReturnType);

      👉 语法:[可见性] 操作名 [( 参数表 )][ : 返回类型][ { 属性字符串 } ]

      👉 主要包括 公有(public +),私有(private -),受保护(protected #),包内公有(package ~);

       💡 可以增加注释部分,进行解释说明
      

在这里插入图片描述

在这里插入图片描述

  1. 对象图: 对象图可以被想象成正在运行的系统在某一时刻的快照
    在这里插入图片描述

  2. 组件图: 又称为构件图,他描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。

    https://atts.w3cschool.cn/attachments/image/20170822/1503390930843281.jpg

  3. 部署图: 部署图与组件图密切相关,部署图是描述部署软件组件的硬件组件;而组件图是用来描述组件以及它们是如何在硬件中部署。

    https://atts.w3cschool.cn/attachments/image/20170822/1503392775828972.jpg

  4. 用例图:

    用例图的目的是捕捉到一个系统的动态方面。用例图是用来收集系统的要求,包括内部和外部的影响。这些要求大多是设计要求。所以,分析一个系统时要收集其功能用例和确定参与者。

    https://atts.w3cschool.cn/attachments/image/20170824/1503571564460760.png

  5. 序列图:UML 交互图主要包括对象消息两类元素,**创建交互图的过程实际上就是向对象分配任务的过程。**序列图又叫时序图。

    以下序列图中包含了四个对象:客户、订单、特殊订单和正常订单。

    首先调用的是 sendOrder(),这是一个订单对象的方法;在下一次调用 *confirm(),*这是一个 SpecialOrder 对象的方法;最后调用 Dispatch(),它是 SpecialOrder 对象的一种方法。这里的图主要描述方法从一个对象到另一个对象的调用,在系统运行时这也是实际情况:

    https://atts.w3cschool.cn/attachments/image/20170825/1503626172254486.jpg

  6. 协作图

    https://atts.w3cschool.cn/attachments/image/20170825/1503626266734046.jpg

  7. 状态图: 状态图是用来描述不同的对象在其生命周期的状态。

    在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个中止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、中止状态和判定等组成,一个简单的状态图如下:
    在这里插入图片描述

  8. 活动图:

    https://atts.w3cschool.cn/attachments/image/20170825/1503628750669248.jpg

References:
w3c school uml 教程
UML实践详细经典教程
tutorialspoint – learn uml


http://chatgpt.dhexx.cn/article/sW7R6gii.shtml

相关文章

大数据学习(3)

大数据学习(3) 1 Hive-SQL-DML语句1.1 Hive SQL Load 加载数据语句1.1.1 Load功能1.1.2 Load语法规则1.1.3 Load 语法实验1.1.3.1 Load Data From Local FS1.1.3.2 Load Data From HDFS1.1.3.3 Overwrite选项 1.2 Hive SQL Insert 插入数据语句1.3 Hive …

如何学习大数据分析

上面有很多关于BOT的信息:这并不是嗡嗡作响。归根结底,BINO数据已经成为每个行业的驱动力,这充分说明了利用大数据分析的最大优势。但是,仅B此字不只是因为我们知道而改变了业务。更重要的是,大数据分析分析系一直是开…

大数据分析怎么学习

大数据分析从业虽然有难度,但大数据分析岗的薪酬高、发展潜力好,很多人们想转行做大数据分析,朝着大数据分析方向去发展。那么,大数据分析怎么学习?学习哪些内容呢? 第一,可视化分析,事实上&am…

大数据学习路线,如何学习大数据?

声明:本文转至http://blog.csdn.net/yuexianchang/article/details/52468291 1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念&#xff…

机器学习-大数据

模式识别 性能好,算法,经验 实际和模型的差距太大

大数据学习(1)-大数据概述

文章目录 目录大数据产生背景大数据概念大数据影响大数据应用大数据关键技术大数据产业大数据,云计算,物联网关系云计算物联网大数据,物联网,云计算三者之间联系 目录 大数据产生背景 三次信息化浪潮 根据IBM前首席执行官郭士纳…

2021年全新大数据学习路线图,(含入门到精通项目学习免费教程哦)

大数据教程,大数据学习,大数据学习路线图, 今天就给大家分享2021年全新的大数据学习教程哦! 2021年黑马程序员全新的大数据学习路线图分享给大家,大家可以按照这个大纲来学习,自学也可哦! 第一…

大数据——学习路线

学习大数据首先我们要学习Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。下面是大数据相关的技术 Hadoop 这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDF…

怎样进行大数据的入门级学习?

大数据在刚出来的时候,人们表现的非常乐观,以至于对它持有非常高的期望,和普遍的追捧。 不过只要有数据在,大数据就不会过时。随着上游的数据规模持续增长,大数据在未来一定会扮演重要角色。因此,市场需求…

当我说转行大数据工程师时,众人笑我太疯癫,直到四个月后......

【不要错过文末彩蛋】 申明: 本文旨在为【大数据自学者|大数据专业学生|工资低的程序员(Java/Python等)】提供一个从入门到入职的的大数据技术学习路径,不适合5年以上大数据工程师的进阶学习。 前言: 一、个人介绍 …

网络层协议(6)

文章目录 一、网络层二、网络层的功能三、IP数据包格式1.版本2.头部长度3.服务类型4.包裹总长5.重组标识6.标志7.段偏移量8.生存时间(TTL)9.协议代码10.首部检验和11.源地址12.目的地址13.可选字段14.数据部分 四、其他网络层协议1.ICMP协议2.ARP协议3.R…

网络层的各层协议

网络层的各层协议 目录 一、IP数据包格式 二、Icmp协议介绍 2.1 ICMP协议 2.2 ICMP协议的封装 三.ARP协议介绍 3.1 什么是ARP协议 3.2 ping命令 3.3 TRACERRT命令 3.4ARP协议工作原理 四、ARP攻击原理 一、IP数据包格式 协议字段 IP数据包格式&#xf…

网络层协议------IP协议

这里写目录标题 IP协议基本概念协议头格式网段划分特殊的ip地址私网ip地址和公网ip地址ip地址的数量限制路由 IP协议 IP协议:其实就是TCP/IP协议中对于网络层的一个协议(注意IP协议是TCP/IP协议族中最为核心的协议,因为对于上层的数据&#…

网络协议层

1.osi七层模型以及每层的都是干什么的 七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 数据链路层&…

网络协议:网络层传输层

目录 网络层 网络层首部 网络层首部--总长度 网络层首部--标识、标志 网络层首部--片偏移 网络层首部--生存时间 ping的几个用法 传输层 UDP UDP--数据格式 UDP--检验和(Checksum) 端口 网络层 网络层数据包(IP数据包,Pac…

第四讲:网络层协议

文章目录 一、网络层功能二、IP数据包的格式1、IP数据包格式2、各字段说明 三、ICMP协议1、ICMP封装与格式2、ping命令2.1 ping命令的各种用法 四、ARP协议1、什么是ARP协议?2、ARP协议是如何工作的?3、ARP工作原理4、windows当中如何查看ARP缓存表5、AR…

网络层协议的介绍

目录 ICMP协议(Internet控制报文协议) 网络层的功能 *定义了基于IP协议的逻辑地址 *连接不同的媒介类型 *选择数据通过网络的最佳路径 总体结构 IP数据包格式ICMP协议介绍ARP协议介绍ARP攻击原理 1,IP数据包格式 协议字段 版本&…

网络层协议

网络层有四个协议:ARP协议,IP协议,ICMP协议,IGMP协议。 ARP协议为IP协议提供服务,IP协议为ICMP协议提供服务,ICMP协议为IGMP协 议提供服务。 ARP协议:将IP地址通过广播,目标Mac地址是FF-FF-FF…解析目标IP地址的Mac 地址。(局域网中)通过arp -a可以查看Mac地址。…

详解网络层协议(ICMP,ARP)

目录 1、网络层功能: 2、IP数据包格式: 3、ICMP协议: 4、请求超时和目标主机不可达的区别: 5、ICMP协议的封装: 6、ping 命令的使用: 7、ARP协议: 8、ARP工作原理: 9、ARP欺骗&a…

网络层的协议介绍

文章目录 IP数据包格式ICMP协议(Internet控制报文协议)ARP协议概述ARP攻击原理本章总结 IP数据包格式 协议字段 IP数据包格式(分为20字节的固定部分,表示每个IP数据包必须包含的部分,和40字节的可变长部分&#xff…