设计模式——UML类图

目录

  • UML类图
    • 介绍
    • UML图
      • UML图的分类
  • 关系
    • 依赖关系
    • 泛化关系
    • 实现关系
    • 关联关系
    • 聚合关系

UML类图

介绍

  • uml(统一建模语言),是一种用于软件系统分析和设计的语言工具,他用于帮助软件开发人员进行思考和记录思路的结果
  • UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类,接口,实现,泛化,依赖,组合,聚合等

image-20231022155806790

UML图

  • 话UML图和写文章差不多,多事把自己的思想描述给别人看,关键在于思路和条理,

UML图的分类

  • 用例图
  • 静态结构图:类图,对象图,包图,组件图,部署图
  • 动态行为图:交互图(时序图与协作图),转态图,活动图

说明:

  • 类图是描述类与类之间的关系的,是UML图中最核心的

关系

依赖关系

只要是在类中用到了对方,那么他们之间就存在依赖关系

  • 类中用到了对方
  • 如果是类的成员属性
  • 如果是方法的返回类型
  • 是方法接受的类型参数
  • 方法中使用到

image-20231022204638208

泛化关系

  • 泛化关系实际上就是继承关系
  • 如果A继承了B,我们就说A和B存在泛化关系

image-20231022204230539

实现关系

  • 实现关系实际上就是A类实现B类,他是依赖关系的特例

image-20231022204154222

关联关系

image-20231022205058862

聚合关系

聚合关系表示的是整体和部分的关系,整体与部分可以分开,聚合关系是关联关系的特例,所以他 具有关联的导航性与多重性

如:一台电脑由键盘(keyboard),显示器(monitor),鼠标等组成,组成电脑的各个配件是可以从电脑上分离出来的,使用带空心的菱形的实线来表示

package two.聚合关系;/*** 聚合关系* @author Han* @data 2023/10/22* @apiNode*/
public class Computer {// 显示器和鼠标可以和电脑分离//private Mouse mouse;private Monitor moniter;public void setMouse(Mouse mouse) {this.mouse = mouse;}public void setMoniter(Monitor moniter) {this.moniter = moniter;}}

image-20231022211023544

