UML概述及UML类图详解

news2024/11/25 22:32:04

一 UML介绍

UML这三个字母的全称是Unified Modeling Language,翻译就是统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果

UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等

二 UML分类

结构型UML

  • 用例图
  • 类图(常用):用来分析业务概念
  • 对象图(基本不用)
  • 构件图
  • 部署图
  • 包图(基本不用)

行为型UML

  • 活动图
  • 状态机图
  • 顺序图
  • 通信图(基本不用)
  • 用例图(常用)
  • 时序图

类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图中最基本的元素是类、接口。软件设计师设计出类图后,程序员就可以用代码实现类图中包含的内容

三 UML类图学习

我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对日常的工作和交流;同时,我们应该能将类图所表达的含义和最终的代码对应起来;

3.1 在UML类图中表示一个具体类

具体类在类图中用矩形框表示,矩形框分为三层:第一层是类名字。第二层是类的成员变量;第三层是类的方法。成员变量以及方法前的访问修饰符用符号来表示:

1.+ 表示 public;
2. - 表示 private;
3. # 表示 protected;
4. 不带符号表示 default
在这里插入图片描述

3.2 在UML类图中表示抽象类

抽象类在UML类图中同样用矩形框表示,但是抽象类的类名以及抽象方法的名字都用斜体字表示
在这里插入图片描述

3.3 在UML类图中表示接口

接口在类图中也是用矩形框表示,但是与类的表示法不同的是,接口在类图中的第一层顶端用构造型 <>表示,下面是接口的名字,第二层是方法,如图3所示。此外,接口还有另一种表示法,俗称棒棒糖表示法,就是类上面的一根棒棒糖(圆圈+实线)。圆圈旁为接口名称,接口方法在实现类中出现

在这里插入图片描述

3.4 在UML类图中表示包

在这里插入图片描述

四 类图中关系(relation)

在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

4.1 泛化(Generalization)

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
【箭头指向】:带三角箭头的实线,箭头指向父类

在这里插入图片描述

4.2 实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口。

在这里插入图片描述

4.3.关联(Association)

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,
丈夫与妻子关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者

在这里插入图片描述
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。

但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:
在这里插入图片描述

4.4 聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。
如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体

在这里插入图片描述

4.5 组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,
它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体

在这里插入图片描述

4.6 依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,
所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者

在这里插入图片描述
各种关系的强弱顺序:

泛化(类与继承关系) = 实现(类与接口关系) > 组合(整体与部分的关系) > 聚合(整体与部分的关系) > 关联(拥有的关系) > 依赖(使用的关系)

下面这张UML图,比较形象地展示了各种类图关系:
在这里插入图片描述

五 常见的UML图

5.1 什么是用例图?

【概念】用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。
【目的】用来描述整个系统的功能。
在这里插入图片描述
用例图中包含以下三种关系:

包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。
扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能
泛化关系,子用例继承父用例所有结构、行为和关系。

5.2 什么是对象图?

【概念】对象图是类图的一个实例,是系统在某个时间点的详细状态的快照。
【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。

在这里插入图片描述

图中就是描述的,某时间点bat这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng。

5.3 什么是组件图?

【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。
【目的】用来展示各个组件之间的依赖关系

在这里插入图片描述

订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

5.4 什么是部署图?

【概念】描述了系统内部的软件如何分布在不同的节点上。
【目的】用来表示软件和硬件的映射关系。
在这里插入图片描述
图中简单的表示,不同机器上面部署的不同软件。

5.5 什么是状态图?

【概念】状态机图对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。
【目的】用来表示指定对象,在整个生命周期,响应不同事件的不同状态。
在这里插入图片描述

5.5 什么是通讯图?(协作图)

【概念】描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。
【目的】用来显示不同对象的关系。
在这里插入图片描述
图中展示了一个线上书店的通讯图,方框和小人表示生命线,不同生命线之间可以传递消息,消息前面的数字可以表达序列顺序。

5.6 什么是时序图?

  • 捕捉一段时间范围内多个对象之间的交互信息
  • 强调消息交互的时间顺序

在这里插入图片描述

5.7 什么是活动图?

【概念】描述了具体业务用例的实现流程。
【目的】用来表示用例实现的工作流程。
在这里插入图片描述
图中简单描述了,从开始到登录到查看订单列表,或者登录失败直接结束。

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

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

相关文章

Linux——md5命令

文章目录介绍选项使用案例生成文件md5值文本模式或二进制模式md5值重定向重定向追加md5校验实际开发场景介绍 md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容&#xff0c;与文件名无关&#xff0c;也就是文件内容相同&#xff0c;其md5值相…

CTGU操作系统

CTGU操作系统第一章第二章 Operating-System structures操作系统结构第三章自己看&#xff0c;懒得写了&#xff0c;我也不知道为啥划重点他要把所有PPT过一遍&#xff0c;离谱第一章 第二章 Operating-System structures操作系统结构 第三章自己看&#xff0c;懒得写了&#x…

【能效管理】电力监控系统在某商业数据中心的应用分析

摘要&#xff1a;在电力系统的运行过程中&#xff0c;变电站作为整个电力系统的核心&#xff0c;在保证电力系统可靠的运行方面起着至关重要的作用&#xff0c;基于此需对变电站监控系统的特点进行分析&#xff0c;结合变电站监控系统的功能需求&#xff0c;对变电站电力监控系…

Yoshua Bengio:我的一生

文 | 智商掉了一地2018 年图灵奖获得者、AI 先驱、深度学习三巨头之一、对抗生成网络 GAN、标志性的银灰卷发和浓眉&#xff0c;如果还没猜到的话&#xff0c;当你看到这个封面&#xff0c;一定就会意识到自己在学习的路上&#xff0c;已经或间接或直接地拜读过大佬的著作了。看…

