1.4.1 什么是抽象数据类型

抽象数据类型(Abstract Data Type,ADT)是描述具有某种逻辑关系的数学模型,并在该数学模型上进行的一组操作。这个抽象数据类型有点类似于C++和Java中的类,例如,Java中的Integer类是基本类型int所对应的封装类,它包含MAX_VALUE(整数最大值)、MIN_VALUE(整数最小值)等属性、toString(int i)、parseInt(String s)等方法。它们的区别在于,抽象数据类型描述的是一组逻辑上的特性,与在计算机内部如何表示无关;Java中的Integer类是依赖具体实现的,是抽象数据类型的具体化表现形式。

抽象数据类型不仅包括在计算机中已经定义了的数据类型,如整型、浮点型等,还包括用户自己定义的数据类型,如结构体类型、类等。

一个抽象数据类型定义了一个数据对象、数据对象中数据元素之间的关系及对数据元素的操作。抽象数据类型通常是指用来解决应用问题的数据模型,包括数据的定义和操作。

抽象数据类型体现了程序设计中的问题分解、抽象和信息隐藏特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立起一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。这就类似人们日常生活中盖房子,把盖房子分成若干个小任务:地皮审批、图纸设计、施工、装修等,工程管理人员负责地皮的审批,地皮审批下来之后,工程技术人员根据用户需求设计图纸,建筑工人根据设计好的图纸进行施工(包括打地基、砌墙、安装门窗等),盖好房子后请装修工人装修。

盖房子的过程与抽象数据类型中的问题分解类似,工程管理人员不需要了解图纸如何设计,工程技术人员不需要了解打地基和砌墙的具体过程,装修工人不需要知道怎么画图纸和怎样盖房子,这就是抽象数据类型中的信息隐藏。