OOP面向对象编程:类与类之间的关系

ops/2024/12/26 0:59:29/

OOP面向对象编程:类与类之间的关系

三大关系:复合(适配器设计模式)、委托(桥接设计模式)、继承

8、1复合Composition has-a -> 适配器模式

一个类里面含有另一个类的对象 —> 复合关系 has-a

适配器设计模式:将一个类的接口转换成客户端期望的另一个接口

Adaptor 模式的主要组成部分包括:

  1. Target 接口: 定义客户端使用的接口规范。–>queue
  2. Adaptee 类: 需要被适配的类,它拥有一些客户端无法直接使用的方法。–> deque
  3. Adapter 类: 实现 Target 接口,内部包含一个 Adaptee 实例,并将 Target 接口的方法转发到 Adaptee 的方法。–> has-a

image-20240623154817649

8、1、1复合的构造/析构调用次序

构造:内部拥有类 的构造->自己的构造

image-20240623155814563

8、2委托Composition by reference->桥接模式

两个类之间使用指针相连:两个类之间创建不同步

image-20240623165836780

8、3继承Inheritance is-a

image-20240623170603126

8、3、1继承的构造/析构调用次序

构造 父类->子类, 析构相反

image-20240623170908107

8、4继承+复合下构造/析构调用次序

构造:父类构造->内部拥有类的构造->自己本身的类构造

image-20240624184903489


http://www.ppmy.cn/ops/144981.html

相关文章

iOS - 超好用的隐私清单修复脚本(持续更新)

文章目录 前言开发环境项目地址下载安装隐私访问报告隐私清单模板最后 前言 在早些时候,提交应用到App Store审核,大家应该都收到过类似这样的邮件: Although submission for App Store review was successful, you may want to correct th…

重温设计模式--单例模式

文章目录 单例模式(Singleton Pattern)概述单例模式的实现方式及代码示例1. 饿汉式单例(在程序启动时就创建实例)2. 懒汉式单例(在第一次使用时才创建实例) 单例模式的注意事项应用场景 C代码懒汉模式-经典…

Go语言zero项目部署后启动失败问题分析与解决

在部署一个Go语言项目时,很多时候会遇到服务无法启动的情况,尤其是当项目配置或环境稍有问题时。这篇文章将帮助你分析和解决 systemctl start classin.service 命令启动失败的问题,具体错误信息如下: systemctl status classin.…

鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现

鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现 在一般的应用app中都会有一个“我的”页面,在“我的”页面中可以完成某些设置,也可以完成某些附加功能,如“修改密码”等相关功能。这里的鸿蒙云捐助也有一个“我的”功能页面。这里对“…

Spring Boot 实战:构建一个简单的 Web 应用

在 Java 开发领域,Spring Boot 凭借其简洁高效的开发模式,成为了众多开发者的首选框架。今天,我们就一起来通过实际代码示例,构建一个简单的 Spring Boot Web 应用,感受它的魅力。 一、准备工作 在开始之前&#xff…

LeetCode 343.整数拆分

1.题目要求: 2.题目代码: class Solution { public:int integerBreak(int n) {//先确定dp数组vector<int> dp;//1.确定dp数组的含义//2.确定dp的递推公式//3.初始化dp数组//4.遍历顺序dp.resize(n 1);dp[0] 0;dp[1] 0;dp[2] 1;for(int i 3;i < n;i){for(int j …

ECharts散点图-SymbolShapeMorph,附视频讲解与代码下载

引言&#xff1a; ECharts散点图是一种常见的数据可视化图表类型&#xff0c;它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图&#xff0c;包括图表效果预览、视频讲解及代码下载&#xff0c;让你轻松掌握…

macos自动制作dmg安装包脚本

macos下&#xff0c;使用脚本制作dmg安装包脚本&#xff1a; 目录结构&#xff1a; % tree helloworld/ test |-- Applications -> /Applications -- Helloworld.app-- Contents|-- Frameworks| |-- QtCore.framework| | |-- QtCore -> Versions/Current/QtCore|…