面向对象编程提供了许多用于编写具有不同概念的程序的能力,这些概念有助于最大限度地减少困难并提高程序的灵活性。数据抽象是面向对象编程的特点之一。在本章中,您将了解 C++ 软件如何实现数据抽象的概念。
抽象是面向对象编程的关键原则之一。尽管这个主题并不难,但许多人对此并不了解。在 LearneTutorials 的帮助下,您可以学习抽象的基础知识。
抽象意味着只显示最重要的信息并隐藏细节。将绝对必要的信息公开给外部世界,并隐藏实现或背景信息的技术称为数据抽象。
例如,当您向某人发送电子邮件时,您看不到实际发生了什么,而是只收到成功消息,接收者通过网络接收数据。您不知道数据如何通过网络传输到收件人(因为它对您不重要)。
在 C++ 中,主要有 2 种类型的抽象
有两种方法可以将数据抽象的概念付诸实践
使用类(使用类进行抽象)
类可用于在 C++ 中实现抽象。借助可用的访问说明符,类帮助我们将数据成员和成员函数分组。类可以选择哪些数据集成员对公众可见,哪些不可见。借助访问说明符,类可用于将所有数据成员和函数组装成一个单元。类可以选择哪些数据可以公开。
通过头文件(通过头文件完成抽象)
头文件是 C++ 中的另一种抽象类型。以 math.h 头文件中的 pow() 方法为例。当我们需要计算一个数的幂时,我们只需使用 math.h 头文件中的函数 pow() 并提供相关的整数作为参数,而无需了解该函数用于执行此操作的底层算法。
例如,如果程序开头包含数学运算头文件(例如 <cmath> 或 </math.h>),则 sqrt() 函数可用于确定任何给定数字的平方根。通过这种方法,我们了解 sqrt() 的功能,但不知道它如何计算平方根的具体细节。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double num, answer;
cout<<"Please enter the number: ";
cin>>num;
answer = sqrt(num);
cout << "\n The square root of " << num << " is " << answer ;
}
输出
Please enter the number: 49 The square root of 49 is 7
所以,即使我们不知道背景信息,我们也可以看到我们可以直接使用 <cmath> 库中的 sqrt() 函数来确定平方根。
C++ 维护实现数据抽象的主要特性是访问说明符。它们可用于决定哪些类成员允许公众查看,哪些不允许。使用 public、private 和 protected 关键字可以施加此类限制。
我们可以通过利用上述两个访问说明符特性轻松实现抽象。例如,在类中,指定内部实现的成员可以指定为 private。此外,任何必须向公众公开的信息都可以标记为 public。由于这些 public 成员是类的一部分,因此它们也可以访问 private 成员。
#include <iostream>
using namespace std;
class implementAbstraction
{
private:
int a, b;
public:
// method in order in order to set values of
// private members
void set(int x, int y)
{
a = x;
b = y;
}
void display()
{
cout<<"a = " <<a << endl;
cout<<"b = " << b << endl;
}
};
int main()
{
implementAbstraction obj;
obj.set(40, 50);
obj.display();
return 0;
}
输出
Output a = 40 b = 50
在以下程序中您会注意到,我们不允许直接访问变量 a 和 b,但我们可以使用函数 set() 和 display() 来设置和显示 a 和 b 的值。
数据抽象将代码分为实现和接口两部分。因此,在开发代码时,我们必须将实现部分独立。换句话说,接口应该独立于实现。甚至代码重复的预防也受到它的影响。
因此,我们可以重用代码并更改实现,这有助于主要保护数据免受外部世界的侵害。
本教程向我们介绍了数据抽象的定义以及使用它的两种替代方法。甚至还向我们解释了用于数据抽象的访问说明符。
除了实际示例,我们还讨论了抽象的一些代码特性。希望本课程能帮助您理解数据抽象的概念。