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. 程序员千万不要选全栈开发
  2. 这 9 个 Java 开源项目 yyds,你知道几个?
  3. CVPR 2020丨更精准的视频目标检测:基于记忆增强的全局-局部整合网络的方法
  4. Python import导入模块与函数方法 Python语言基础【1】
  5. [vue require动态引入组件、变量]
  6. JavaScript之JSON详解
  7. soapUI简单教程
  8. 给QlineEdit创建简单的clicked 信号方式
  9. 简述CC2530晶振、振荡器与时钟
  10. 数据治理-数据质量管理
  11. 基于android的备忘录_[译] 我个人的 Git 技巧备忘录
  12. 怎么申请企业邮箱?手机怎么申请免费邮箱?
  13. 云服务器win系统开热点,云服务器win系统开热点
  14. 国内主流加密芯片分析
  15. 边缘计算:一文理解云边端协同架构中的高性能云计算、边缘计算、云边协同
  16. Markdown的语法使用
  17. logback-RollingFileAppender源码分析(关于缓冲和性能)
  18. byte[] valu 转 ByteBuffer
  19. PID的增量式与位置式
  20. 001-windows下安装go及IDE

热门文章

  1. 第十三天-linux正则表达式及重点命令
  2. Dream------Hadoop--HDFS的设计
  3. HTTP中302与301的区别以及在ASP.NET中如何实现
  4. Team Foundation Server 源代码控制权限问题
  5. 扫描式SSD用于公式检测,代码已开源
  6. 科技部发文:破除“唯论文”不良导向!网友:靠水论文拿奖励的人不开心了...
  7. HandAI开源项目,拉近人和摄影的距离:基于手势识别完成不同的拍摄行为
  8. 推荐!京东开源姿态跟踪新框架LightTrack!
  9. MORAN文本识别算法开源,刷新多个OCR数据集state-of-the-art
  10. 如何评价MSRA视觉组最新提出的Deformable ConvNets V2?