next up previous contents index
Weiter: 13.2 Mixins Hinauf: 13 Mehrfachvererbung in Zurück: 13 Mehrfachvererbung in

13.1 Kombination von Implementation und Abstraktion

In Sprachen wie C++ ([Str86]) und Eiffel ([Mey88]), in denen Klassen die einzige Art von Modul sind, ist Vererbung die gewöhnliche Methode, um Abstraktionen zu kombinieren. Um zum Beispiel in Eiffel eine Klasse Bounded_Stack[T] zu realisieren, könnte man von einer abstrakten Klasse Stack[T] und von einer zweiten Klasse Array[T] erben. Die Klasse Array[T] würde man dann benutzen, um die abstrakten Operationen zu implementieren, die nicht von der Klasse Stack[T] definiert sind. Idealerweise sollten dabei die Array-Operationen vor dem Benutzer verborgen werden.

Diese Art von Vererbung kann in Ada bereits ohne getaggte Typen, nur unter Zuhilfenahme von Paketen erreicht werden.

package Bounded is
type Bounded_Stack(Size: Natural := 0) is private;
procedure Push(S: in out Bounded_Stack; Element: T);
procedure Pop(S: in out Bounded_Stack),
function Top(S: Bounded_Stack) return T;
private
type T_Array is array (Integer range <>) of T;
type Bounded_Stack(Size: Natural := 0) is
record
Data: T_Array(1..Size);
end record;
end Bounded;



Johann Blieberger
Wed Feb 11 09:58:52 MET 1998