云原生主题学习月|成为社区领学员,解锁专属奖励及超多数量社区学员奖品!

CSDN 已上线亚马逊云科技超过 60 门中文数字化培训课程&#xff0c;希望为学习者提供亚马逊云科技基础技能知识和最佳实践。 每门课程时长从十分钟到几小时不等&#xff0c;由亚马逊云科技专家打造&#xff0c;其中包括最受欢迎的《亚马逊云科技云从业者必修知识》&#xff0c…

为什么 FindFirstFile 会查找短文件名?

FindFirstFile 函数会尝试匹配短文件名和长文件名。这可能会产生一些令人惊讶的结果。例如&#xff0c;如果你查找 “*.htm” &#xff0c;那么它会返回给你文件 “x.html” &#xff0c;因为它的短文件名是 “X~1.HTM”。 这确实比较令人感到意外。 为什么 FindFirstFile 会匹…

行业重磅!神策可视化全埋点正式支持 Flutter 平台!

Flutter 框架推出至今&#xff0c;已经在超过 50 万个应用中使用&#xff0c;从 2019 年到现在一直保持着强劲的增长趋势。优秀的性能、跨平台能力和活跃的技术社区使得其愈发受到广大开发者的青睐。而随着 Flutter 的普及和广泛应用&#xff0c;越来越多的企业和开发者对自动高…

答题小程序源码题目选项随机打乱功能分析

答题小程序随机打乱功能分析 通过多年的开发经验及实际使用用户的反馈&#xff0c;答题小程序源码完善了题库选项随机打乱功能&#xff0c;该功能的出现有效避免了用户在答题时不经审题、思索而凭机记忆机械化做出选择的弊端。 那么题库选项随机打乱功能具体是什么样的的呢&…

计算机组成原理期末复习第四章-1(唐朔飞)

计算机组成原理期末复习第四章-1&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&am…

Linux零基础快速入门篇

推荐教程&#xff1a;Linux零基础快速入门到精通 操作系统概述 操作系统是计算机软件的一种&#xff0c;它主要负责&#xff1a;作为用户和计算机硬件之间的桥梁&#xff0c;调度和管理计算机硬件进行工作而计算机&#xff0c;如果没有操作系统&#xff0c;就是一堆无法使用的…

嵌入式系统的开发概述

文章目录嵌入式系统开发基本流程嵌入式软件开发嵌入式软件开发的特点和技术挑战嵌入式软件开发环境交叉开发环境软件模拟环境目标板与评估板嵌入式软件开发的可移植性和可重用性嵌入式系统开发基本流程 面向具体应用的嵌入式开发决定了嵌入式开发的方法、流程各有不同&#xf…

C++语法——map与set的封装原理

目录 一.数据类型封装 &#xff08;一&#xff09;.封装方式 &#xff08;二&#xff09;.封装后如何取key比较 二.迭代器封装 &#xff08;一&#xff09;.底层迭代器&#xff08;红黑树中&#xff09; ①迭代器 ②迭代器-- &#xff08;二&#xff09;.begin&end…

【Pandas数据处理100例】(七十三):Pandas使用groupBy()计算每个组的均值

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…

【Python数据科学 | 11】应用实战:我的第一个开源项目-基金定投回测工具

这是机器未来的第60篇文章 原文首发地址&#xff1a;https://robotsfutures.blog.csdn.net/article/details/127712752 《Python数据科学快速入门系列》快速导航&#xff1a; 【Python数据科学快速入门系列 | 01】Numpy初窥——基础概念【Python数据科学快速入门系列 | 02】创…

kotlin入门学习文档

kotlin入门学习文档 前言&#xff1a;本文会着重对比java和kotlin&#xff0c;方便Java选手理解 提前总结&#xff1a;kotlin在服务端应用本质上是基于Java进行的改进&#xff0c;底层都是由JVM翻译成底层语言&#xff0c;我们只需要关注kotlin本身的代码&#xff0c;无需担心…

[附源码]Python计算机毕业设计Django的手机电商网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

lte基站学习总结

目录 1.nanocell基站的介 2.lte的网络结构 2.1 网络实体 2.2 功能划分 2.3功能描述 2.4业务类型 2.5语音回落原理 3 S1接口上用户注册消息的简介 3.1 S1接口的位置 3.2 S1接口的协议栈关系 3.3 S1接口建立实例 4 3g用户附着流程 5. Lte用户开机附着过程 1.nanocell基站…

[附源码]计算机毕业设计springboot农村人居环境治理监管系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

你安全吗?丨黑客掌握的翻垃圾技术有哪些?大家要警惕!

作者&#xff1a;黑蛋 黑客并不全是大家所想象中&#xff0c;一个黑面罩&#xff0c;一台电脑&#xff0c;绿花花的代码界面&#xff0c;噼里啪啦对着计算机一顿猛敲&#xff0c; image-20221114221628695 除了专业的计算机技术&#xff0c;黑客还有其他非技术手段。今天我们…

拆解小鹏汽车财报:连续三个季度收入下滑,门店月均销量仅为8辆

11月30日&#xff0c;小鹏汽车&#xff08;NYSE:XPEV、HK:09868&#xff09;公布了截至2022年9月30日的2022年第三季度财报。财报显示&#xff0c;小鹏汽车2022年第三季营收68.2亿元&#xff0c;略低于市场预期的68.8亿元&#xff0c;较2021年同期增长19.3%&#xff0c;环比下降…