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

数据抽象

数据抽象主要只向外界提供接口和关键信息,但隐藏其后台的具体实现细节。
我们数据抽象主要依靠C++的类来实现,而我们知道类中访问标签分为共有、私有和保护三种。
公有标签定义的成员可以访问该程序的所有部分。
而私有标签的成员却无法访问到使用类的代码。
这样说可能优点抽象,我们来谈一下为什么这样抽象,或者数据抽象的好处

  1. 类的内部会受到保护,不会因为用户某些错误导致对象状态出问题
  2. 类可以应对更新需求。
    所以,我们一般只在类的私有部分定义数据成员,这样我们更改数据就很方便,比如我们某个数据更改会导致哪些影响。(意思是说,如果数据是共有的,那么我们直接访问旧数据成员的函数可能数据的影响。)
    即,我们在设计数据抽象时,将代码和接口分开,独立实现,即使改变底层实现,也不会改变当前接口,只需要将最新的底层实现重新编译即可。

如果上述内容觉得繁琐,可以记住下面这句话
数据成员,统一放入类的私有部分,这样我们操作数据成员会被限制在类中,出问题了方便改。
这和我们初学c语言时,规范要求把数据操作写成函数是一个道理。

数据封装

我们刚刚谈到数据抽象,数据抽象主要是为了只向用户提供接口而隐藏实现细节
这里说的数据封装主要是未了把数据和函数捆绑在一起,这样能避免受到外界的干扰和误用,从而确保安全。
比如我们下面这个代码:

class Box
{
   
   public:
      double getVolume(void)
      {
   
         return length * breadth * height;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

private内部私有定义了数据,但是我们对其抽象主要还是出于安全考虑,用还是得用的,所以我们要通过public关键字定义一个接口来访问它们,这样我们就既考虑了安全性,又考虑了实用性。

不懂可以再看下面一个例子:

#include <iostream>
using namespace std
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值