前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 数据抽象与数据封装

C++ 数据抽象与数据封装

作者头像
嵌入式视觉
发布2022-09-05 14:20:15
3470
发布2022-09-05 14:20:15
举报
文章被收录于专栏:嵌入式视觉

数据抽象理解

数据抽象简单理解是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。  数据抽象(data abstraction)是与面向对象(object-oriented)并列的一种编程范式(programming paradigm)。它的另外一个名字是“抽象数据类型/abstract data type/ADT”。  就 C++ 编程而言,C++ 类为数据抽象提供了可能。它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现。  数据抽象是一个很复杂的概念,更多的理解和应用需要在工程和不断实践加以理解和掌握。看一个简单的实例代码:

代码语言:javascript
复制
#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;
   a.addNum(10);
   a.addNum(20);
   a.addNum(70);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

程序输出如下:

(base) harley@ubuntu:~/Program/Programe_Language/Cpp_codeg++ADTdemo.cpp(base)harley@ubuntu: /Program/ProgrameLanguage/Cppcode ./a.out  Total 100

上面的类把数字相加,并返回总和。公有成员 addNum 和 getTotal 是对外的接口,用户需要知道它们以便使用类。私有成员 total 是用户不需要了解的,但又是类能正常工作所必需的。

设计策略

抽象把代码分离为接口和实现。所以在设计组件时,必须保持接口独立于实现,这样,如果改变底层实现,接口也将保持不变。在这种情况下,不管任何程序使用接口,接口都不会受到影响,只需要将最新的实现重新编译即可。

数据封装理解

数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。  C++ 通过创建类来支持封装和数据隐藏(public、protected、private),类包含私有成员(private)、保护成员(protected)和公有成员(public)成员。

参考资料

C++数据封装 C++数据抽象

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据抽象理解
    • 设计策略
    • 数据封装理解
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档