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] ...