Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Übungen || Lösung 9
DEFINITION RationalNumbers
(*
* Entwicklung objekt-orientierter Bibliotheken, Aufgabe 16
*
* Datentyp fuer rationale Zahlen.
*)
DEFINITION RationalNumbers;
IMPORT Events, Operations;
TYPE
RationalNumber = POINTER TO RationalNumberRec;
RationalNumberRec =
RECORD
(Operations.OperandRec)
END;
CONST
zeroDivisor = 0;
overflow = 1;
invalidOperand = 2;
errors = 3;
TYPE
ErrorCode = SHORTINT;
ErrorEvent = POINTER TO ErrorEventRec;
ErrorEventRec =
RECORD
(Events.EventRec)
errorcode: ErrorCode;
op: Operations.Operation;
op1, op2: RationalNumber;
END;
VAR
error: Events.EventType;
errormsg: ARRAY errors OF Events.Message;
PROCEDURE Valid(number: RationalNumber): BOOLEAN;
(* TRUE for results of correct operations, otherwise FALSE. *)
(* On default, error events are queued with invalid operands. *)
PROCEDURE Convert(value: LONGINT): RationalNumber;
PROCEDURE Entier(number: RationalNumber): LONGINT;
PROCEDURE Float(number: RationalNumber): LONGREAL;
END RationalNumbers.
WS 97/98 || Entwicklung objekt-orientierter Bibliotheken || Übungen || Lösung 9
Martin Hasch, 23. Januar 1998