【设计模式】UML类图

目录

前言

一、类图概述

二、类图的作用

三、类图表示法

四、类之间关系的表示方法

1. 关联关系

1.1 单向关联

1.2 双向关联

1.3 自关联

2. 聚合关系

3. 组合关系

4. 依赖关系

5. 继承关系

6. 实现关系

总结


前言

  统一建模语言( Unified Modeling Language UML )是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。学习UML类图有助于理解设计模式中画出来的各种类图。

一、类图概述

  类图 (Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。

二、类图的作用

  在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解;类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。

三、类图表示法

  在 UML 类图中,类使用包含类名、属性 (field) 和方法 (method) 且带有分割线的矩形来表示,比如
下图表示一个 Employee 类,它包含 name,age address 3 个属性,以及 work() 方法。

  属性 / 方法名称前加的加号和减号表示了这个属性 / 方法的可见性, UML类图中表示可见性的符号有三种:
  • +:表示public
  • -:表示private
  • #:表示protected
  属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]
  方法的完整表示方式是: 可见性 名称(参数列表) [ : 返回类型]
注意:
1 ,中括号中的内容表示是可选的
2 ,也有将类型放在变量名前面,返回值类型放在方法名前面

四、类之间关系的表示方法

1. 关联关系

  关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。我们先介绍一般关联。关联又可以分为单向关联,双向关联,自关联。

1.1 单向关联

  在 UML 类图中单向关联用一个带箭头的实线表示。上图表示每个顾客都有一个地址,这通过让
Customer 类持有一个类型为 Address 的成员变量类实现。

1.2 双向关联

  从上图中我们很容易看出,所谓的双向关联就是双方各自持有对方类型的成员变量。在 UML 类图中,双向关联用一个不带箭头的直线表示。上图中在 Customer类中维护一个List<Product> ,表示一个顾客可以购买多个商品;在 Product 类中维护一个 Customer类型的成员变量表示这个产品被哪个顾客所购买。

1.3 自关联

  自关联在 UML 类图中用一个带有箭头且指向自身的线表示。上图的意思就是 Node 类包含类型为 Node的成员变量,也就是 自己包含自己

2. 聚合关系

  聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系。聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。在 UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。下图所示是大学和教师的关系图:

3. 组合关系

  组合表示类之间的整体与部分的关系,但它是一种更 强烈的聚合关系 。在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。下图所示是头和嘴的关系图:

4. 依赖关系

  依赖关系是一种使用关系,它是对象之间 耦合度最弱 的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。在 UML类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。下图所示是司机和汽车的关系图,司机驾驶汽车:

5. 继承关系

  继承关系是对象之间 耦合度最大 的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系。在 UML类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实现时,使用面向对象的继承机制来实现泛化关系。例如, Student 类和 Teacher 类都是 Person 类的子类,其类图如下图所示:

6. 实现关系

  实现关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。在 UML类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如,汽车和船实现了交通工具,其类图如下图 所示。

总结

  本文介绍了UML(统一建模语言)中的类图及其重要性,包括类图的基本概念、作用以及表示方法。类图主要用于描述系统的静态结构,展示了系统中各个类及其相互之间的关系,对于软件的设计、理解和维护具有重要作用。此外,熟悉这些概念还有助于团队成员之间的沟通,确保软件设计的一致性和可维护性。

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

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

相关文章

ClickHouse 的第一篇 研究论文:如何让现代数据分析数据库实现超高速性能?

本文字数&#xff1a;3245&#xff1b;估计阅读时间&#xff1a;9 分钟 作者&#xff1a;ClickHouse Team 本文在公众号【ClickHouseInc】首发 我们非常激动地宣布&#xff0c;第一篇关于 ClickHouse 的研究论文【chrome-extension://mhnlakgilnojmhinhkckjpncpbhabphi/pages/p…

基于ACMEv2协议的免费SSL证书申请-支持Let‘s Encrypt/Google/ZeroSSL

