11.07.2015 Aufrufe

Übersetzung von OO-Sprachen

Übersetzung von OO-Sprachen

Übersetzung von OO-Sprachen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Kapitel 3: Übersetzung <strong>von</strong> objektorientierten <strong>Sprachen</strong>Abbildung 5: Klassen mit MethodentabellenDer Übersetzer bindet dabei Methodennamen an die Indizes innerhalb einerMethodentabelle und kann damit die dem Index zugeordnete Implementierung aufrufen.Eine Unterklasse erbt eine Kopie der Methodentabelle der Oberklasse, wobei für alle inder erbenden Klasse neu implementierten Methoden in der Methodentabelleentsprechend ein Verweis auf die neue Implementierung vorgenommen wird. An dasEnde dieser Methodentabelle werden erstmals implementierte Methoden angehängt,siehe z.B. Arbeiter::LohnBerechnen() aus dem Beispiel. Alle Arbeiter Objekte,die instanziiert werden, teilen sich dabei eine Methodentabelle, da diese für alleInstanzen gleich ist.Ein besonderes Augenmerk muss im Rahmen der Vererbung auf die verlinkteMethodentabelle gelegt werden. In Kapitel 2.2.2 wurde die Methoden-Auswahl-Regelvorgestellt, die an allen Stellen, wo ein Mitarbeiter-Objekt erwartet wird, auch einAngestellten- oder Arbeiter-Objekt zulässt. Sofern also einem Arbeiter-Objekt einerVariable vom Typ Mitarbeiter-Objekt zugewiesen wird, muss die Methodentabelle desArbeiter-Objektes <strong>von</strong> dem Mitarbeiter-Objekt geladen werden, da nur so die richtigeMethodenimplementierung ermittelt werden kann.Dieses Beispiel zeigt, dass für Vererbungsrelationen verschiedene sogenannte Sichtenauf ein Objekt definiert werden müssen bzw. die Möglichkeit bestehen muss, zwischenverschiedenen Sichten hin und her zu schalten [BH98, S. 107]. In diesem Fall erbt dieKlasse Arbeiter <strong>von</strong> der Klasse Mitarbeiter und kann so auch einem Objekt <strong>von</strong> TypMitarbeiter zugewiesen werden [BH98, S: 32]. Um jedoch die richtigeMethodenimplementierung wählen zu können, muss während der Laufzeit dieMethodentabelle der Arbeiter-Klasse vom Objekt der Klasse Mitarbeiter geladenwerden.3.3.2 MehrfachvererbungenBei der bisherigen einfachen Vererbung erbte immer eine Unterklasse <strong>von</strong> maximaleiner Oberklasse. Von Mehrfachvererbung spricht man dann, wenn eine Klasse <strong>von</strong>mindestens zwei Oberklassen erbt und die daraus resultierende Klassenhierarchiekeinen Baum, sondern einen gerichtete azyklische Graphen ergibt. Diese fehlendeeindeutige Klassen-Wurzel führt zu verschiedenen Problemen, wie z.B. zuMehrdeutigkeiten bei der Benennungen <strong>von</strong> Methoden und Attributen. Fragestellungen13

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!