【设计模式】第1节:UML类图

news2024/9/21 11:09:55

本系列文章主要参考自B站用户以诺爱编程的《设计模式》系列视频,以及王争的《设计模式之美》系列文章。

本文参考自30分钟学会UML类图。

UML图有很多种,一般只要掌握类图、用例图、时序图就可以完成大部分工作。本文算是学习设计模式的一道前菜,只介绍类图相关的知识。

一、类图中的基本元素

类图中的基本元素有具体类、抽象类、接口和包等。

1. 具体类

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

  • “+”表示 public
  • “-”表示 private
  • “#”表示 protected
  • 不带符号表示 default

方法名的冒号后为返回值类型。

请添加图片描述

2. 抽象类

抽象类和具体类的表示方式类似,不同点在于抽象类的类名和方法名为斜体。请添加图片描述

3. 接口

接口也用矩形框来表示,分为两层,第一层顶端用<<interface>>标识为接口,第一层底端为接口名,第二层为接口的方法。

请添加图片描述

4. 包

包用以下图形表示:

请添加图片描述

二、类图中的关系

类图中的关系有实现关系、泛化关系、关联关系、依赖关系、聚合关系、组合关系这六种。

1. 实现关系

实现关系是指接口及其实现类之间的关系。在UML类图中,实现关系用空心三角和虚线组成的箭头来表示,从实现类指向接口。

请添加图片描述

2. 泛化关系

泛化关系是指对象与对象之间的继承关系,子对象“is a”父对象。泛化关系用空心三角和实线组成的箭头表示,从子类指向父类。

请添加图片描述

3. 关联关系

关联关系是指对象和对象之间的连接,它使一个对象知道另一个对象的属性和方法。关联关系的代码表现形式为一个对象含有另一个对象的引用。关联关系可以是单向关联,也可以是双向关联。双向关联关系用带双箭头的实线或者无箭头的实线双线表示。单向关联用一个带箭头的实线表示,箭头指向被关联的对象。

请添加图片描述

4. 依赖关系

依赖系是一种弱关联关系。如果对象A用到对象B,但是和B的关系不是太明显的时候,就可以把这种关系看作是依赖关系。即对象A “use” 对象B。依赖关系用一个带虚线的箭头表示,由使用方指向被使用方。具体代码表现形式为B为A的构造器方法中的局部变量方法或构造器的参数方法的返回值,或者A调用B的静态方法

请添加图片描述

5. 聚合关系

聚合是关联关系的一种特例,它体现的是整体与部分的拥有关系,即 “has a” 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享,所以聚合关系也常称为共享关系。聚合关系用空心菱形加实线箭头表示,空心菱形在整体一方,箭头指向部分一方。

请添加图片描述

6. 组合关系

组合也是关联关系的一种特例,它同样体现整体与部分间的包含关系,即 “contains a” 的关系。但此时整体与部分是不可分的,部分也不能给其它整体共享,作为整体的对象负责部分的对象的生命周期。这种关系比聚合更强,也称为强聚合。
请添加图片描述

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

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

相关文章

数字人解决方案——解决ER-NeRF/RAD-NeRF人像分割的问题

一、训练数据人像分割 训练ER-NeRF或者RAD-NeRF时&#xff0c;在数据处理时&#xff0c;其中有一步是要把人像分割出来&#xff0c;而且人像要分成三块&#xff0c;人的头部&#xff0c;人的有脖子&#xff0c;人的身体部分&#xff0c;效果如下&#xff1a; 从上面的分割的结…

【设计模式】第2节:七大设计原则

一、七大设计原则 七大原则提出的目的是降低对象之间的耦合度&#xff0c;提高程序的可复用性、可扩展性和可维护性。 1.单一职责原则 Single Responsibility Principle&#xff0c;SRP原则&#xff1a;一个类只负责一个功能领域中的相应职责。或者可以定义为&#xff1a;就一…

安防视频监控平台EasyNVR平台如何在角色表格中添加信息

TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中&#xff0c;EasyNVR可提供视频实时监控直播、云端…

Linux | 进程

目录 前言 一、什么是进程 1、Window下的进程 2、深刻理解进程 3、见一见Linux下的进程 二、进程的创建 1、初始fork 2、fork的返回值 3、深刻理解fork函数 4、遗留问题 三、进程状态 1、操作系统中的进程状态 2、Linux中的进程状态 3、状态演示 &#xff08…

MySQL 概述 数据库表操作 数据增删改

目录 MySQL概述前言安装与配置MySQL登录与卸载 数据模型概述SQL简介SQL通用语法简介SQL分类 数据库设计(数据库操作)-DDL数据库操作查询数据库创建数据库使用数据库删除数据库 图形化工具连接数据库操作数据库 表操作创建表创建表语法创建表约束语法创建表数据类型 查询表修改表…

