作為抽象資料型別的有理數
编辑
有理數(可以 a/b 格式表示的數,且 a 和 b 都是整數)本來是不能在電腦中表示出來。不過可以合理的抽象資料型別來定義,如下。
構造:使用兩個整數 a 與 b 建立實體,其中 a 為分子,b 為分母。
運算:加法、減法、乘法、除法、乘幕、比較、約分,轉成實數(浮點數)。
要完成整個規格,就要根據資料來定義所有的運算。例如,當兩個有理數 a/b 和 c/d 相乘時,相乘的結果就要定義為 ( a c ) / ( b d )。還有輸入、輸出、先決條件、後置條件,以及對抽象資料型別的各種假定。
堆疊
编辑
介面
编辑
堆疊的抽象資料型別介面,以 C 語法編寫:
long stack_create(); /* 建立新的堆疊實體 */
void stack_push(long stack, void *item); /* 將一個項目堆入堆疊 */
void *stack_pop(long stack); /* 從堆疊頂部取得項目 */
void stack_delete(long stack); /* 刪除堆疊 */
用法
编辑
抽象資料型別可以如下方式使用:
long stack;
struct foo *f;
stack = stack_create(); /* 建立堆疊 */
stack_push(stack, f); /* 將 foo 結構加入堆疊 */
f = stack_pop(stack); /* 從堆疊取得頂部的結構 */
各種實作
编辑
上述堆疊的抽象資料型別,一開始可以使用陣列來實作,然後改用鏈表,而不會傷到任何使用者的代碼。有多少方法可以實作抽象資料型別,取決於程式語言。例如,上述範例可使用 C 編寫一個結構,以及隨同的一組資料結構,可使用陣列或鏈表來存放記錄;當建構子函式返回一個抽象句柄時,就對使用者隱藏了真實的實作過程。