Tutorial Study Image

C++ 中的抽象


2023年6月9日, Learn eTutorial
771

面向对象编程提供了许多用于编写具有不同概念的程序的能力,这些概念有助于最大限度地减少困难并提高程序的灵活性。数据抽象是面向对象编程的特点之一。在本章中,您将了解 C++ 软件如何实现数据抽象的概念。

抽象是面向对象编程的关键原则之一。尽管这个主题并不难,但许多人对此并不了解。在 LearneTutorials 的帮助下,您可以学习抽象的基础知识。

C++ 中抽象的含义是什么?

抽象意味着只显示最重要的信息并隐藏细节。将绝对必要的信息公开给外部世界,并隐藏实现或背景信息的技术称为数据抽象。

例如,当您向某人发送电子邮件时,您看不到实际发生了什么,而是只收到成功消息,接收者通过网络接收数据。您不知道数据如何通过网络传输到收件人(因为它对您不重要)。

C++ 中不同类型的抽象

在 C++ 中,主要有 2 种类型的抽象

  1. 数据抽象:它隐藏与数据相关的信息。
  2. 控制抽象:它隐藏实现的细节/信息。

C++ 中抽象的实现

有两种方法可以将数据抽象的概念付诸实践

  1. 使用类(使用类进行抽象)

    类可用于在 C++ 中实现抽象。借助可用的访问说明符,类帮助我们将数据成员和成员函数分组。类可以选择哪些数据集成员对公众可见,哪些不可见。借助访问说明符,类可用于将所有数据成员和函数组装成一个单元。类可以选择哪些数据可以公开。

  2. 通过头文件(通过头文件完成抽象)

    头文件是 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++ 中的访问说明符

C++ 维护实现数据抽象的主要特性是访问说明符。它们可用于决定哪些类成员允许公众查看,哪些不允许。使用 public、private 和 protected 关键字可以施加此类限制。

  • 类中被指定为 public 的成员可以从程序的任何部分访问。
  • 类中的 private 成员只能从类内部访问。它们不能从代码的任何其他部分访问,只能从类内部访问。

我们可以通过利用上述两个访问说明符特性轻松实现抽象。例如,在类中,指定内部实现的成员可以指定为 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 的值。

C++ 中抽象的优点

  1. 由于适当的分区,抽象提高了代码的可重用性。
  2. 它通过降低复杂性和冗余来提高代码的可读性。
  3. 通过使用类和对象,代码的安全性得到了提高。为了保持代码部分的安全,我们可以将其标记为私有。
  4. 由于用户只看到关键功能而不知道背景信息,因此代码的关键组件是安全的。
  5. 由于程序员可以重复使用相同的代码,因此它有助于我们为相关操作执行相同的任务。
  6. 抽象允许更改内部实现而不影响用户级代码。
  7. 除了程序员之外,任何人都不得修改程序员的数据和技术。
  8. 程序员无需编写低级代码。

设计策略

数据抽象将代码分为实现和接口两部分。因此,在开发代码时,我们必须将实现部分独立。换句话说,接口应该独立于实现。甚至代码重复的预防也受到它的影响。

因此,我们可以重用代码并更改实现,这有助于主要保护数据免受外部世界的侵害。

总结

本教程向我们介绍了数据抽象的定义以及使用它的两种替代方法。甚至还向我们解释了用于数据抽象的访问说明符。

除了实际示例,我们还讨论了抽象的一些代码特性。希望本课程能帮助您理解数据抽象的概念。