Exkurs - Implementierung einer Stapel-Klasse
Stapel als Klasse
Der Datentyp Stapel
soll als Klasse implementiert werden.
Das folgende Klassendiagramm zeigt eine Modellierung der Klasse Stapel
,
bei der eine Liste zur Datenhaltung benutzt wird.
Beachte, dass auch andere Modellierungen hier möglich sind.
Aufgabe 1
Implementiere die Stapeloperationen. Die Testaufrufe innerhalb der Funktionsdefinitionen verdeutlichen das gewünschte Verhalten.
class Stapel(object): # Es können Daten beliebigen Typs auf den Stapel gelegt werden. # Alle Stapelelemente werden in einer Liste verwaltet. # Dabei werden die Elemente folgendermaßen angeordnet: # [... <- unten ... oben -> ...} def __init__(self, pListe = []): """ >>> s = Stapel() >>> s.liste [] >>> s = Stapel(['a', 'b', 'c']) >>> s.liste ['a', 'b', 'c'] """ pass def isEmpty(self): """ >>> s = Stapel() >>> s.isEmpty() True >>> s = Stapel(['a', 'b', 'c']) >>> s.isEmpty() False """ pass def push(self, element): """ >>> s = Stapel(['a', 'b']) >>> s.push('c') >>> s.liste ['a', 'b', 'c'] """ pass def pop(self): """ >>> s = Stapel() >>> s.pop() >>> s.liste [] >>> s = Stapel(['a', 'b', 'c']) >>> s.pop() 'c' >>> s.liste ['a', 'b'] """ pass def top(self): """ >>> s = Stapel(['a', 'b', 'c']) >>> s.top() 'c' >>> s = Stapel() >>> s.top() """ pass def setStapel(self, pListe): """ >>> s = Stapel() >>> s.setStapel(['a', 'b', 'c']) >>> s.liste ['a', 'b', 'c'] """ pass def getStapel(self): """ >>> s = Stapel() >>> s.setStapel(['a', 'b', 'c']) >>> s.getStapel() ['a', 'b', 'c'] """ pass if __name__=='__main__': import doctest doctest.testmod(verbose=False)
Aufgabe 2
Teste selbst noch einmal sämtliche Stapeloperationen, z.B. so:
>>> s = Stapel() >>> s.push(6) >>> s.getStapel() [6] >>> s.push(3) >>> s.getStapel() [6, 3] >>> s.top() 3 >>> s.pop() 3 >>> s.getStapel() [6] ...