第四篇、抽象数据类型

抽象数据类型(Abstract Data Type,ADT)是指一个数学模型以及定义在这个模型上的一组操作。
抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。
抽象数据类型有两个重要特征:

数据抽象

数据封装

数据抽象

所谓数据抽象是指用ADT描述程序处理的实体时,强调的是其本质的特征,无论内部结构如何变化,只要本质特性不变,就不会影响其外部使用。
例如,在程序设计语言中,经常使用的数据类型 int,它就可以理解为是一个抽象数据类型,在不同的计算机或者操作系统中,它的实现方式可能会有不同,但是它本质上的数学特性是保持不变的。
例如,int类型的数据表示的是整数,可以进行加减乘除模等一些运算,int类型数据的这些数学特性保持不变,那么在编程者来看,他们都是相同的。

因此,数据抽象的意义在于数据类型的数学抽象特性。

数据封装

数据封装是指用户在软件设计时从问题的数学模型中抽象出来的逻辑数据结构和逻辑数据结构上的运算,需要通过固有数据类型(高级编程语言中以实现的数据类型)来实现,它在定义时必须给出名字及其能够进行的运算操作。

一旦定义了一个抽象数据类型,程序设计中就可以像使用基本数据类型那样来使用它。
例如,在统计学生信息时,经常使用姓名、学号、成绩等信息,我们可以定义这样的一个抽象数据类型student,它封装了姓名、学号、成绩三个不同类型的变量,这样操作student的变量就能够很方便的知道这些信息了。C语言中的结构体以及C++、java语言中的类等都是这种形式。

抽象数据类型在定义时遵循一定的格式规范,一般抽象数据类型的定义格式如下:

ADT 抽象数据类型名
{
Data:
数据元素之间逻辑关系的定义;
Operation:
操作1;
操作2;
...
}
使用它的人可以之关系他的逻辑特征,不需要了解他的存储方式。定义它的人同样不必关系他如何存储。

从上方的格式我们得知,抽象数据类型的定义由一个值域(Data)和定义在该值域上的一组操作(Operation)组成,若按其值的不同特性,可以将抽象数据类型细分为3类:
(1)原子类型。这种类型的变量,值是不可分解的。例如int、char等这些数据类型就无法再分解,属于原子类型的数据类型。一般较少定义这种抽象数据类型,因为固有数据类型基本都能满足程序设计。
(2)固定聚合类型。这种抽象数据类型,其值是由确定数据的成分按照一定的结构组成的。例如,以上提到的student抽象数据类型由姓名、学号、成绩3个成分按照先后顺序组成。
(3)可变聚合类型。与固定聚合类型相比,构成可变聚类类型值的成分的数目不确定。例如,定义一个“字符序列”,其中序列长度是可变的,我们并不知道会有多少个字符来组成这个序列。

总结

抽象数据类型可以更好的使程序设计模块化,在模块内部给出这些数据的表示及其操作的细节,在模块外部使用抽象的数据和抽象的操作。而且,所定义的数据类型的抽象层次越高,含有该抽象数据类型的软件模块的复用程度也就越高。
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值