这个程序是如何实现抽象概念的
How this program implements the concept of 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;
}
它应该被称为数据抽象,它是OOP的关键来源(不限于C++)。
引用自维基百科:
数据抽象强化了抽象之间的清晰分离数据类型的性质及其具体细节实施
在您的示例中,Adder
是加法器的数据抽象,它有两个接口:addNum
和getTotal
。这种抽象隐藏(或封装)私有数据(在本例中为total
),只公开其内核行为:添加一个数字并返回当前总和。
您正在访问用于执行任务的public
方法,而不知道private members
会受到怎样的影响。这不过是CCD_ 7。
你在移动你的手,却不知道你的大脑是如何指示它移动的。
Data Abstraction
:隐藏不必要的细节。在您的情况下,您隐藏了total
的计算方式。只要调用函数,任务就完成了。
Data Encapsulation
:将data
与object
绑定。在您的情况下,您将total
与object a
绑定。因此未经CCD_ 15许可是不可访问的。
只考虑构造函数和函数原型:
class Adder {
Adder(int i);
void AddNum(int num);
int getTotal();
};
实现是隐藏的、抽象的,只剩下原型。
相关文章:
- 如何在从抽象基派生的类中实现相同的方法?
- 硬件抽象层 (HAL) 中实现的动态切换
- 使用 C++20 概念强制类实现一组方法
- 下面抽象工厂设计模式的实现是正确的吗
- 有没有一种方法可以使用SFINAE来检测一个类型是否实现了给定的抽象基类
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 类中的多态函数,实现抽象类
- Boost.geometry 实现多边形概念
- 从继承的类中实现抽象方法
- 在C++中实现抽象工厂 PIMPL 习语的运行时错误
- 如何正确实现抽象类
- 为不同的形状实现抽象的"重叠"方法?
- C++:使用模板化类来实现抽象类
- 什么是主循环抽象概念
- 如何在可变上下文中使用抽象类时实现抽象方法
- 在c++中实现抽象接口的操作符重载
- 在父类中实现抽象类成员
- 如何在c++中实现抽象类,同时允许子类方法调用
- 这个程序是如何实现抽象概念的
- 关于在c++中实现抽象函数的问题