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

SExpr
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
Atom
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
Symbol
Die Symbol Klasse mit redefiniertem isEqual Prädikat und einer toString Funktion.
weiter
Nil
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
Number
Eine Klasse für Zahlen. Zahlen sind ebenfalls atomar. In diesem Beispiel werden nur ganze Zahlen unterstützt.
weiter
Pair
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
Test
Ein Testprogramm für die SExpr Klasse
 
Ein Testlauf: java Test

weiter

Eine Klassenhierachie für arithmetische Ausdrücke

Expr
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
Const
Eine konkrete Klasse Const zur Repräsentation von Konstanten, abgeleitet aus Expr.
weiter
UnaryExpr
Eine abstrakte Klasse für allgemeine einstellige Ausdrücke.
weiter
UnaryPlus,
UnaryMinus,
IntToDouble
Drei konkrete Klassen für einstellige Operatoren, +, - und Konversion.
weiter
BinaryExpr
Eine abstrakte Klasse für allgemeine zweistellige Ausdrücke.
weiter
BinaryPlus,
BinaryMinus,
Mult
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
Test
Ein einfaches Testprogramm.
 
Ein Testlauf: java Test
weiter
-->
ist-ein-Beziehungen und Vererbung

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