11.07.2015 Aufrufe

Übersetzung von OO-Sprachen

Übersetzung von OO-Sprachen

Übersetzung von OO-Sprachen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 3: Übersetzung <strong>von</strong> objektorientierten <strong>Sprachen</strong>3.2 Übersetzung <strong>von</strong> MethodenWie bereits vorgestellt arbeiten, Methoden auf den Instanzen einer Klasse, wobei einAustausch über Nachrichten möglich ist. Bei dem Aufruf o.m(arg1, arg2) wird dieMethode m der Objektinstanz o aufgerufen und die zwei Argumente arg1 und arg2übergeben. Beim Übersetzen <strong>von</strong> Methoden wird der Ansatz verfolgt, die Methoden inimperative Funktionen ohne Objektorientierung zu überführen, ohne dabei den Kontext(this) zu verlieren. Listing 6 zeigt allgemein und als Beispiel für die obigenMethodenaufrufe, wie diese Transformation erfolgt [WM97, S. 183].MethodeFunktionDefinition objekt.methode() fmethode(objekt, )Beispiel o.m(arg1, arg2) fm(o, arg1, arg2)Listing 6: Transformation <strong>von</strong> Methoden in FunktionenDa aufgrund des möglichen Polymorphismus <strong>von</strong> Methoden eine Eindeutigkeit alleineüber Methodennamen nicht sichergestellt werden kann, wird in Java und C++ derFunktionsname nach dem Schema [M]__[#][K][D] gebildet. [M] steht dabei für denMethodenname, [K] für den Klassennamen, [#] für die Anzahl der Zeichen desKlassennamens und [D] für die Datentypen der übergebenen Argumente. DieÜbernahme der Datentypen ist erforderlich, da aufgrund des Überladens <strong>von</strong> Methodenein Methodenname innerhalb einer Klasse nicht eindeutig ist. Eindeutigkeit kann dahererst durch den Einbezug der Datentypen gewährleistet werden [BH98, S. 103 f].// Methode Ueberweisen(double betrag);// abgeleitete Funktion Ueberweisen__11MitarbeiterDoub(Klasse-Mitarbeiterthis, double betrag);Listing 7: Beispiel für die Transformation <strong>von</strong> Methoden in FunktionenIn Listing 7 wird am Beispiel der aus Kapitel 2 bekannten Klasse Mitarbeiter dieseTransformation in eine eindeutige, imperative Funktion vorgenommen. DieseVorgehensweise stellt sicher, dass die global gültigen Funktionsnamen in jedem Falleindeutig sind und Mehrdeutigkeiten aufgrund gleicher Methodennamen inunterschiedlichen Klassen vollständig ausgeschlossen werden können.Im Anschluss daran können die Funktionen mit Hilfe der Übersetzungstechniken <strong>von</strong>traditionellen Compilern übersetzt werden.11

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!