抽象数据类型和抽象

抽象数据类型(ADT),什么是ADT?简单来说,它是一种考虑数据结构的方式;着重于它做了什么,而忽略它是怎么做的,栈和队列都是ADT的例子

抽象数据类型这个属于从何而来?首先看看数据类型这部分,再来考虑抽象

数据类型

它首先表示内置的类型,例如int和double,当讨论一个简单类型时,实际上涉及到两件事:拥有特定特征的数据项和数据上允许的操作,例如,Java中的int类型变量是整数,可以进行各种加减操作等等,数据类型允许的操作是它本身不可分离的部分,理解类型包括理解什么样的操作可以应用在该类型之上

更广泛一点,当一个数据存储结构例如栈和队列被表示为一个类时,它也成为了一个数据类型。栈和int类型在很多不同方面都不同,但它们都被定义为一组具有一定排列规律的数据和在此数据上的操作的集合

抽象

抽象这个词的意思“不考虑细节的实现和描述”。抽象是事物的本质和重要特征。例如总办公室是一个抽象,它并不考虑哪一个人碰巧成为这个办公室的主人,因此在面向对象编程中,一个抽象数据类型是一个类,而且不用考虑它的实现,它是对类中数据的描述和能够在数据上执行的一系列操作,一级如何使用这些操作的说明,每个方法如何执行任务的细节肯定不包括在内。作为类的用户,只会被告知哪些方法可以调用

ADT

ADT的概念在软件设计过程中也是有用的。如果需要存储数据,那么久从考虑需要在数据上实现的操作开始。需要存取最后一个插入的数据项吗?还是第一个?是特定值的项?还是在特定位置的项?回答这些问题会引出ADT的定义。只有在完整定义了ADT后,才应该考虑细节问题,例如如何标识数据,如何编码使方法可以存储数据等等

通过从ADT规范中剔除实现的细节,可以简化设计流程。在未来的某个时刻,易于修改实现。如果用户只接触ADT接口,应该可以在不干扰用户代码的情况下修改接口的实现

当然,一旦设计好ADT,必须仔细选择内部的数据结构,以使规定的操作的效率尽可能高。例如,如果需要随机存取N元素,那么用链表标识就不够好,因为对链表来说,随机访问不是一个高效的操作,选择数组会得到较好的效果

ADT只是一个概念性的工具。数据存储结构不能截然地分成一些是ADT,另一些用来实现ADT。例如,链表不需要封装成一个列表接口才可用,它本身就可以作为一个ADT,然而它也可以实现其他数据类型,例如队列。链表能够用数组实现,一个数组类型的结构也可以用链表实现,在给定环境下,必须确定什么是ADT,什么是更基本的结构

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容

  • 1.数据类型 几乎是所有的程序设计语言都会讲到数据类型的概念。简单的说,数据类型就是一个值的集合及在这些值上定义的...
    kingZXY2009阅读 4,016评论 0 2
  • Redis is not a plain key-value store, it is actually a da...
    颍水书生阅读 494评论 0 0
  • 抽象数据类型(ADT) ADT是计算机领域被广泛接受的一种思想和方法,也是一种用于设计和实现程序模块的有效技术。 ...
    那是个好男孩阅读 1,925评论 0 0
  • ADT 什么是抽象数据类型 抽象数据类型是指一个数学模型以及定义在这个模型上的一组操作。抽象数据类型的定义仅仅取决...
    幼稚园投递阅读 1,265评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,536评论 28 53