设计模式中的UML基础

设计模式中的UML基础

目录

1、UML概述

2、UML的用途

3、UML的构成

4、UML图

5、UML类图

5.1、类的构成

5.2、类与类之间的关系

6、绘制UML图的软件工具

在讲解设计模式时,会使用到UML建模中的类图去讲解类与类之间的关系,所以这里需要给大家普及一下UML的相关知识。此外,我们在编写软件设计文档时需要绘制类图、时序图等;我们在学习源码时,可能也需要借助类图去查看分析。

1、UML概述

   UML的全称为United Modeling Language,是一种面向对象的可视化建模语言,通过图形符号描述现实系统的组成,通过建立图形之间图的关系来描述整个系统模型。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。在软件开发的流程中,一般先要对软件系统进行规划和建模,把要做的功能、实现的方法、系统内部的业务流程与运行交互机制、要做到什么程度等这些基本问题分析清楚,才去写代码实现。建模是对现实问题按照一定的规则进行抽象与简化,通过建模把现实世界中的问题转化到计算机领域中进行分析和实现,软件建模的过程就是需求-建模-设计的一个过程。

我们在日常工作中会使用UML工具去绘制表示类与类之间关系图的类图、绘制业务实体关系的用例图、绘制业务状态相关的状态图以及绘制与业务流程相关的业务交互时序图等。

2、UML的用途
UML主要用于对软件系统业务流程和内部交互机制进行描述、可视化表述,用来构造和建立软件系统的文档,以方便对系统的理解、设计、浏览、配置、维护和信息控制。通过UML,参与软件的各个生命周期的人员可以方便的沟通交流。

3、UML的构成
UML由模型元素(Model Element)、图(Diagram)、视图(View)和通用机制(General Mechanism)等几个部分组成。

模型元素:代表面向对象中的类、对象、消息和关系等概念,是构成图的最基本的常面向对象系统分析与设计方法用概念。
图:是模型元素集的图形表示,通常是由弧(关系)和顶点(其他模型元素)相互连接构成的。
视图:表达系统的某一方面的特征的UMI,建模元素的子集,由多个图构成,是在某一个抽象层上,对系统的抽象表示。
通用机制:用于表示其他信息,比如注释、模型元素的语义等。另外,UML还提供扩展机制,使UML语言能够适应一个特殊的方法(或过程),或扩充至一个组织或用户。
4、UML图
UML图是对软件系统中面向对象的类、对象、消息和关系等图形化表示,是认识和理解软件系统的关键组成部分。UML图包括用例图、协作图、活动图、时序图、部署图、构件图、类图、状态图。其中,类图和时序图在日常工作中使用的比较多,在介绍设计模式时主要使用类图,所以下面重点介绍一下UML中的类图。

5、UML类图

在这里插入图片描述

   一个典型的类图如上所示(IM截图模块的类图)。类图是面向对象系统建模中最常用的一种UML图,主要用来表示类与类之间的关系,包括泛化关系、关联关系、依赖关系和实现关系。通过查看类图,我们能快速地搞清楚各个类的关系。我们在阅读软件设计文档或者开源代码时,可能会看到相关的类图,我们要看懂类图,就必须要搞清楚表示类与类的关系连接线类型。

5.1、类的构成
类元素主要由类名、属性和方法三部分构成,如下所示:

  • 表示private
  • 表示public

表示protected

其中,属性表示为:

属性名:类型
方法表示为:
方法名(参数类型):返回值类型

5.2、类与类之间的关系
1)泛化关系(Generalization)

    泛化关系用来表示类与类之间的继承关系,也叫做is a kind of关系,用三角形的箭头从子类指向父类。类图表示如下:

在这里插入图片描述

2)实现关系(Realization)

   实现关系就是类或接口的实现,由三角箭头虚线从实现类指向接口类,(比如C++中纯虚函数的实现)。类图表示如下:

在这里插入图片描述

3)依赖关系(Dependency)

   依赖关系是指在一个类中要用到另一个类的实例的一种关系,主要表现为一个类是另一个类的函数参数,或者一个类是另一个类的函数返回值的情况。在类图中的表现形式为一个虚线箭头从一个类指向被依赖的类。类图表示如下:

在这里插入图片描述

4)关联关系(Association)

   关联关系是类和类之间对应的一种连结,是指两个独立的对象,一个对象的实例与另一个对象的一些特定实例存在固定的对应关系。关联关系可以是单向的也可以是双向的,通过关联使得一个类可以使用另一个类的属性和方法,在C++中具体的表现形式为,一个类的对象是另一个类的成员属性。在类图中,单向的是带箭头的实线,双向的是不带箭头的实线:

