设计模式——UML类图

news2024/11/15 11:00:13

目录

  • 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.coloradmin.cn/o/1133594.html

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

相关文章

linuxnfs服务安装与配置实践

目录 一.NFS服务 二.NFS和RPC的概念 三.什么是RPC 四.工具 五.安装配置NFS环境 1.查看一下是否有nfs-utils和rpcbind软件包的安装rpm包 2.安装nfs-utils 、rpcbind 3.环境配置 1.nfs配置文件需要遵守如下规则: 2.nfs语法参数解释: 3.nfs客户端…

Python:实现日历到excel文档

背景 日历是一种常见的工具,用于记录事件和显示日期。在编程中,可以使用Python编码来制作日历。 Python提供了一些内置的模块和函数,使得制作日历变得更加简单。 在本文,我们将探讨如何使用Python制作日历,并将日历输出到excel文档中。 效果展示 实现 在代码中会用到cale…

springboot actuator 常用接口

概述 微服务作为一项在云中部署应用和服务的新技术是当下比较热门话题,而微服务的特点决定了功能模块的部署是分布式的,运行在不同的机器上相互通过服务调用进行交互,业务流会经过多个微服务的处理和传递,在这种框架下&#xff0…

轻松驾驭!Prometheus 如何监控指标,快速定位故障

Prometheus 监控业务指标 在 Kubernetes 已经成了事实上的容器编排标准之下,微服务的部署变得非常容易。但随着微服务规模的扩大,服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性(observability)的概念。 在…

vue 记账清单

通过发送请求来从后台获取更改数据&#xff0c;需要用到钩子函数。 使用ECharts来渲染饼图。 在渲染函数中setOption动态更新饼图&#xff08;map&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" />&l…

linux-防火墙

目录 一、防火墙概念 1.软件防火墙 2.iptables默认规则 3.iptables的五链 4.iptables动作 5.四表五链 6.iptables实例 一、防火墙概念 linux下防火墙一般分为软件防火墙、硬件防火墙 硬件防火墙&#xff1a;在硬件的级别实现防火墙过滤功能&#xff0c;性能高&#xf…

360智慧生活旗舰产品率先接入“360智脑”能力实现升级

10月25日&#xff0c;360智慧生活秋季新品及视觉云方案发布会在深圳召开。360智能硬件产品&#xff0c;诸如 360可视门铃、360智能摄像机、360行车记录仪、360儿童手表和家庭防火墙等&#xff0c;都在各自的行业有着举足轻重得地位&#xff0c;而这次发布的系列新品&#xff0c…

使用Golang策略和最佳实践高效处理一百万个请求

有效处理一百万个请求的策略与最佳实践 在不断发展的Web应用程序领域&#xff0c;处理大规模请求的能力是成功的关键因素。作为一名全栈开发人员&#xff0c;您可能熟悉Golang的效率和性能。在本文中&#xff0c;我们将深入探讨如何利用Golang来优雅地处理处理一百万个请求的挑…

【ICLR23论文】Can CNNs Be More Robust Than Transformers?

文章目录 0 Abstract1 Introduction2 Related Works3 Settings3.1 CNN Block Instantiations3.2 Computational Cost3.3 Robustness Benchmarks3.4 Training Recipe3.5 Baseline Results 4 Component Diagnosis4.1 Patchief Stem4.2 Large Kernel Size4.3 Reducing Activation …

安装 tensorflow==1.15.2 遇见的问题

一、直接安装 命令&#xff1a;pip install tensorflow1.15.2 二、换 阿里云 镜像源 命令&#xff1a;pip install -i http://mirrors.aliyun.com/pypi/simple tensorflow1.15.2 三、换 豆瓣 镜像源 命令&#xff1a;pip install http://pypi.douban.com/simple tensorflow1…

Android Glide判断图像资源是否缓存onlyRetrieveFromCache,使用缓存数据,Kotlin

Android Glide判断图像资源是否缓存onlyRetrieveFromCache&#xff0c;使用缓存数据&#xff0c;Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity…

“第五十天” 机组--数据的表示

数据的表示和运算&#xff1a; 进位计数制&#xff1a; 对于我们现在使用的如十进制计数法&#xff0c;二进制计数法等&#xff0c;符号反映权重&#xff0c;比如十进制的0~9&#xff0c;9这个符号的权重和0是不一样的&#xff0c;而且现在的计数法符号所在位置也反映权重&am…

去雨去雪去雾算法运行问题汇总记录

在进行去雨去雪去雾算法过程中&#xff0c;遇到了一个问题&#xff0c;这在先前的电脑运行是都没有出现过&#xff0c;但在博主新买的电脑上却出现了&#xff0c;讲道理是有点小抑郁的。 RuntimeWarning: invalid value encountered in scalar divideret ret.dtype.type(ret …

基于Or-Tools的线性规划问题求解

画出可行域如图所示&#xff1a; Python调用ortools求解 导入求解器 # 导入(或包含)or - tools线性求解器包装器&#xff0c;这是MIP求解器和线性求解器的接口&#xff0c;如下所示 from ortools.linear_solver import pywraplp声明线性规划求解器 MPsolver is a wrapper …

js双向绑定

题目来源&#xff1a; 双向绑定_牛客题霸_牛客网 (nowcoder.com) JS37 双向绑定 描述 请补全JavaScript代码&#xff0c;要求如下&#xff1a; 1. 监听对象属性的变化 2. 当"person"对象属性发生变化时&#xff0c;页面中与该属性相关的数据同步更新 3. 将输入框中…

【C++面向对象】8. 继承

文章目录 【 1. 基本原理 】【 2. 派生类的访问权限 】【 3. 派生类继承得到的成员的权限 】【 4. 多继承 】 继承允许我们依据另一个类来定义一个类&#xff0c;这使得创建和维护一个应用程序变得更容易。这样做&#xff0c;也达到了 重用代码功能 和 提高执行时间 的效果。当…

【Qt之QSetting】介绍及使用

概述 QSettings类提供了一种持久的、与平台无关的应用程序设置存储功能。 用户通常期望一个应用能在不同会话中记住其设置&#xff08;窗口大小和位置&#xff0c;选项等&#xff09;。在Windows上&#xff0c;这些信息通常存储在系统注册表中&#xff1b;在macOS和iOS上&…

MySQL数据库 #4

文章目录 一、MySQL外键基本概念1. 表与表之间的关系1.一对多的表关系2.多对多3.一对一注意事项 2.多表查询1.子查询2.数据准备3.连表查询&#xff08;重点&#xff09; 二、多表查询练习题1.习题试题的SQL文件2.Navicata可视化软件1.连接数据库2 操作数据库3.导入备份4.查询数…

01. 板载硬件资源和开发环境

一、板载硬件资源 STM32F4VGT6-DISCOVERY硬件资源如下&#xff1a; (1). STM32F407VGT6微控制器有1M的FLASH存储器&#xff0c;192K的RAM&#xff0c;LQFP100封装 (2). 板上的ST-LINK_V2可以使用选择的方式把套件切换成一个独立的ST-LINK/V2来 使用&#xff08;可以使用SWD…