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

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

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

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

好口碑IT培訓

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

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

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

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

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

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

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

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

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

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

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

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

0 分享到:
和我們在線交談!