项目&#xff1a;https://github.com/cook-code-jazor/acmex 非开源&#xff0c;使用webui管理证书的申请&#xff0c;所有文件本地化存储&#xff0c;支持windows/linux/osx。 证书申请直连ACMEv2服务商&#xff0c;没有任何中间接口&#xff0c;支持Lets Encrypt/Google/Ze…

Inf-MLLM:单个 4090D 实现 4M Token 长序列问答

一、背景 本文中我们简单介绍一个新的解决长序列推理效率的新方案 Inf-MLLM&#xff0c;也是基于 Token 稀疏化。有关 Token 稀疏化的方案通常可以从如下几个方面了解&#xff1a; 怎么识别关键 Token&#xff0c;包括静态识别或动态识别&#xff0c;比如 Streaming LLM 里 At…

从观《中国数据库前世今生》纪录片谈起:云数据库的未来发展与挑战

从观《中国数据库前世今生》纪录片谈起&#xff1a;云数据库的未来发展与挑战 前言 作为一名资深程序员&#xff0c;我在职业生涯中始终密切关注数据库技术的发展动态。近日&#xff0c;我观看了《中国数据库前世今生》这部纪录片&#xff0c;深受触动。这部纪录片不仅记录了…

Ubuntu 安装和使用 Fcitx 中文输入法;截图软件flameshot

一、Ubuntu 安装和使用 Fcitx 中文输入法 在 Ubuntu 上安装和使用 Fcitx 输入法框架是一个常见的选择&#xff0c;特别是对于需要中文输入的用户。以下是详细的步骤来安装和配置 Fcitx 输入法&#xff1a; 1. 安装 Fcitx 和相关输入法 首先&#xff0c;更新你的包列表并安装…

经济下行,这个AI美女短视频带货副业赛道,为什么不来试一试?

经济下行&#xff0c;普通人应该尽早认清一个事实&#xff0c;没有一技之长&#xff0c;没有核心竞争力&#xff0c;即便是打工皇帝&#xff0c;年入百万也只是浮云。 一定要保证主业的稳定&#xff0c;再探索新的机会&#xff0c;要多从”1-10"&#xff0c;而不是反复”…

昇思量子计算系列教程-Grover搜索算法

基于MindSpore Quantum的Grover搜索算法 概述 如果你听过量子计算&#xff0c;那么你一定听说过Grover搜索算法。1996年&#xff0c;Lov Grover [1] 提出了Grover搜索算法&#xff0c;它是一种利用量子状态的叠加性进行并行计算并实现加速的算法。Grover搜索算法被公认为是继…

《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》

前言 科技发展到如今2024年&#xff0c;可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起&#xff0c;从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展&#xff0c;无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验&am…

ESP32本地大模型对话机器人制作教程

整体架构 在本地电脑部署好Ollama服务&#xff0c;安装qwen大模型和llama3.1大模型。 ESP32接入局域网&#xff0c;用户通过串口给esp32发送问题&#xff0c;esp32打包json后向ollama服务发送请求&#xff0c;ollama返回响应&#xff0c;esp32解析结果并通过串口打印出来。 …

详解ChatBI Agent架构:打造高效数据统计系统

随着人工智能技术的迅猛发展&#xff0c;智能对话系统在各行各业中的应用越来越广泛。本文将介绍一种名为ChatBI Agent的架构设计&#xff0c;并以电信运营商系统的经分数据统计Agent为案例&#xff0c;结合具体的代码实现&#xff0c;帮助读者了解这一系统的设计理念和实现方式…

2024年开放式蓝牙耳机十大排名震撼揭晓!哪款开放式耳机是音质王者?

​耳机市场上&#xff0c;有线入耳式、无线蓝牙入耳式和开放式耳机三足鼎立&#xff0c;各展风采。有线入耳式耳机虽然连接稳定&#xff0c;但线缆易缠绕&#xff0c;佩戴不够稳固&#xff1b;无线入耳式耳机虽然剪断了线的束缚&#xff0c;但长时间使用可能会引起耳朵不适。相…

FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频

Android早期的MediaPlayer控件对于网络视频的兼容性很差&#xff0c;所以后来单独推出了Exoplayer库增强支持网络视频&#xff0c;在《Android Studio开发实战&#xff1a;从零基础到App上线(第3版)》一书第14章的“14.3.3 新型播放器ExoPlayer”就详细介绍了Exoplayer库的详细…

信息安全工程师(10)网络信息安全法律与政策文件

前言 网络信息安全法律与政策文件是保障网络安全、维护网络空间秩序、保护公民和组织合法权益的重要基石。 一、主要法律文件 《中华人民共和国网络安全法》 发布时间&#xff1a;2016年11月7日&#xff0c;由第十二届全国人民代表大会常务委员会第二十四次会议通过。主要内容&…

打工人必看!AI 编程助手让你轻松应对任务!

在当今科技飞速发展的时代&#xff0c;我们作为开发者面临着前所未有的挑战。技术栈频繁迭代&#xff0c;项目周期逐渐缩短&#xff0c;但对代码质量和的要求却不断提升这样的环境下&#xff0c;如何有效提升编程效率成为了一个永恒的议题。 最近&#xff0c;我找到了一位强大…

华为地图服务 - 如何在地图上绘制圆? -- HarmonyOS自学17

场景介绍 本章节将向您介绍如何在地图上绘制圆形。 接口说明 添加圆形功能主要由MapCircleOptions、addCircle和MapCircle提供&#xff0c;更多接口及使用方法请参见接口文档。 接口名 描述 MapCircleOptions 用于描述MapCircle属性。 addCircle(options: mapCommon.MapC…

Linux文件IO(三)-Linux系统如何管理文件

1.静态文件与 inode 文件在没有被打开的情况下一般都是存放在磁盘中的&#xff0c;譬如电脑硬盘、移动硬盘、U 盘等外部存储设备&#xff0c;文件存放在磁盘文件系统中&#xff0c;并且以一种固定的形式进行存放&#xff0c;我们把他们称为静态文件。 文件储存在硬盘上&#…

《DevOps实践指南》笔记-Part 1

前言 Infrastructure as Code&#xff1a;基础设施即代码&#xff0c;IaC。 Kanban&#xff1a;看板管理&#xff0c;丰田生产模式中的重要概念&#xff0c;指为了达到及时生产方式控制现场生产流程的工具。及时生产方式中的拉式生产系统可以使信息的流程缩短&#xff0c;并配…

unix中的进程标识以及使用场景

一、前言 本文将介绍unix系统中的进程标识以及使用场景。进程标识和用户标识类似&#xff0c;只不过其指代的对象是一个进程。我们常把进程标识称为进程ID&#xff0c;本文将讨论如下内容&#xff1a; 1.什么是进程标识&#xff1f; 2.特殊的进程标识 3.如果获取以及使用进程标…

神经网络推理加速入门——一个例子看懂流水

之前的两篇文章介绍了流水这一技术&#xff0c;它用来进行程序的性能加速&#xff0c;本篇通过一个生活中的小例子&#xff0c;让大家更直观的了解什么是流水。 举个例子 早晨从起床到上班出门&#xff0c;我们一般会做以下几件事&#xff1a;刷牙、烧水、喝水、出门。 如果…

全球爆发勒索病毒“永恒之蓝” 解决方案在此

英国、意大利、俄罗斯等全球多个国家爆发勒索病毒攻击&#xff0c;中国大批高校也出现感染情况&#xff0c;众多师生的电脑文件被病毒加密&#xff0c;只有支付赎金才能恢复。据360安全卫士紧急公告&#xff0c;不法分子使用NSA泄漏的黑客武器攻击Windows漏洞&#xff0c;把ONI…