在这里插入图片描述

5)聚合关系(Aggregation)

    聚合关系表示整体和部分的关系,它是一种has-a的包含关系,而且整体和部分是可以分离的,即离开整体,
部分也能存在。聚合关系是关联关系的一种,它是一种更强的关联关系。聚合关系在C++中的表现也是成员
变量的方式,但是和   关联关系不同的是,关联关系中的两个类是相互独立的,而聚合关系中的两个类是整体
与部分的关系,一个类是另一个类的一部分。在类图中,空心菱形在代表整体的类那侧,另一侧为代表部分的类。聚合关系的简单理解,比如手机和充电线,充电线是手机的一部分,手机就是整体,充电线是部分,但是没有手机了,
充电线也可以单独存在,如下:

在这里插入图片描述

6)组合关系(Composite)

   组合关系也是关联关系的一种,是一种比聚合关系更强的关联关系。如果两个类是聚合关系(A是B的一部分),那么离开B之后,A就失去了存在的意义。组合关系是一种不可分离的关系。在类图中用实心菱形指在代表整体的类,另一侧为代表部分的类。

在这里插入图片描述

7)小结

    对上述6种类关系的总结:

泛化关系和实现关系的区别:泛化关系是指C++中的继承关系;而实现关系是指虚基类的继承,在子类中实现虚基类的纯虚函数。
泛化关系和实现关系可以看成依赖关系的一种,因为它们离开依赖的类都无法编译通过。
聚合关系和组合关系是关联强度逐渐增强的关联关系;关联关系双方是平等的,聚合关系和组合关系的双方是整体和部分的关系。
聚合关系的双方整体和部分可以分离单独存在,没有生命周期的强相关;组合关系双方,部分离开整体将失去意义,整体的生命周期代表了部分的生命周期。
6、绘制UML图的软件工具
绘制UML图的软件工具比较多,有专业的EA(Enterprise Archtecture)绘制工具,有微软的Visio工具,有韩国的StarUML,还有一些比较新的绘图工具也支持UML绘图,比如亿图软件的图示工具、在线绘图工具drawio等。其中,EA是老牌专业的UML图绘制工具,我比较喜欢用EA。大家可以根据自己的需要和喜好去选择想要的UML工具。

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

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

相关文章

【SpringSecurity】十三、基于Session实现授权认证

文章目录 1、基于session的认证2、Demosession实现认证session实现授权 1、基于session的认证 流程: 用户认证成功后,服务端生成用户数据保存在session中服务端返回给客户端session id (sid),被客户端存到自己的cookie中客户端下…

Android Studio实现内容丰富的安卓校园二手交易平台(带聊天功能)

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号083 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看二手商品列表 3.发布二手商品 4.商品详情 5.聊天功能…

在微信小程序中或UniApp中自定义tabbar实现毛玻璃高斯模糊效果

backdrop-filter: blur(10px); 这一行代码表示将背景进行模糊处理,模糊程度为10像素。这会导致背景内容在这个元素后面呈现模糊效果。 background-color: rgb(255 255 255 / .32); 这一行代码表示设置元素的背景颜色为白色(RGB值为0, 0, 0)&a…

第四百一十二回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容,本章回中将介绍自定义标题栏.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

wireshark windows 抓包https

windows下 1.配置环境变量以生成ssl协商会话密钥日志记录 系统设置-》高级设置-》环境变量 新增环境变量 SSLKEYLOGFILE C:\Users\Public\Documents\SSLKEY\sslkey.log 打开公用共享文档创建SSLKEY文件夹用于后续系统存放协商密钥日志 2.配置Wireshark选项进行抓包 点击…

(一)Linux+Windows下安装ffmpeg

一丶前言 FFmpeg是一个开源的音视频处理工具集,由多个命令行工具组成。它可以在跨平台的环境中处理、转换、编辑和流媒体处理音视频文件。 FFmpeg支持多种常见的音视频格式和编解码器,可以对音视频文件进行编码、解码、转码、剪辑、合并等操作。它具有广…

最近火绒的explorer问题,电脑黑屏只有鼠标

由于安全限制,覆盖文件是行不通的,按照火绒官方给的方法试试,还是不行。主要是他最后一步写得有问题。恭喜火绒,成功的将我们所有客户的电脑安装的火绒卸载。 解决方案 1、CTRLSHIFTESC调出任务管理器; 2、左上角&am…

.net使用excel的cells对象没有value方法——学习.net的Excel工作表问题

