ADT (abstrakt verilənlər tipi) tipin nə etdiyini təsvir edir: əməliyyatlar, xətalar və invariantlar. Verilənlər strukturu isə bunun necə edildiyidir: massiv, bağlı siyahı, hash cədvəli. Bu dərsdə eyni stek və lüğət interfeysini iki cür yazırıq. Interfeysin Python-da rəsmiləşdirilməsi növbəti dərsdədir: ADT-nin Protocol və ABC ilə yazılması.
ADT: əməliyyatlar və müqavilə
Stek ADT-nin müqaviləsi: push(x) elementi əlavə edir, pop() ən son əlavə olunanı qaytarır və çıxarır (LIFO), boş stekdə pop() IndexError verir, len həmişə push və pop fərqinə bərabərdir. Bu cümlələrdə massiv və ya göstərici yoxdur — bu ADT-dir. Aşağıda onu list üzərində yazırıq; drain funksiyası yalnız len və pop bilir.
class ListStack:
def __init__(self):
self._items = []
def push(self, x):
self._items.append(x)
def pop(self):
if not self._items:
raise IndexError("pop from empty stack")
return self._items.pop()
def __len__(self):
return len(self._items)