prev up next

Mehrfachvererbung

Bei der Mehrfachvererbung erbt ein Objekttyp die Eigenschaften von mehreren Obertypen. Abbildung 16.13 zeigt ein Beispiel dafür. Der Objekttyp Hiwi erbt


Beispiel für Mehrfachvererbung

Die Syntax könnte lauten:

class HiWis extends Studenten, Angestellte (extent AlleHiwis) {
  attribute short Arbeitsstunden;
  ...
};

Nun wird allerdings das Attribut Name sowohl von Angestellte als auch von Studenten geerbt. Um solchen Mehrdeutigkeiten und den damit verbundenen Implementationsproblemen aus dem Weg zu gehen, wurde in der Version 2.0 von ODL das Schnittstellen-Konzept (engl interface) eingeführt, das es in ähnlicher Form auch in der Programmiersprache Java gibt.

Eine interface-Definition ist eine abstrakte Definition der Methoden, die alle Klassen besitzen müssen, die diese Schnittstelle implementieren. Eine Klasse im ODBG-Modell kann mehrere Schnittstellen implementieren, darf aber nur höchstens von einer Klasse mit extends abgeleitet werden

Also würde man für die Angestellten lediglich die Schnittstelle AngestellteIF festlegen. Die Klasse HiWis implementiert diese Schnittstelle und erbt den Zustand und die Methoden der Klasse Studenten. Die Liste der Schnittstellen, die eine Klasse implementiert, wird in der Klassendefinition nach dem Klassennamen und der möglichen extends-Anweisung hinter einem Doppelpunkt angegeben. Zusätzlich muß der nicht mitgeerbte, aber benötigte Teil des Zustandes der ursprünglichen Angestellten-Klasse nachgereicht werden.

interface AngestellteIF {
  short Alter();
  long  Gehalt();
};

class Angestellte : AngestellteIF (extent AlleAngestellte) {
  attribute long   PersNr;
  attribute string Name;
  attribute date   GebDatum;
};

class Hiwis extends Studenten : AngestellteIF (extent AlleHiwis) {
  attribute long  PersNr;
  attribute date  GebDatum;
  attribute short Arbeitsstunden;
};

Man beachte, daß die HiWis nun nicht in der Extension AlleAngestellten enthalten sind. Dazu müßte man diese Extension der Schnittstelle AngestellteIF zuordnen, was aber nach ODMG-Standard nicht möglich ist. Konflikte bei gleichbenannten Methoden werden im ODBG-Modell dadurch vermieden, daß Ableitungen, bei denen solche Konflikte auftreten würden, verboten sind.


prev up next