【Python3】【力扣题】169. 多数元素

【力扣题】题目描述&#xff1a; 众数&#xff1a;一组数据中出现次数最多的数据。 【Python3】代码&#xff1a; 1、解题思路&#xff1a;哈希表。使用哈希映射存储各元素以及出现的次数&#xff0c;哈希映射中的键值对中的键为元素、值为该元素出现次数。 知识点&#xff1…

腾讯云2023年双11优惠活动和9999元代金券领取规则

2023腾讯云双11优惠价格表终于来了&#xff0c;轻量2核2G3M云服务器88元一年、轻量2核4G5M服务器166.6元一年、3年轻量2核2G4M带宽优惠价366.6元、3年轻量2核4G5M配置566.6元&#xff0c;CVM云服务器2核2G配置SA2实例172.3元一年、标准型S5服务器2核2G配置280.8元一年&#xff…

单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法

本文综合整理单目3D目标检测的方法模型&#xff0c;包括&#xff1a;基于几何约束的直接回归方法&#xff0c;基于深度信息的方法&#xff0c;基于点云信息的方法。万字长文&#xff0c;慢慢阅读~ 直接回归方法 涉及到模型包括&#xff1a;MonoCon、MonoDLE、MonoFlex、CUPNet…

大模型在百度智能问答、搜索中的应用

本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队&#xff0c;共同探索智能问答技术的发展方向&#xff0c;文末有简历投递方式。 01 什么是机器问答 机器问答&#xff0c;就是让计算机…

如何利用数字化转型升级,重塑企业核心竞争力?

工程机械行业是一个周期性明显的行业&#xff0c;企业经营受到宏观经济与国家基础设施建设的影响较大&#xff0c;例如企业经济上行时&#xff0c;加大投资扩大生产规模&#xff0c;以满足市场需求的增长&#xff0c;当经济下行时&#xff0c;企业可能面临减产和裁员等问题&…

【Ansible自动化运维工具 第一部分】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一&#xff1a;Agentless&#xff0c;即无Agent的存在1.3.2 特性二&#xff1a;幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…

Java练习题-输出二维数组对角线元素和

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;Java练习题 &#x1f4ac;个人格言&#xff1a;不断的翻越一座又…

DAY34 860.柠檬水找零 + 406.根据身高重建队列

860.柠檬水找零 题目要求&#xff1a;在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xff0c;然后向你付 5 美元、10 美元或 20 美元…

优化预算管理流程:Web端实现预算编制的利器

本文由葡萄城技术团队原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言&#xff1a;什么是预算和预算编制 预算 预算是企业在预测、决策的基础上&#xff0c;以数量和金额的形式…

(免费领源码)php#Thinkphp#MYSQL校园二手交易app 99211-计算机毕业设计项目选题推荐

目 录 摘要 Abstract 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2 校园二手物品交易app系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析…

用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案

环境: Win11 专业版 HP 笔记本 傲梅分区软件 闪迪16G U盘 Win10 官方镜像文件 Win11PE 系统安装U盘 USB固态硬盘盒 问题描述: 起因 开始使用windows自动磁盘管理工具压缩不了磁盘,提示无法将卷压缩到超出任何不可移动的文件所在点,关闭系统保护还原,删除系统创建…

J41H-40C法兰截止阀型号解析

J41H-40C型号字母含义解析 J41H-40C型号是德特森阀门常用的截止阀型号字母代表的意思是: J——代表阀门类型《截止阀》 4——代表连接方式《法兰》 1——代表结构形式《直流》 H——代表阀座堆焊《不锈钢》 -《分隔键》 40——代表公称压力《4.0MPA》 C——代表阀体材料…

win操作系统下安装Deepspeed

1. 准备cunda环境 下载cuda、cudnn&#xff0c; CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive Log in | NVIDIA Developerhttps://developer.nvidia.com/rdp/cudnn-download 选择版本可以参考里的Index of /anaconda/cloud/p…

通过阿里云创建accessKeyId和accessKeySecret

我们想实现服务端向个人发送短信验证码 需要通过accessKeyId和accessKeySecret 这里可以白嫖阿里云的 这里 我们先访问阿里云官网 阿里云地址 进入后搜索并进入短信服务 如果没登录 就 登录一下先 然后在搜索框搜索短信服务 点击进入 因为我也是第一次操作 我们一起点免费开…

禁止U盘拷贝-保护数据安全

禁止U盘拷贝-保护数据安全 下载使用安企神U盘管理系统 U盘是一种可移动存储设备&#xff0c;可以方便地实现数据的传输和共享。然而&#xff0c;U盘的通用性和便携性也给它带来了安全隐患。如果U盘落入恶意用户手中&#xff0c;可能会导致敏感数据的泄露&#xff0c;给企业和…