教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

抽象數(shù)據(jù)類型指的是什么?有哪些特征?

更新時(shí)間:2023年11月23日14時(shí)05分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

抽象數(shù)據(jù)類型(Abstract DataType,ADT)是指一個(gè)數(shù)學(xué)模型以及定義在這個(gè)模型上的一組操作。抽象數(shù)據(jù)類型的定義僅僅取決于它的一組邏輯特性,而與它在計(jì)算機(jī)中的表示和實(shí)現(xiàn)無關(guān)。

抽象數(shù)據(jù)類型有兩個(gè)重要特征:數(shù)據(jù)抽象和數(shù)據(jù)封裝。

所謂數(shù)據(jù)抽象是指用ADT描述程序處理的實(shí)體時(shí),強(qiáng)調(diào)的是其本質(zhì)的特征,無論內(nèi)部結(jié)構(gòu)如何變化,只要本質(zhì)特性不變,就不影響其外部使用。例如,在程序設(shè)計(jì)語言中經(jīng)常使用的數(shù)據(jù)類型int,它就可以理解為是一個(gè)抽象數(shù)據(jù)類型,在不同的計(jì)算機(jī)或操作系統(tǒng)中,它的實(shí)現(xiàn)方式可能會(huì)有所不同,但它本質(zhì)上的數(shù)學(xué)特性是保持不變的。例如,int類型的數(shù)據(jù)指的是整數(shù),可以進(jìn)行加減乘除模等一些運(yùn)算,int類型數(shù)據(jù)的這些數(shù)學(xué)特性保持不變,那么在編程者來看,它們都是相同的。因此數(shù)據(jù)抽象的意義在于數(shù)據(jù)類型的數(shù)學(xué)抽象特性。

而另一方面,所謂的數(shù)據(jù)封裝是指用戶在軟件設(shè)計(jì)時(shí)從問題的數(shù)學(xué)模型中抽象出來的邏輯數(shù)據(jù)結(jié)構(gòu)和邏輯數(shù)據(jù)結(jié)構(gòu)上的運(yùn)算,需要通過固有數(shù)據(jù)類型(高級(jí)編程語言中已實(shí)現(xiàn)的數(shù)據(jù)類型)來實(shí)現(xiàn),它在定義時(shí)必須給出名字及其能夠進(jìn)行的運(yùn)算操作。一旦定義了一個(gè)抽象數(shù)據(jù)類型,程序設(shè)計(jì)中就可以像使用基本數(shù)據(jù)類型那樣來使明它。例如,在統(tǒng)計(jì)學(xué)生信息時(shí),經(jīng)常會(huì)使用姓名、學(xué)號(hào)、成績等信息,可以定義一個(gè)抽象數(shù)據(jù)類型student,它封裝了姓名、學(xué)號(hào)、成績3個(gè)不同類型的變量,這樣操作student的變量就能很方便地知道這些信息了。C語言中的結(jié)構(gòu)體以及C++語言中的類等都是這種形式。

抽象數(shù)據(jù)類型在定義時(shí)遵循一定的格式規(guī)范,一般抽象數(shù)據(jù)類型的定義格式如下所示:

ADT抽象數(shù)據(jù)類型名
{
   Data:
      數(shù)據(jù)元素之間邏輯關(guān)系的定義;
   Operation:
      操作1;
      操作2;
      
}

使用它的人可以只關(guān)心它的邏輯特征,不需要了解它的存儲(chǔ)方式。定義它的人同樣不必關(guān)心它如何存儲(chǔ)。

抽象數(shù)據(jù)類型的定義由一個(gè)值域(Data)和定義在該值域上的一組操作(Operation)組成,若按其值的不同特性,可將抽象數(shù)據(jù)類型細(xì)分為3類:

(1)原子類型。這種類型的變量,值是不可分解的。例如int、char等這些數(shù)據(jù)類型就無法再分解,屬于原子類型的數(shù)據(jù)類型。一般較少定義這種抽象數(shù)據(jù)類型,因?yàn)楣逃袛?shù)據(jù)類型基本都能滿足程序設(shè)計(jì)。

(2)固定聚合類型。這種抽象數(shù)據(jù)類型,其值是由確定數(shù)目的成分按一定的結(jié)構(gòu)組成的。例如,以上提到的student抽象數(shù)據(jù)類型由姓名、學(xué)號(hào)、成績3個(gè)成分按照先后順序組成。

(3)可變聚合類型。與固定聚合類型相比,構(gòu)成可變聚合類型值的成分的數(shù)目不確定。例如,定義一個(gè)“字符序列”,其中序列長度是可變的,我們并不知道會(huì)有多少個(gè)字符來組成這個(gè)序列。

抽象數(shù)據(jù)類型可以更好地使程序設(shè)計(jì)模塊化,在模塊內(nèi)部給出這些數(shù)據(jù)的表示及其操作的細(xì)節(jié),在模塊外部使用抽象的數(shù)據(jù)和抽象的操作。而且,所定義的數(shù)據(jù)類型的抽象層次越高,含有該抽象數(shù)據(jù)類型的軟件模塊的復(fù)用程度也就越高。

0 分享到:
和我們?cè)诰€交談!