Schnittstelle des ADT Keller (Prinzip LIFO: Last in, first out):
empty | : | Keller | boolean | liefert true, falls Keller leer ist, false sonst | |
push | : | Keller Objekt | Keller | legt Element auf Keller | |
top | : | Keller | Objekt | liefert oberstes Element | |
pop | : | Keller | Keller | entfernt oberstes Element | |
Semantik der Kelleroperationen:
Source: Keller.java JavaDoc: Keller.html
Implementation eines Kellers mit Verweisen
Implementation eines Kellers mit einem Array (LIFO: Last in, first out)
Source: VerweisKeller.java JavaDoc: VerweisKeller.html Die folgenden beiden Beispiele zeigen, dass zum Speichern von Werten aus primitiven Datentypen zunächst das Verpacken der Werte mithilfe der bereits erwähnten Wrapperklassen erforderlich ist. So wird durch den Konstruktor new Integer(i) ein Integer-Objekt erzeugt mit dem (nicht mehr veränderbaren) Wert i. Der Wert dieses Objekts kann über die Methode intValue() ermittelt werden.
Source: Reverse.java JavaDoc: Reverse.html Applet:
Source: Klammer.java JavaDoc: Klammer.html Applet:
Um die Lesbarkeit der Programme zu erhöhen, soll nun das Einpacken und Auspacken der Wrapper-Klassen-Objekte gekapselt werden. Hierzu leiten wir vom Interface Keller das Interface CharKeller ab und von der Klasse VerweisKeller leiten wir die Klasse VerweisCharKeller ab. Erforderlich wird eine neue Methode ctop(), da Java nicht zwei identische Signaturen mit unterschiedlichem Rückgabewert erlaubt. Getestet wird die Implementation in der Klasse Postfix, welche einen eingelesenen Infix-Ausdruck in die entsprechende Postfix-Notierung überführt.
Source: CharKeller.java JavaDoc: CharKeller.html
Source: VerweisCharKeller.java JavaDoc: VerweisCharKeller.html
Source: Postfix.java JavaDoc: Postfix.html Applet: