Adobe Air (wiwobooks.com Release)
umsetzt. In der Praxis kommt es dabei oft vor, dass – für die aufrufende Komponente unsichtbar – die Verantwortung einer Aufgabe so lange delegiert, also weitergereicht wird, bis sie von irgendeinem Glied dieser Delegationskette abgearbeitet wird. Und jetzt stellen Sie sich einmal den Aufwand vor, wenn Sie diese Delegationskette im Zuge einer prozeduralen Programmierung immer im Blickfeld behalten müssten … von den weitverbreiteten Änderungen Ihres Auftraggebers in letzter Minute, das heißt kurz vor der Deadline einmal ganz zu schweigen!
Eine Möglichkeit der Delegation ist die der Spezialisierung auf eine bestimmte Aufgabe innerhalb einer Klassen-Vererbungshierarchie. Stellen Sie sich in Anlehnung an unser Hundebeispiel einmal eine übergeordnete Klasse Vierbeiner vor, die über eine allgemeine Methode gibLaut() verfügt, die von den verschiedensten Unterklassen wie Katze , Hund , Elefant oder Gibbon jeweils unterschiedlich spezifisch umgesetzt wird.
Nicht immer ist jedoch die Vererbung von Methoden und Eigenschaften möglich – insbesondere, wenn Sie die Methoden oder Eigenschaften mehrerer Klassen in einer neuen Klasse verwenden möchten. Was wäre z. B., wenn Sie Eigenschaften der Klasse Saeugetier mit Methoden der Klasse Landtier kombinieren möchten?
Komposition
Die meisten objektorientierten Programmiersprachen unterstützen nur die Vererbung einer einzigen Überklasse (ähnlich, wie man zwar mehrere Kinder, aber nur einen »Satz« biologischer Eltern haben kann). Sollen mehrere Klassen kombiniert werden, bietet sich das Mittel der Komposition an.
Bei der Komposition von Klassen verfügt eine Klasse über eine Instanz einer anderen Klasse in Form einer Eigenschaft. Was das bedeutet und was daran unterschiedlich im Vergleich zum Prinzip der Vererbung ist, können Sie an unserem Beispiel gut nachvollziehen: Ein Pudel ist ein Hund (Vererbung), aber hat ein Frauchen bzw. Herrchen (Komposition: Der Pudel ist kein Frauchen ).
Is-A, Has-A, Uses-A
Aus dem Englischen entlehnt, werden demnach bei der Entscheidung, ob in einem konkreten Fall die Vererbung oder die Komposition die richtige Antwort auf die Frage der Ausgestaltung einer Abhängigkeit einer Klasse von einer anderen ist, gerne die drei Fragen Is-A, Has-A oder Uses-A gestellt:
Is-A (ist-ein) träfe auf den Pudel zu, der ein Hund ist, Has-A (hat-ein) oder Uses-A (benutzt-ein) auf das Frauchen des Pudels. Dabei besteht der Unterschied zwischen Has-A und Uses-A im Wesentlichen in der Frage, ob das entsprechende Objekt noch an anderer Stelle verwendet bzw. von dem aktuellen Objekt erstellt (instantiiert) wird oder nicht. Aber keine Angst: Die Unterscheidung zwischen Has-A und Uses-A bereitet auch OOP-Veteranen immer wieder Kopfzerbrechen.
Prototypbasierte Programmierung
In Programmiersprachen, in denen Klassen als Sprachelement nicht zur Verfügung stehen, wird eine Vererbungsstruktur innerhalb der Objekte gerne mithilfe von Prototypen umgesetzt. Dabei wird statt einer (zu instantiierenden) Klasse eine einzelne Objektinstanz als Prototypobjekt behandelt. Neue Objekte dieses Typs entstehen, indem das Prototypobjekt geklont wird. Das hat den Vorteil, dass ein Prototypobjekt zur Laufzeit angepasst und verändert werden kann und darauf folgende Klon-Instanzen die geänderten Eigenschaften »erben«, es erfüllt somit also die Kriterien einer dynamischen Klasse. Nachteilig ist bei diesem Ansatz, dass der Quelltext zur Kompilierzeit nicht so eindeutig ist wie bei der Verwendung von Klassen.
JavaScript als Dialekt der dritten Edition von ECMAScript (ECMA-262) verfügt über objektorientierte Programmierung nur in Form von prototypbasierter Programmierung.
Auch ActionScript bis Version 2.0 war wie JavaScript ein Dialekt der dritten Edition von ECMAScript und somit prototypbasiert, seit Version 3.0 ist ActionScript jedoch eine Implementation des ECMAScript-Standards der vierten Generation und verfügt somit über das Sprachkonstrukt der Klassen und der damit einhergehenden Mechanismen.
Fassen wir also die wichtigsten Aspekte der objektorientierten Programmierung noch einmal zusammen:
Abstraktion
Verkapselung
Vererbung
Polymorphismus
Delegation
Sie sehen, wohin die Reise geht: Die objektorientierte Programmierung bietet eine Vielzahl von Mechanismen, die Ihnen das Erstellen von abstrahiertem Quelltext, der so allgemein wie möglich und spezifisch wie nötig ist, erleichtern bzw. ermöglichen soll.
1.3 Integrierte Laufzeitumgebung AIR
Wenn ich in
Weitere Kostenlose Bücher