我们对已有的数据类型进行抽象,就有了抽象数据类型。
抽象数据类型(Abstract Date Type, ADT):是指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。
根据抽象数据类型的定义,它还包括定义在该模型上的一组操作。就像“超级玛丽”这个经典的任天堂游戏,里面的游戏主角是马里奥(Mario)。我们给他定义了几种基本操作,走(前进、后退、上、下)、跳、打子弹等。
一个抽象数据类型定义了:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作。至于,一个抽象数据类型到底需要哪些操作,这就只能由设计者根据实际需要来定。像马里奥, 可能开始只有两种操作,走和跳,后来发现应该要增加一种打子弹的操作,再后来发现有些玩家希望它可以走得快一点,就有了按住打子弹键后前进就会“跑”的操作。这都是根据实际情况来设计的。
事实上,抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。
抽象数据类型(Abstract Data Type, ADT) 是一个数据结构以及定义在该结构上的一组操作的总称。它是对数据类型的抽象,抽象的意义在于数据类型不是高级程序语言支持的基本数据类型,而是自定义的数据类型。
为了便于在之后的讲解中对抽象数据类型进行规范的描述,我们给出了描述抽象数据类型的标准格式:
ADT 抽象数据类型名 Data 数据元素之间的逻辑关系的定义 Operation 操作1: 前置条件:执行此操作前数据所必须的状态 输入: 执行此操作所需要的输入 功能: 该操作将完成的功能 输出: 此操作执行完成后产生的输出 后置条件: 执行此操作后数据的状态 操作2: . . . 操作n: . . . endADT
对抽象数据类型的定义,不涉及实现细节,形式上可繁可简。