$exception {"Public member Value on type Range not found."} System.MissingMemberException 代码准备运行问题解决1. 下载别的版本的.net框架2. 安装3. 运行 代码 Imports Excel Microsoft.office.Interop.Excel Public Class Form1Private Sub Button1_Click(…

万用表革新升级,WT588F02BP-14S语音芯片助力智能测量新体验v

万能表功能: 万能表是一款集多功能于一体的电子测量工具,能够精准测量电压、电流、电阻等参数,广泛应用于电气、电子、通信等领域。其操作简便、测量准确,是工程师们进行电路调试、故障排查的得力助手,为提升工作效率…

奥特曼剧透GPT-5,将在高级推理功能上实现重大进步

奥特曼:“GPT-5的能力提升幅度将超乎人们的想象...” 自 Claude 3 发布以来,外界对 GPT-5 的期待越来越强。毕竟Claude 3已经全面超越了 GPT-4,成为迄今为止最强大模型。 而且距离 GPT-4 发布已经过去了整整一年时间,2023年3月1…

Android 源码中 内置系统App(整个APP源码方式集成)

1. 如何新建一个系统 App 项目 使用 Android Studio 新建一个空项目 FirstSystemApp,包名设置为 com.yuandaima.firstsystemapp,语言选择 Java。后面为叙述方便称该项目为 as 项目。 接着在 jelly/rice14 目录下创建如下的目录和文件: 接着…

金江能源:助力新能源行业发展上市之路逐步迈进

在当今全球节能减排的大背景下,新能源产业成为了社会发展的热门领域。楚雄州金江能源集团有限公司作为新能源产业中的佼佼者,凭借其雄厚的技术实力和前瞻性的发展战略,已经展开了公司上市的蓄势之路。5月15日,金江能源将在港交所上市,为公司的发展注入更多资金和资源。 作为一…

vue axios 缓存 接口请求实现缓存加载

文章写的多了,开头就不知道怎么写了,硬挤一些句子总觉的卖弄。其实更多的想留下各位看官,多多的点赞,多多的关注,多的收藏。为将来的博客化动作做好前期数据粉丝基础。哦哦哦,我在想啥呢。。这大下午的。。…

xAI开发的一款巨大型语言模型(HLM)--Grok 1

在xAI发布Grok的权重和架构之后,很明显大型语言模型(LLM)的时代已经过去,现在是巨大型语言模型(HLM)的时代。这个混合专家模型发布了3140亿个参数,并且在Apache 2.0许可下发布。这个模型没有针对…

【项目管理后台】Vue3+Ts+Sass实战框架搭建一

项目管理后台 建立项目最好是卸载Vetur 新建.env.d.ts文件安装Eslint安装校验忽略文件添加运行脚本 安装prettier新建.prettierrc.json添加规则新建.prettierignore忽略文件 安装配置stylelint新建.stylelintrc.cjs 添加后的运行脚本配置husky配置commitlint配置husky 强制使用…

从服务器到云原生:企业IT基础设施的演进之路

随着数字经济的迅猛发展,企业IT数字化转型已成为推动业务创新和提升竞争力的关键。在这一转型过程中,基础设施的建设与升级显得尤为重要。企业需要不断优化和更新他们的基础设施,以适应不断变化的市场需求和技术发展。本文将探讨企业IT数字化…

信息系统项目管理师020:信息安全(2信息技术发展—2.1信息技术及其发展—2.1.4信息安全)

文章目录 2.1.4 信息安全1.信息安全基础2.加密解密3.安全行为分析技术4.网络安全态势感知 2.1.4 信息安全 常见的信息安全问题主要表现为:计算机病毒泛滥、恶意软件的入侵、黑客攻击、利用计算机犯罪、网络有害信息泛滥、个人隐私泄露等。随着物联网、云计算、人工智…

【JVM】如何判断堆上的对象没有被引用?

如何判断堆上的对象没有被引用? 常见的有两种判断方法:引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。 引用计数法的缺点-循环引用 引用计数法的优点是实现简单&…

大数据面试题 —— HBase

目录 什么是HBase简述HBase 的数据模型HBase 的读写流程HBase 在写的过程中的region的split的时机HBase 和 HDFS 各自的使用场景HBase 的存储结构HBase 中的热现象(数据倾斜)是怎么产生的,以及解决办法有哪些HBase rowkey的设计原则HBase 的列…

RAFT: Adapting Language Model to Domain Specific RAG

RAFT: Adapting Language Model to Domain Specific RAG 相关链接:arXiv GitHub 关键字:Retrieval-Augmented Fine Tuning (RAFT)、Large Language Models (LLMs)、Domain Specific RAG、Distractor Documents、Chain-of-Thought 摘要 预训练大型语言模…