Typ-Erweiterungen II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

PROCEDURE InitCircle(VAR circle: Circle;
                     x, y, radius: INTEGER);
BEGIN
   circle.x := x; circle.y := y;
   circle.radius := radius;
END InitCircle;

*Wenn ein Record eine Erweiterung eines anderen Records ist, stehen alle Komponenten zur Verfügung.
 
*Der wesentliche Vorteil der Typ-Erweiterungen besteht in der damit verbundenen großzügigen Kompatibilität. So kann ein erweiterter Record (wie Circle) einem Record des zugehörigen Basistyps (wie z.B. GraphicalObject) zugewiesen werden. Dabei findet eine Projektion statt, d.h. die erweiternden Komponenten werden nicht kopiert.
 
VAR go: GraphicalObject; circle: Circle; rect: Rectangle;
(* ... *)
go := circle; (* OK *)
circle := go; (* not permitted *)
circle := rect; (* not permitted *)

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999