更新時(shí)間:2020-12-08 17:39:22 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1605次
抽象數(shù)據(jù)類(lèi)型(abstract data type,ADT)實(shí)際上只是一個(gè)數(shù)學(xué)模型以及定義在模型上的一組操作。當(dāng)然,這里的抽象是動(dòng)詞而不是名詞,即通常是對(duì)數(shù)據(jù)的抽象,定義了數(shù)據(jù)的取值范圍以及對(duì)數(shù)據(jù)操作的集合。
抽象數(shù)據(jù)類(lèi)型有兩個(gè)關(guān)鍵詞,一個(gè)叫“數(shù)據(jù)類(lèi)型”,一個(gè)叫“抽象”,它們分別是什么意思呢?
首先,來(lái)說(shuō)說(shuō)什么是數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型包含了兩個(gè)東西,一個(gè)是“數(shù)據(jù)對(duì)象集”,就是我們說(shuō)的“是什么東西”,第二個(gè)是“數(shù)據(jù)集合相關(guān)聯(lián)的操作集”,就像我們不能單純講怎么去處理圖書(shū),我們是要對(duì)這些圖書(shū)進(jìn)行操作的,這兩件事情:圖書(shū)的擺放,對(duì)圖書(shū)的操作,是緊密結(jié)合在一起的。這兩個(gè)東西在C語(yǔ)言里是獨(dú)立處理的,但是在一些面向?qū)ο蟮恼Z(yǔ)言里邊,比如C++、Java,你就會(huì)發(fā)現(xiàn),它們很好的為數(shù)據(jù)類(lèi)型專(zhuān)門(mén)設(shè)計(jì)了一種機(jī)制,就是一個(gè)“類(lèi)”,把這個(gè)數(shù)據(jù)集跟它相關(guān)的操作集封裝在一個(gè)類(lèi)里面。
那再說(shuō)什么是抽象。抽象,抽象的意思就是“不具體”,就是說(shuō),描述數(shù)據(jù)類(lèi)型的方法是不依賴(lài)于具體的實(shí)現(xiàn)的,對(duì)一個(gè)數(shù)據(jù)類(lèi)型的描述,它跟存放數(shù)據(jù)的機(jī)器,數(shù)據(jù)存儲(chǔ)的物理結(jié)構(gòu)和實(shí)現(xiàn)操作的算法和編程語(yǔ)言皆無(wú)關(guān)。
以面向?qū)ο缶幊虨槔趧?chuàng)建一個(gè)對(duì)象的時(shí)候,要給定這個(gè)對(duì)象有哪些屬性以及行為,并且可以通過(guò)一套接口描述說(shuō)明這個(gè)對(duì)象用來(lái)干什么的,在給定輸入的時(shí)候,產(chǎn)生相應(yīng)的結(jié)果,并不需要知道其內(nèi)部實(shí)現(xiàn)的具體細(xì)節(jié)。其基本思想是,把數(shù)據(jù)定義為抽象的對(duì)象集合,并賦予它們合法操作,同時(shí),不暴露其數(shù)據(jù)的表示細(xì)節(jié)和操作的實(shí)現(xiàn)細(xì)節(jié)。
抽象數(shù)據(jù)類(lèi)型(ADT)是由公理定義的抽象概念,這些公理表示數(shù)據(jù)和對(duì)該數(shù)據(jù)的操作。ADT的定義,不在具體實(shí)例的范疇內(nèi),也不指代實(shí)現(xiàn)中具體的數(shù)據(jù)類(lèi)型、結(jié)構(gòu)或算法。相反,ADT對(duì)數(shù)據(jù)類(lèi)型的定義,僅僅是根據(jù)數(shù)據(jù)類(lèi)型的操作,和這些操作必須遵循的公理來(lái)的。
常見(jiàn)數(shù)據(jù)類(lèi)型示例:
ADT可以代表對(duì)任何類(lèi)型的數(shù)據(jù)的任何一組操作。換句話說(shuō),所有可能的 ADT 的窮舉列表是無(wú)限的,其原因與所有可能的英語(yǔ)句子的窮舉列表是無(wú)限的類(lèi)似。ADT是對(duì)未指定數(shù)據(jù)的一組操作的抽象概念,而不是對(duì)某特定組的具體數(shù)據(jù)的操作。其實(shí),數(shù)據(jù)類(lèi)型和抽象數(shù)據(jù)類(lèi)型可以看成一種概念。比如,各種計(jì)算機(jī)都擁有的整數(shù)類(lèi)型就是一個(gè)抽象數(shù)據(jù)類(lèi)型,盡管實(shí)現(xiàn)方法不同,但他們的數(shù)學(xué)特性相同。抽象數(shù)據(jù)類(lèi)型的特征就是實(shí)現(xiàn)與操作分離,從而實(shí)現(xiàn)封裝。
抽象數(shù)據(jù)類(lèi)型之所以如此受重視,是因?yàn)锳DT為我們提供了一種以數(shù)學(xué)上合理且明確的方式來(lái)正式定義可重用模塊的方法。這使我們可以共享一種通用語(yǔ)言,以引用大量有用的軟件構(gòu)建塊詞匯:學(xué)習(xí)和牢記這種理念,對(duì)我們?cè)诓煌I(lǐng)域、框架,甚至編程語(yǔ)言之間都會(huì)大有幫助。如此重要的抽象數(shù)據(jù)類(lèi)型的知識(shí),只要輕輕一點(diǎn),打開(kāi)本站的數(shù)據(jù)結(jié)構(gòu)和算法教程,你就能輕松掌握哦。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743