2013-02-17 71 views
-1

今天,我正在寻找关于抽象和我得到这个例子....这个方案是如何实现的抽象的概念,也请您详细说明什么是抽象的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

你找到了一个声称实现“抽象概念”的程序,但没有提到它的任何内容?你在哪里找到它?你怎么知道它实现了“抽象的概念”,如果没有提到这一点呢? – 2013-02-17 14:48:00

+0

这里是源代码[link] http://www.tutorialspoint.com/cplusplus/cpp_data_abstraction.htm [链接] – 2013-02-17 14:49:35

+0

它看起来像是整个案例之前的一段文字。你有什么信息想念或不明白? – 2013-02-17 14:50:50

回答

1

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

从维基百科引用:

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

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

+0

好吧....我现在得到它.....感谢:) – 2013-02-17 15:07:41

0

您正在访问public方法来完成您的任务,而无需知道private members如何受到影响。这只不过是abstraction

你正在移动你的手而不知道你的大脑如何指示它移动。

Data Abstraction:隐藏不必要的细节。在你的情况下,你隐藏了如何计算total。你只需调用这个函数,你的任务就完成了。

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

0

觉得构造和功能的原型只有:

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

的实现是隐藏的,抽象化了,只有原型依然存在。