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.

Auswertung eines Rechenterms

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

Fehler melden

X

Suche