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