SAI || Wintersemester 1997/98 || Entwicklung objekt-orientierter Bibliotheken || Übungen

Übungen zu Entwicklung objekt-orientierter Bibliotheken
Blatt 9 (9. 1. - 16. 1. 1998)


Aufgabe 16 (20 Punkte)

Das Bibliotheksmodul Operations bietet eine Abstraktion für arithmetische Grundoperationen mit Operanden selbstdefinierten Typs. Entwickeln Sie einen Datentyp für rationale Zahlen (analog zur 3. Aufgabe), der eine Erweiterung von Operations.Operand darstellt. Unterstützt werden sollen alle notwendigen Eigenschaften solcher Operanden -- insbesondere Persistenz -- und die vier Grundrechenarten. Definieren Sie auch Ereignisse für eine Fehlerbehandlung im Falle von Division durch Null oder Überlauf.

Das Modul, das den Datentyp definiert und implementiert (es heiße etwa RationalNumbers), sollte noch Funktionen zum Konvertieren einer ganzen Zahl in einen rationalen Operanden und eines rationalen Operanden in z.B. eine REAL-Zahl zur Verfügung stellen. Da Operanden dividiert werden können, ist es nicht nötig, beliebige Brüche in einem einzigen Schritt zu erzeugen.

Die formatierte Ausgabe rationaler Zahlen soll über die Abstraktion PrintableObjects unterstützt werden.

Verwenden Sie Ihr Modul RationalNumbers, um eine Art Taschenrechner für rationale Zahlen zu implementieren. Dieses Programm kann als Null-Adreß-Maschine arbeiten, d.h., Befehle zum Füllen, Leeren und Anzeigen eines Operanden-Stacks sowie Operationen, die auf die jeweils obersten Stack-Elemente anzuwenden sind, akzeptieren. Um die Persistenz der Operanden zu demonstrieren, soll es ferner möglich sein, eine rationale Zahl in eine Datei zu schreiben oder von dort wieder einzulesen.


SAI || Wintersemester 1997/98 || Entwicklung objekt-orientierter Bibliotheken || Übungen

Martin Hasch, Januar 1998