1. 程式人生 > >《資料結構與演算法》之抽象資料型別(ADT)

《資料結構與演算法》之抽象資料型別(ADT)

抽象資料型別(abstract data type,ADT)是帶有一組操作的一些物件的集合。抽象資料型別是數學的抽象,只不過這種資料型別帶有自己的操作。比如表、集合、圖以及與它們各自的操作一起形成的這些物件都可以看做抽象資料型別,就像整數、實數、布林數等都是資料型別一樣。整數、實數、布林數都有各自相關的操作,而抽象資料型別也是如此。對於集合ADT,可以有新增、刪除、以及其它一些操作。也可以只要兩種操作並和查詢,這兩種操作又在這個集合上定義了一種不同的ADT。

抽象資料型別需要通過固有資料型別(高階程式語言中已實現的資料型別)來實現。抽象資料型別是一個數據模型及定義在該模型上的一組運算。對一個抽象資料型別進行定義時,必須給出它的名字及各運算的運算子名,即函式名,並且規定這些函式的引數性質。一旦定義了一個抽象資料型別及具體實現,程式設計中就可以像使用基本資料型別那樣,十分方便地使用抽象資料型別。

Java類也考慮了ADT的實現,不過適當的隱藏了實現的細節。這樣,程式中需要對ADT實施操作的任何其它部分可以通過呼叫適當的方法來進行。如果由於某種原因需要改變實現的細節,那麼通過僅僅改變執行這些ADT操作的例程是很容易做到的。這種改變對於程式的其餘部分是完全透明的。

對於每種ADT並不存在什麼法則來告訴我們必須要具有哪些操作,這是一個設計決策。錯誤處理和結構調整(在適當的地方)一般也取決於程式的設計者。