C++ 数据抽象

什么是数据抽象

向外界提供关键信息。隐藏其后台的实现细节。只表现必要的信息,不呈现细节。
数据抽象是依赖于接口和实现分离。

通过外部接口,对其内部进行实现。达到数据抽象的目的

#include <iostream>
using namespace std;int main(){cout << "hello c++" << endl;return 0;
}

在上方中,不需要理解cout如何在屏幕上输出内容,只需要知道这是一个接口,用于定义进行输出。

优势

类的内部受到保护,不会因为用户错误对对象导致受到损害。
类的实现可能会受到时间的推移而发生变化,应对不断变化的需求,只需要更改类即可,不用更改业务代码,完成分离

数据抽象的实例

#include <iostream>
using namespace std;class Adder{
public:// 构造函数Adder(int i = 0){total = i;}// 对外的接口void addNum(int number){total += number;}// 对外的接口int getTotal(){return total;}
private:// 对外隐藏的数据int total;
}int main(){Adder* a = new Adder();a.addNum(30);a.addNum(20);a.addNum(30);cout << "Total" << a.getTotal() << endl;return 0;
}

设计

抽象把代码分离为接口和实现。
设计组件的时候,必须保持接口的独立实现。无论怎么改变底层,接口也将保持不变。

数据抽象

程序语句 程序中执行动作的部分称为函数
程序数据 数据为程序的信息,会受到函数的影响。

数据隐藏

数据隐藏属于OOP中的封装的特性。

OOP中的三大特性,封装,继承,多态,封装,提供set和get方法,用于进行封装,即对内保护,对外隐藏。继承java中使用的是extends,进行继承,有单一继承和多重继承。多态、定义一个接口,即抽象类,用来对于某些规则进行定义,实现对于不同的处理进行不同的反馈,得到多态。

数据封装为public和private等

#include <iostream>int main(){class Box{public:double getVolume(void){return length * breadth * height;}private:double length;  // 长度double breadth; // 宽度double height;  // 高度}
}

在上方中,封装数据,并对外提供接口为getVolme,并且private保证了对数据的保护,防止非法操作,并且将数据和实现分离,确保当业务代码更改的时候,数据也可以进行更改。

设计

设计类的成员为私有,除非真的要对齐暴露,确保封装性。
包括对于虚函数来说,也是如此。

接口

C++的接口,使用虚函数进行实现。通过= 0 说明该虚函数为没有方法体,虚函数需要在派生类中进行具体的实现。

设计

封装的作用是用来保护代码,继承是用来增强代码的复用,多态是用来派生类的功能可以被基类所调用,并且可以对类进行进一步的抽象达到更高的复用的目的。
接口的作用,用于统一规范代码,用于对各个模块提供一个统一的接口用于进行实现。
多态和接口
接口是多态的实现的一种方式。

https://www.iming.info/2018/11/06/C-%E6%95%B0%E6%8D%AE%E6%8A%BD%E8%B1%A1-%E5%B0%81%E8%A3%85-%E6%8E%A5%E5%8F%A3/

转载于:https://www.cnblogs.com/melovemingming/p/9926127.html

C++ 数据抽象 封装 接口相关推荐

  1. C++ 数据抽象 封装 接口

    C++ 数据抽象 什么是数据抽象 向外界提供关键信息.隐藏其后台的实现细节.只表现必要的信息,不呈现细节. 数据抽象是依赖于接口和实现分离. 通过外部接口,对其内部进行实现.达到数据抽象的目的 #in ...

  2. 微信小程序 封装接口

    1.util-util.js //封装接口 let baseURL = 'http://127.0.0.1:3000/'; //接口路径 let request = function (url, op ...

  3. Python——使用Flask框架封装接口

    Python--使用Flask框架封装接口 引言 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开发 ...

  4. 系统封装接口层 cmsis_os

    源:系统封装接口层 cmsis_os 转载于:https://www.cnblogs.com/LittleTiger/p/4432742.html

  5. 通过封装接口实现淘宝商品详情数据上架京东店铺实现商品搬家上货操作实施代码展示

    ​​业务场景:作为全球最大的 B2C 电子商务平台之一,淘宝平台提供了丰富的商品资源,吸引了大量的全球买家和卖家.为了方便开发者接入淘宝平台,淘宝平台提供了丰富的 API 接口,其中商品详情接口是非常 ...

  6. 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类

    目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...

  7. Unity3D 开发工具系列 UI框架:封装接口UIControl

    Unity3D 开发工具系列 UI框架:UI基类UIBase Unity3D 开发工具系列 UI框架:UI管理UIManager Unity3D 开发工具系列 UI框架:MVC模式 Unity3D 开 ...

  8. Python封装接口与接口的调用

    接口封装 # coding:utf-8 from flask import Flask from flask import request from flask import jsonify # 将封 ...

  9. 【python科研绘图】封装接口直接利用DataFrame绘制百分比堆叠柱状图

    封装接口直接利用DataFrame绘制百分比柱状图 1. 背景前言 2. 官方网址示例 2.1 matplotlib_percentage_stacked_bar_plot 2.2 percent-s ...

最新文章

  1. ni visa pci_CHINACOAT 2019“推荐品牌”赫普菲乐|PCI可名文化出品
  2. python global函数_如何使用python语言中的global关键字获取函数值
  3. Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function
  4. 介绍几个移动web app开发框架
  5. 波形捕捉:(2)创建捕捉设备对象
  6. 怎么看android sdk 文档
  7. gitHub网站上常见英语翻译
  8. 数据科学项目(二)之明确问题及确立目标
  9. 系统设计知识:系统设计的基本原理介绍
  10. 100%有用的Photoshop实用快捷健介绍
  11. django模型篇:一对一、一对多、多对多,添加,批量插入和查询操作
  12. 开发人员为什么要学会画技术架构图?
  13. PHP裁剪图片且保留背景透明
  14. 手把手带你玩摄像头模组
  15. cs1.6修改服务器参数设置,cs1.6比赛服务器设置参数
  16. VBA字典(详解,示例)
  17. 【图像配准】基于光流场算法Horn_Schunck和Brox及Lucas_Kanade实现医学图像配准matlab代码
  18. mybatis中如何防止sql注入和传参
  19. 图像mnf正变换_PCA和MNF变换
  20. c语言编译器只有9行怎么添加,avr单片机c语言编译器(9页)-原创力文档

热门文章

  1. 事件机制(事件冒泡与事件捕获)
  2. 不用GAN、VAE,谷歌发明视频生成的扩散模型,实现新SOTA
  3. X光肺炎检测竞赛上线!
  4. 微软亚研院:CV领域2019年重点论文推荐
  5. 重磅!清华商汤开源CVPR2018超高精度人脸对齐算法LAB
  6. linux如何将文件夹添加到书签,桌面应用|[新手技巧] 如何在Ubuntu中添加和删除书签...
  7. 345所开设人工智能本科专业高校名单大全
  8. 一步一步打造MySQL高可用平台
  9. 排序算法对比、总结(Python代码)
  10. 关于注册规划师的点点碎碎