该程序如何实现抽象概念?

时间:2013-02-17 14:46:02

标签: c++ abstraction

今天,我正在寻找抽象,我得到了这个例子......这个程序如何实现抽象的概念,还请详细说明c ++中的抽象是什么

 #include <iostream>
using namespace std;

class Adder{
   public:
      // constructor
      Adder(int i = 0)
  {
    total = i;
  }
  // interface to outside world
  void addNum(int number)
  {
      total += number;
  }
  // interface to outside world
  int getTotal()
  {
      return total;
  };
  private:
  // hidden data from outside world
  int total;
};
int main( )
{
Adder a;

a.addNum(10);
a.addNum(20);
a.addNum(30);

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

3 个答案:

答案 0 :(得分:1)

它应该被称为data abstraction,这是OOP的主要来源(不限于C ++)。

引自维基百科:

  

数据抽象强制实现抽象之间的明确分离   数据类型的属性及其具体细节   实施

在您的示例中,Adder是加法器的数据抽象,它有两个接口:addNumgetTotal。此抽象隐藏(或封装)私有数据(在这种情况下为total),仅暴露其内核行为:添加数字并返回当前总和。

答案 1 :(得分:0)

您正在访问public方法来执行任务,却不知道private members如何受到影响。这只不过是abstraction

你正在移动你的手而不知道你的思想是如何指示它移动的。

Data Abstraction:隐藏不必要的细节。在您的情况下,您隐藏total的计算方式。你只需调用该函数即可完成任务。

Data Encapsulation:将dataobject绑定。在您的情况下,您使用total绑定了object a。所以没有a权限就无法访问它。

答案 2 :(得分:0)

只考虑构造函数和函数原型:

class Adder {
  Adder(int i);
  void AddNum(int num);
  int getTotal();
};

实现是隐藏的,抽象的,只剩下原型。