Weiter: 12.4 Ein allgemeines
Hinauf: 12 Objektorientierte Konzepte
Zurück: 12.2 Mehrfache Implementationen
Eine der grundlegenden Operationen in der objektorientierten Programmierung
ist es, eine Operation auf eine Menge von unterschiedlichen Elementen
einer Menge anzuwenden.
Die Elemente müssen dazu nur einen gemeinsamen Vatertyp haben und besagte
Operation muß diesem Vatertyp bekannt sein.
Als Beispiel betrachten wir:
type Element is
Wir haben also einen abstrakten Typ Iterator mit einer
primitiven Operation Action eingeführt.
Die Prozedur Iterate vollführt eine Schleife über die ganze Menge
und ruft unter Verwendung des Dispatching-Mechanismus die Prozedur
Action auf, die zu den Typen der einzelnen Mengenelementen gehört.
Eine einfache Anwendung dieses Iterators, nämlich das Zählen der Elemente
einer Menge könnte wie folgt aussehen.
package Sets.Stuff is
function Count(S: Set) return Natural;
end Sets.Stuff;
package body Sets.Stuff is
type Count_Iterator is new Iterator with
record
Result: Natural := 0;
end record;
procedure Action(
E: in out Element;
I: in out Count_Iterator) is
begin
I. Result := I.Result + 1;
end Action;
function Count(S: Set) return Natural is
I: Count_Iterator;
begin
Iterate(S, I);
return I.Result;
end Count;
end Sets.Stuff;
Johann Blieberger
Wed Feb 11 09:58:52 MET 1998