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 2: Objektorientierte Programmiersprachenbzw. implementieren, wodurch sichergestellt wird, das Methoden und Attribute beiInstanziierung einer Klasse in jedem Fall zur Verfügung stehen.Listing 1 enthält für die zwei sehr verbreiteten <strong>Sprachen</strong> Java und C#, die beide keineMehrfachvererbung unterstützen, den Syntax für die Verwendung <strong>von</strong> Interfaces.// Javaclass Klassenname implements [Interfaceliste] {...}// C#class Klassenname : [Interfaceliste] {...}Listing 1: Realisierung <strong>von</strong> Schnittstellen in Java und C#Aus den Vererbungshierarchien <strong>von</strong> typisierten objektorientierten <strong>Sprachen</strong> ergebensich drei aufeinander aufbauende Regeln, die elementare Fähigkeiten der Klassen undObjektinstanzen regeln und festlegen.Die erste Regel, die Teiltypregel besagt, dass bei Erwartung eines Objektes A (z.B. beieiner Zuweisung oder als Rückgabewert einer Methode) auch Objekte einer Unterklassezugewiesen bzw. zurückgegeben werden können [WM07, S. 178]. Jedes Objekt einerUnterklasse ist automatisch auch Element der Oberklasse. Auf das soeben eingeführteBeispiel bezogen bedeutet dies, dass einer Variable vom Typ Mitarbeiter auch einObjekt vom Typ Angestellter zugewiesen werden kann (Vgl. Listing 2).Mitarbeiter M = new Angestellter();Float Betrag = M.Ueberweisen(); // Angestellter::Ueberweisen();Listing 2: Teiltyp- und Methoden-Auswahl RegelAus dieser ersten Regel resultiert unmittelbar die Methoden-Auswahl-Regel. Diesebesagt, dass in einer Unterklasse B eine <strong>von</strong> A geerbte und neu implementierte Methodeauch dann aufgerufen werden muss, wenn B als Element <strong>von</strong> A benutzt wird. Auf dasBeispiel bezogen (Vgl. Listing 2 und Abbildung 1) muss die <strong>von</strong> der KlasseAngestellter neu implementierte Methode Ueberweisen() aufgerufen werden,obwohl das Objekt <strong>von</strong> einer Variable vom Typ Mitarbeiter aufgenommen wurde.Eine Nichtbeachtung dieser Regel könnte unerwartete Auswirkungen auf dieProgrammlogik haben, sofern die Angestellter::Ueberweisen()auf ganz andereDaten zurückgreift und die vererbte FunktionMitarbeiter::Ueberweisen()verwendet würde.Diese Methoden-Auswahl-Regel stellt den Übersetzer vor eine gewisseHerausforderung, da die richtige Methodenimplementierung zur Übersetzungszeit nochnicht feststeht und erst zur Laufzeit bestimmt werden kann. Dies impliziert5

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!