  • 如果我们认为Mouse和Monitor和Computer是不可分离的,则升级为组合关系
/*** 组合关系* @author Han* @data 2023/10/22* @apiNode*/
public class Computer {// 显示器和鼠标无法和电脑分离private Mouse mouse = new Mouse();private Monitor monitor = new Monitor();public void setMouse(Mouse mouse) {this.mouse = mouse;}public void setMonitor(Monitor monitor) {this.monitor = monitor;}}

image-20231022211602511

image-20231022211847611

image-20231022211954283

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

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

相关文章

Linux - 进程状态 - Linux 当中的进程状态是如何维护的?

进程状态 一个进程在 系统当中有很多的状态,比如:一个进程正在被cpu执行,那这个进程就是一个 r 状态;一个进程已经准备好了,但是其中的运行这个进程需要的资源没有准备好,那么这个进程一人不能运行。 比如…

如何在群晖NAS中搭建WebDav服务,并实现公网访问

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后,启动webdav服务,并勾选HTTP复选…

物流数字化转型有什么意义?

物流领域的数字化转型具有深远的意义,因为它彻底改变了供应链中的货物和信息流动方式。这一转变是由数字技术集成推动的,旨在提高效率、可见性和客户满意度。以下是其重要性的一些关键方面: 1.提高效率和降低成本:数字化转型通过…

使用了lua-resty-http库进行 爬虫

lua-resty-http是一个基于OpenResty的HTTP客户端库,用于在Lua中进行HTTP请求和响应的处理。它提供了简单易用的接口,可以方便地进行网页抓取和爬虫开发。 使用lua-resty-http进行爬虫,需要先安装OpenResty和lua-resty-http库,并将…

Hadoop 请求数据长度 Requested Data length 超过配置的最大值

一、问题 现象 Spark 任务速度变慢,也不失败。 DataNode 内存足够 CPU 负载不高 GC 时间也不长。 查看 DataNode 日志,发现有些日志出现很多 Netty RPC 超时。超时的 destination 是一个 NameNode 节点,然后查看 NameNode 节点的日志&…

Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

Unity的碰撞检测(四)

温馨提示:本文基于前一篇“Unity的碰撞检测(三)”继续探讨两个游戏对象具备刚体的触发检测,阅读本文则默认已阅读前文。 (一)测试说明 在基于两个游戏对象都具备触发器和刚体且属性一致的条件下,若二者刚体的BodyType…

分布式日志和链路追踪

分布式日志 实现思路 分布式日志框架服务的实现思路基本是一致的,如下: 日志收集器:微服务中引入日志客户端,将记录的日志发送到日志服务端的收集器,然后以某种方式存储数据存储:一般使用ElasticSearch分…

【Mybatis源码】XMLConfigBuilder构建器 - 读取XML配置初始化Configuration对象

XMLConfigBuilder是Mybatis中定义的进行构建Configuration对象的类,此类用于读取XML配置文件创建并初始化Configuration对象; 上一篇中我们介绍了XMLConfigBuilder构建器加载XML配置文件以及创建Configuration对象https://blog.csdn.net/m1729339749/article/details/133983…

护眼灯买哪种好? 推荐五款儿童护眼台灯

台灯如何选择,随着人们生活水平的提高及科技的不断进步,台灯的品质也得到了极大的提高,在生活中很多时候都需要使用台灯,但是市面上的台灯那么多,台灯如何选择。本次小编为大家推荐五款好用的护眼灯。 1.书客护眼台灯L…

NodeRed 配置 Modbus

2023-10-27 点右上角添加之后,选择这个服务。为了好记。我把名称改成了:127.0.0.1:502 点右上角[完成] 出来了

70 搜索插入位置

搜索插入位置 题解1 二分查找防越界写法 题解2 STL大法两行 给定一个排序数组和一个目标值,在数组中找到目标值, 并返回其索引。如果目标值不存在于数组中, 返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O ( l o g n ) O(log n…

node开发微信群聊机器人第⑤章

▍PART 序 看本文时,请确保前4章都已经看过,不然本章你看着看着思维容易跳脱!再一个机器人教程只在公众号:“程序员野区”首发。csdn会跟着发一份,未经博主同意,请勿转载!欢迎分享到自己的微信…

记一次EasyExcel导出时将空格丢失的问题

EasyExcel的issues可以看到 需求:导出的数据以树形展示,如下: 导出结果: 原因: EasyExcel会默认去除掉空格,autoTrim熟悉默认为true,只需要设置为false即可。

低代码软件的价格考量:成本效益与投资回报

数字化转型的今天,我们常听到“低代码”这个概念,那低代码软件价格到底如何呢?很多厂商并没有公布软件价格情况,让很多企业在采购的时候也是一头雾水。当然,市场上也存在一些厂商公开透明价格,比如Zoho Cre…

Blueprints - 虚幻中的行为树(Behavior Tree)

一些以前的学习笔记归档; 简单的说,行为树可以让agent(代理,指可以自主活动的游戏角色等)做出决定,可以理解为AI的大脑; 行为树自上而下的从树的根节点(Root节点)开始读…

2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 C题 影视评价与定制 原题再现 中华人民共和国成立以来,特别是政治改革和经济开放后,随着国家经济的增长、科技的发展和人民生活水平的提高,中国广播电视媒体取得了显著的成就,并得到了迅速的发展…

Ajax、Json深入浅出,及原生Ajax及简化版Ajax

Ajax 1.路径介绍 1.1 JavaWeb中的路径 在JavaWeb中,路径分为相对路径和绝对路径两种: 相对路径: ./ 表示当前目录(可省略) ../ 表示当前文件所在目录的上一级目录 绝对路径: http://ip:port/工程名/资源路径 2.2 在JavaWeb中…

智慧停车视频解决方案:如何让AI助力停车管理升级?

一、项目背景 停车场的管理区域由于面积比较大,进出车辆多,所以在保安方面决不能有任何的麻痹和松懈,继续采用过去保安方式已远远不能满足现代安全防范的需求。为满足停车场的安全和科学系统化管理的需要,以及为了对随时发生的情…

STM32-程序占用内存大小计算

STM32中程序占用内存容量 Keil MDK下Code, RO-data,RW-data,ZI-data这几个段: Code存储程序代码。 RO-data存储const常量和指令。 RW-data存储初始化值不为0的全局变量。 ZI-data存储未初始化的全局变量或初始化值为0的全局变量。 占用的FlashCode RO Data RW Data; 运行消…