【设计模式】0、uml 类图:关联、聚合、组合、依赖、继承、实现

文章目录

  • 一、类的属性和方法
  • 二、类间的关系
    • 2.1 关联关系
      • 2.1.1 单向关联
      • 2.1.2 双向关联
      • 2.1.3 自关联
    • 2.2 聚合关系
    • 2.3 组合关系
    • 2.4 依赖关系
    • 2.5 继承关系
    • 2.6 接口实现关系

一、类的属性和方法

类包含类名、属性(field)、方法(methods),用矩形表示,如下图是 Employee 类,有 name、age、email 三种属性,和 modifyInfo() 方法。

属性的完整格式是:可见性 名称:类型 [=缺省值]
方法的完整格式是:可见性 名称(参数列表)[: 返回类型]

可见性有三种符号:+ 表示 public,# 是 protected,- 是 private。

二、类间的关系

2.1 关联关系

2.1.1 单向关联

用带箭头的直线表示,表示拥有。

如下图:每个 Customer(顾客)都 has(拥有)一个 Address(地址)。这通过让 Customer 类持有一个 Address 类型的成员变量 来实现。

2.1.2 双向关联

双向关联,用不带箭头的直线表示,表示双方各自持有对方类型的成员变量。

如下图:每个 Customer(顾客)都有一堆 Products[](商品),每个 Product(商品)都记录了被售卖给了哪个 Customer(顾客)。

2.1.3 自关联

用一个带箭头的直线指向自身,即自关联,即自己包含自己。

如下图:Node 类包含 类型为 Node 的成员变量

2.2 聚合关系

聚合关系,是一种特殊的关联关系,其表示整体和部分间的关系。

其强调“整体”包含“部分”,但“部分”可以脱离“整体”而独立存在。

用带空心菱形和箭头的直线表示,菱形在整体类一侧。

如下图:Car(汽车)contains(包含了)Engine(发动机),而 Engine 脱离了 Car 也能独立存在。

2.3 组合关系

聚合关系,是一种特殊的关联关系,其表示整体和部分间的关系。

组合关系和聚合关系的区别是:“部分”脱离了“整体”就不复存在。

如下图,Mouth(嘴)是 Head(头)的一部分,且不能脱离了头儿单独存在。

用带实心菱形的直线表示,菱形在整体类一侧。

2.4 依赖关系

用带箭头的虚线表示。

如下图,Driver 的 drive 方法,只有传入了一个 Car 对象才能发挥作用,因此 Driver 类依赖于 Car 类。

2.5 继承关系

基类和派生类之间,用带空心三角形的直线表示。

2.6 接口实现关系

多个类可以共同实现同一个接口。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

3, ip::tcp::resolver 如果新浪的IP地址变了,该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn,因为它负责将人类可读的多种网址信息,一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构&…

项目第一次git commit后如何撤销

问题描述: # 1. 新建gitcode目录,然后在目录下 git init# 2. 用idea打开目录后,新建.gitignore文件后 git add .git commit -m "init project"git log# 3. 就出现如下图情况目的:向撤销该次代码提交 # 仅撤销 git com…

Jenkins 2.426.3新版设置中文

1. 插件页面显示无法联网 ,点击Plugins一直提示连接超时,设置公司代理后 2. 稍等一会儿点击如下图,插件就出来了,然后输入Locale进行下载 3. 以下是我下载安装好的 4.打开设置,找到Locale选项,设置成zh_CN…

【总结】HTML+JS逆向混淆混合

