homedukeOOP mit Java: Beispiele für ist-ein Beziehungen und Vererbung Prof. Dr. Uwe Schmidt FH Wedel

Beispiele für ist-ein Beziehungen und Vererbung


weiter

Eine Klasse SExpr für Lisp Datenstrukturen

Eine abstrakte Klasse SExpr für den einzigen Lisp Datentyp mit den elementaren Selektoren car, cdr, der cons Operation, den Prädikaten isList, isAtom, isNil, isEqual und einer Ausgabefunktion toString.
 
Für fast alle Operationen ist hier eine default-Implementierung angegeben. Für car und cdr, die nur auf nicht atomaren Werten zugelasen sind, werden hier Laufzeitfehler ausgelöst.
 
Eine SExpr ist entweder ein Atom oder ein zusammengesetzter Wert, ein Paar, hier als Pair bezeichnet.
weiter
Die abstrakte Klasse Atom für unstrukturierte, atomare Werte. Hier wird das Prädikat isAtom redefiniert.
 
Der Bereich Atom wird weiter unterteilt in Symbole, die Unterklasse Symbol, und in Zahlen, die Unterklassen Number.
weiter
Die Symbol Klasse mit redefiniertem isEqual Prädikat und einer toString Funktion.
weiter
Es gibt ein spezielles Symbol NIL. Dieses Symbol repräsentiert sowohl den Wert false als auch die leere Liste. Dies ist das einzige Symbol, für das isList erfüllt ist.
 
Von dieser Klasse Nil wird nur einmal beim Initialisieren der Klasse SExpr ein Exemplar erzeugt.
weiter
Eine Klasse für Zahlen. Zahlen sind ebenfalls atomar. In diesem Beispiel werden nur ganze Zahlen unterstützt.
weiter
Die Pair Klasse zur Realisierung von Listen. Eigentlich werden keine Listen implementiert, sondern Paare, eine Liste wird aus einer Reihe von Paaren zusammengesetzt wobei das ganz rechts stehende Element die leere Liste (NIL) ist.
 
In dieser Klasse werden car, cdr, isList, isPair und isEqual für Listen redefiniert.
weiter
Ein Testprogramm für die SExpr Klasse
 
Ein Testlauf: java Test

weiter

Eine Klassenhierachie für arithmetische Ausdrücke

Die abstrakte Klasse Expr legt eine Datenstruktur für arithmetische Ausdrücke fest.
 
Sie definiert eine abstrakte Funktion eval zum Auswerten von Ausdrücken. eval kann als Kern eines Interpretierers für eine Sprache verwendet werden, in der Ausdrücke mit Exemplaren der Klasse Expr dargestellt werden.
weiter
Eine konkrete Klasse Const zur Repräsentation von Konstanten, abgeleitet aus Expr.
weiter
Eine abstrakte Klasse für allgemeine einstellige Ausdrücke.
weiter
Drei konkrete Klassen für einstellige Operatoren, +, - und Konversion.
weiter
Eine abstrakte Klasse für allgemeine zweistellige Ausdrücke.
weiter
Drei konkrete Klassen für zweistellige Operatoren, +, - und *.
 
Durch zusätzliche Definition solcher Klassen kann die Menge der Ausdrücke erweitert werden, ohne an irgendeiner Stelle in existierenden Programmteilen etwas zu verändern.
 
Schlagwort: Lokale Erweiterbarkeit.
weiter
Ein einfaches Testprogramm.
 
Ein Testlauf: java Test
weiter
-->

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel