详解抽象数据类型 - 极悦
首页 课程 师资 教程 报名

详解抽象数据类型

  • 2020-12-08 17:39:22
  • 1478次 极悦

抽象数据类型(abstract data type,ADT)实际上只是一个数学模型以及定义在模型上的一组操作。当然,这里的抽象是动词而不是名词,即通常是对数据的抽象,定义了数据的取值范围以及对数据操作的集合。

抽象数据类型有两个关键词,一个叫“数据类型”,一个叫“抽象”,它们分别是什么意思呢?

首先,来说说什么是数据类型,数据类型包含了两个东西,一个是“数据对象集”,就是我们说的“是什么东西”,第二个是“数据集合相关联的操作集”,就像我们不能单纯讲怎么去处理图书,我们是要对这些图书进行操作的,这两件事情:图书的摆放,对图书的操作,是紧密结合在一起的。这两个东西在C语言里是独立处理的,但是在一些面向对象的语言里边,比如C++、Java,你就会发现,它们很好的为数据类型专门设计了一种机制,就是一个“类”,把这个数据集跟它相关的操作集封装在一个类里面。

那再说什么是抽象。抽象,抽象的意思就是“不具体”,就是说,描述数据类型的方法是不依赖于具体的实现的,对一个数据类型的描述,它跟存放数据的机器,数据存储的物理结构和实现操作的算法和编程语言皆无关。

以面向对象编程为例,在创建一个对象的时候,要给定这个对象有哪些属性以及行为,并且可以通过一套接口描述说明这个对象用来干什么的,在给定输入的时候,产生相应的结果,并不需要知道其内部实现的具体细节。其基本思想是,把数据定义为抽象的对象集合,并赋予它们合法操作,同时,不暴露其数据的表示细节和操作的实现细节。

抽象数据类型(ADT)是由公理定义的抽象概念,这些公理表示数据和对该数据的操作。ADT的定义,不在具体实例的范畴内,也不指代实现中具体的数据类型、结构或算法。相反,ADT对数据类型的定义,仅仅是根据数据类型的操作,和这些操作必须遵循的公理来的。

常见数据类型示例:

  • 链表(List)
  • 栈(Stack)
  • 队列(Queue)
  • 集合(Set)
  • 映射(Map)
  • 流(Stream)

ADT可以代表对任何类型的数据的任何一组操作。换句话说,所有可能的 ADT 的穷举列表是无限的,其原因与所有可能的英语句子的穷举列表是无限的类似。ADT是对未指定数据的一组操作的抽象概念,而不是对某特定组的具体数据的操作。其实,数据类型和抽象数据类型可以看成一种概念。比如,各种计算机都拥有的整数类型就是一个抽象数据类型,尽管实现方法不同,但他们的数学特性相同。抽象数据类型的特征就是实现与操作分离,从而实现封装。

抽象数据类型之所以如此受重视,是因为ADT为我们提供了一种以数学上合理且明确的方式来正式定义可重用模块的方法。这使我们可以共享一种通用语言,以引用大量有用的软件构建块词汇:学习和牢记这种理念,对我们在不同领域、框架,甚至编程语言之间都会大有帮助。如此重要的抽象数据类型的知识,只要轻轻一点,打开本站的数据结构和算法教程,你就能轻松掌握哦。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交