C++教程-C++中的数据抽象

C++中的数据抽象
- 数据抽象是一种在程序中仅向外界提供必要细节并隐藏内部细节的过程,即在程序中仅表示必要的细节。
- 数据抽象是一种依赖于将程序的接口和实现细节分离的编程技术。
- 让我们以空调为例,它可以开关机、调节温度、调节模式以及其他外部组件如风扇和摆动等。但我们不知道空调的内部细节,即它是如何内部工作的。因此,我们可以说空调将实现细节与外部接口分离。
- C++提供了高度的抽象性。例如,pow()函数用于计算一个数的幂,而不知道函数遵循的算法。
在C++程序中,如果我们实现了具有私有和公有成员的类,则是数据抽象的一个例子。
数据抽象可以通过以下两种方式实现:
- 使用类进行抽象
- 在头文件中进行抽象
使用类进行抽象:可以使用类来实现抽象。通过使用访问说明符,类用于将所有的数据成员和成员函数组合到一个单元中。类负责确定哪些数据成员对外可见,哪些不可见。
在头文件中进行抽象:另一种类型的抽象是头文件。例如,pow()函数可用于计算一个数的幂,而无需实际知道函数使用的算法。因此,可以说头文件将所有实现细节对用户隐藏起来。
访问说明符实现了抽象:
- 公有说明符(Public specifier):当成员声明为公有时,可以从程序的任何地方访问成员。
- 私有说明符(Private specifier):当成员声明为私有时,只有类的成员函数才能访问成员。
让我们看一个使用头文件进行抽象的简单示例。
// 计算一个数的立方
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n = 4;
int power = 3;
int result = pow(n, power); // pow(n,power) 是幂函数
cout << "n的立方是: " << result << endl;
return 0;
}
输出:
n的立方是: 64
在上面的示例中,使用pow()函数计算了4的3次方。pow()函数位于math.h头文件中,其中pow()函数的所有实现细节都被隐藏起来。
让我们看一个使用类进行数据抽象的简单示例。
#include <iostream>
using namespace std;
class Sum
{
private:
int x, y, z; // 私有变量
public:
void add()
{
cout << "输入两个数字:";
cin >> x >> y;
z = x + y;
cout << "两个数字的和为:" << z << endl;
}
};
int main()
{
Sum sm;
sm.add();
return 0;
}
输出:
输入两个数字:
3
6
两个数字的和为:9
在上面的示例中,使用类进行了抽象。类'Sum'包含了私有成员x、y和z,只能由类的成员函数访问。
数据抽象的优势:
- 类的实现细节受到保护,不会受到意外的用户级错误的影响。
- 程序员不需要编写底层代码。
- 数据抽象避免了代码重复,即程序员不必每次执行相似操作时都进行相同的任务。
- 数据抽象的主要目的是重用代码并在类之间进行适当的代码分割。
- 内部实现可以更改而不影响用户级别代码。