国外的题果然考的与众不同 [secrypt_cen.html] 这次是HTML网页,然后JS加密判断 翻看JS代码 很显然,关键的代码在checkPassword JS混淆是必备的 去混淆一条龙走起 先将关键代码提取出来 JavaScriptfunction _0x4857(_0x398c7a, _0x2b4590) { const _0…

走进水墨世界,寻找传统之美

为深入了解中国传统水墨文化的底蕴及其在当代的价值,2024年2月16日,曲阜师范大学计算机学院“古韵新声,格物致‘知’”实践队的队员王涵智走进山东省高唐县巩德春艺术馆展开社会实践。实践队员以探访艺术馆为契机,领略传统水墨文化…

14. Longest Common Prefix(最长公共前缀)

问题描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 问题分析 方法一:我们可以假设一个字符串是最长的公共子串,然后去验证,如果此串被验证了,再增加一位字符进行验…

vue-自定义创建项目(六)

为什么要自定义创建项目? 因为VueCli默认创建的项目不能够满足我们的要求,比如默认的项目中没有帮我们集成路由,vuex,eslink等功能。 默认项目 自定义创建项目 流程: 创建项目命令:vue create custom_dem…

免费听歌软件,音乐搜索APP:掌中的音乐宝库,为您的音乐生活增添色彩

引言 在数字音乐的浪潮中,我们通常会想到QQ音乐、虾米、网易云音乐等主流平台APP。然而,这些商业软件在为用户提供服务的同时,也不可避免地伴随着一些限制和不尽如人意的地方,如曲库有限、音质不尽如人意或广告干扰或会员才能听歌…

2024年腾讯云4核8G12M轻量应用服务器测评,2月更新

4核8G服务器支持多少人同时在线访问?阿腾云的4核8G服务器可以支持20个访客同时访问,关于4核8G服务器承载量并发数qps计算测评,云服务器上运行程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素&…

美国突然致敬中本聪

作者:秦晋 有点看不懂美国的神操作。 2月16日,据《Bitcoin Magazine》报道,比特币的竞争对手、美国参议员伊丽莎白-沃伦对比特币的立场突然180度大转弯。由反对立场转为支持立场。让很多行业媒体出乎意料,甚至惊掉下巴。 报道称&a…

linux基础命令和示例

redis在go语言中的使用 以下说明以读者有redis基础的前提下进行 未学习redis的可以到b站1小时浅学redis了解大概,学会如何使用 【GeekHour】一小时Redis教程_哔哩哔哩_bilibili 以下开发环境以windows为测试环境,旨在练习redis在go语言中的使用 red…

深度学习系列58:大模型训练和压缩

1. 大模型训练 1.1数据并行 1.2 模型并行 1.3 ZeRO 1.4 流水线并行 1.5 混合精度训练 1.6 offloading 把梯度放在cpu上保存和计算 1.7 overlapping 提前传输数据 1.8 checkpointing 中间线性层不保存,反向传播时再次重新计算 1.9 使用BMtrain 2. 大模型压…

[HTML]Web前端开发技术26(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

Axios学习

文章目录 Axios1.Json-server的搭建2.Axios的基本使用3.Axios的其他使用4.Axios响应结果的结构分析5.Axios配置对象详细说明6.axios的默认配置7.axios创建实例对象(create)8.axios拦截器1.请求拦截器2.响应拦截器 9.取消请求10.源码分析 Axios 1.Json-s…

数据分析 — Pandas 数据加载、存储和清洗

目录 一、文件读取1、常见文件读取函数2、read_csv()3、read_table()4、read_excel()5、read_json()6、read_html()7、大文件读取 二、数据保存1、csv2、excel3、json4、html5、MySQL1、连接数据库2、MySQL 存储到本地3、本地存储到 MySQL 三、数据清洗1、处理缺失值1、判断数据…

Python编程中的异常处理

什么是异常? 程序错误(errors)有时也被称为程序异常(exceptions),这是每个编程人员都会经常遇到的问题。在过去,当遇到这类情况时,程序会终止执行并显示错误信息,通常是…

Day-02-02

Httpclient测试 安装HTTP Client插件 使用IDEA自带的http接口测试工具——HTTP Client Open in HTTP Client 生成测试用例 点击绿色箭头可以运行测试用例,控制台会输出结果。 保存和修改测试用例 在模块下新建一个api-test包用来存放测试用例,将生…

SQL Extractor 数据库修复取证大师-数据库修复专家

SQL Extractor 数据库修复取证大师介绍 SQL Extractor 数据库修复取证大师 功能介绍:SQL Extractor数据库修复取证大师最新版本10.94软件特色:针对勒索病毒加密的SQL 数据库有特殊的修复算法,可匹配用友,金蝶数据库结构关系. 支持7.0、SQL2000、SQL2005、SQL2008、…

GPT-SoVITS-WebUI 克隆声音 macos搭建

强大的少样本语音转换与语音合成Web用户界面 macos运行参考 macos conda create -n GPTSoVits python3.9 conda activate GPTSoVits激活环境 conda activate GPTSoVits停用 conda deactivate mkdir GPTSoVits cd GPTSoVits git clone https://github.com/RVC-Boss/GPT-SoVITS…

这才是大学生该做的副业,别再痴迷于游戏了!

感谢大家一直以来的支持和关注,尤其是在我的上一个公众号被关闭后,仍然选择跟随我的老粉丝们,你们的支持是我继续前行的动力。为了回馈大家长期以来的陪伴,我决定分享一些实用的干货,这些都是我亲身实践并且取得成功的…