今天,我正在寻找抽象,我得到了这个例子......这个程序如何实现抽象的概念,还请详细说明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;
}
答案 0 :(得分:1)
它应该被称为data abstraction,这是OOP的主要来源(不限于C ++)。
引自维基百科:
数据抽象强制实现抽象之间的明确分离 数据类型的属性及其具体细节 实施
在您的示例中,Adder
是加法器的数据抽象,它有两个接口:addNum
和getTotal
。此抽象隐藏(或封装)私有数据(在这种情况下为total
),仅暴露其内核行为:添加数字并返回当前总和。
答案 1 :(得分:0)
您正在访问public
方法来执行任务,却不知道private members
如何受到影响。这只不过是abstraction
。
你正在移动你的手而不知道你的思想是如何指示它移动的。
Data Abstraction
:隐藏不必要的细节。在您的情况下,您隐藏total
的计算方式。你只需调用该函数即可完成任务。
Data Encapsulation
:将data
与object
绑定。在您的情况下,您使用total
绑定了object a
。所以没有a
权限就无法访问它。
答案 2 :(得分:0)
只考虑构造函数和函数原型:
class Adder {
Adder(int i);
void AddNum(int num);
int getTotal();
};
实现是隐藏的,抽象的,只剩下原型。