1.2.3 数据类型和抽象数据类型 在用高级程序设计语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。例如,C语言中的基本数据类型有:整型、字符型、实型(包括单精度型和双精度型)及枚举型。 数据类型是一个"值"的集合和定义在此集合上的"一组操作"的总称。 所有高级语言中都有"整型"数据类型,它们的实现方法可以各自不同,但对程序员而言,它们是"相同"的。程序员使用它们时仅需了解它们的数学特性,而不需要了解它们在语言中是如何实现的。换句话说,各种语言中实现的是同一个"整数类型",而这个"整数类"的定义仅对"整数的数学特性"有明确规定。可称这个"整数类型"为"抽象数据类型"。 |
程序中对变量或常量说明其所属类型的作用是,对它们加上两个约束条件:一是可取值的范围,二是可进行的操作。 在高级编程语言中实现的整数都具有下列"数学特性": |
|||
抽象数据类型(Abstract
Data Type 简称 ADT)是指一个数学模型以及定义在此数学模型上的一组操作。 例如,矩阵的抽象数据类型定义为,矩阵是一个由 m n 个数排成 m 行 n 列的表,它可以进行初等变换、相加、相乘、求逆、……等运算。 抽象数据类型有两个重要特性: ・数据抽象 用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)。 ・数据封装 将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。 |
抽象数据类型必须给它的外部用户提供完整的
"接口",例如,明确长整数是三个整数的序列以及可以对它进行的操作等。 同时,对外部用户来说,不需要了解它是如何实现的,内部实现的改变不影响外部的使用,更重要的是应该做到,不能让外部用户侵入内部。对外部用户来说,抽象数据类型应该完全是一个黑盒子。 |