算法(4th ed)(66):基础——数据抽象 4

阅读数:18 2019 年 10 月 30 日 07:09

算法(4th ed)(66):基础——数据抽象 4

数据类型指的是一组值和一组对这些值的操作的集合。目前,我们已经详细讨论过 Java 的原始数据类型:例如,原始数据类型 int 的取值范围是 $-2^{31} $ 到 $2^{31}-1$ 之间的整数,int 的操作包括 +、*、-、/、%、< 和 >。原则上所有程序都只需要使用原始数据类型即可,但在更高层次的抽象上编写程序会更加方便。在本节中,我们将重点学习定义和使用数据类型,这个过程也被称为数据抽象(它是对 1.1 节所述的函数抽象风格的补充)。

Java 编程的基础主要是使用 class 关键字构造被称为引用类型的数据类型。这种编程风格也称为面向对象编程,因为它的核心概念是对象,即保存了某个数据类型的值的实体。如果只有 Java 的原始数据类型,我们的程序会在很大程度上被限制在算术计算上,但有了引用类型,我们就能编写操作字符串、图像、声音以及 Java 的标准库中或者本书的网站上的数百种抽象类型的程序。比各种库中预定义的数据类型更重要的是 Java 编程中的数据类型的种类是无限的,因为你能够定义自己的数据类型来抽象任意对象

抽象数据类型(ADT)是一种能够对使用者隐藏数据表示的数据类型。用 Java 类来实现抽象数据类型和用一组静态方法实现一个函数库并没有什么不同。抽象数据类型的主要不同之处在于它将数据和函数的实现关联,并将数据的表示方式隐藏起来。在使用抽象数据类型时,我们的注意力集中在 API 描述的操作上而不会去关心数据的表示;在实现抽象数据类型时,我们的注意力集中在数据本身并将实现对该数据的各种操作。

抽象数据类型之所以重要是因为在程序设计上它们支持封装。在本书中,我们将通过它们:

  • 以适用于各种用途的 API 形式准确地定义问题;
  • 用 API 的实现描述算法和数据结构。

我们研究同一个问题的不同算法的主要原因在于它们的性能特点不同。抽象数据类型正适合于对算法的这种研究,因为它确保我们可以随时将算法性能的知识应用于实践中:可以在不修改任何用例代码的情况下用一种算法替换另一种算法并改进所有用例的性能。

评论

发布