Die Sprache im Überblick

Objekte bilden den Kern der ActionScript 3.0-Sprache – sie sind die grundlegenden Bausteine. Jede von Ihnen deklarierte Variable, jede von Ihnen geschriebene Funktion und jede von Ihnen erstellte Klasseninstanz ist ein Objekt. Man kann sich ein ActionScript 3.0-Programm als eine Gruppe von Objekten vorstellen, die Aufgaben ausführen, auf Ereignisse reagieren und miteinander kommunizieren.

Programmierer, die mit der objektorientierten Programmierung (OOP) in Java oder C++ vertraut sind, betrachten Objekte ggf. auch als Module, die zwei Arten von Komponenten enthalten: in Mitgliedervariablen oder Eigenschaften gespeicherte Daten und Verhalten, auf die über Methoden zugegriffen wird. In ActionScript 3.0 werden Objekte zwar ähnlich, aber doch etwas anders definiert. In ActionScript 3.0 sind Objekte einfach Sammlungen mehrerer Eigenschaften. Diese Eigenschaften sind Container, die nicht nur Daten, sondern auch Funktionen und andere Objekte enthalten können. Wenn eine Funktion auf diese Weise an ein Objekt angehängt ist, spricht man von einer Methode.

Während Programmierern mit Java- oder C++-Kenntnissen die Definition in ActionScript 3.0 etwas seltsam vorkommen mag, ähnelt das Definieren von Objekttypen mit ActionScript 3.0-Klassen den Verfahren, mit denen Klassen in Java oder C++ definiert werden. Der Unterschied zwischen den zwei Definitionen für ein Objekt wird dann wichtig, wenn das ActionScript-Objektmodell und andere fortgeschrittene Themen behandelt werden. In den meisten anderen Situationen steht der Begriff Eigenschaften für Klassenmitgliedervariablen im Gegensatz zu Methoden. Im Referenzhandbuch zu ActionScript 3.0 für die Adobe Flash-Plattform bezieht sich der Begriff Eigenschaften beispielsweise auf Variablen oder auf Get/Set-Eigenschaften. Der Begriff Methoden steht für Funktionen, die Teil einer Klasse sind.

Ein feiner Unterschied zwischen Klassen in ActionScript und Klassen in Java oder C++ besteht darin, dass Klassen in ActionScript nicht nur abstrakte Einheiten sind. ActionScript-Klassen werden durch Klassenobjekte repräsentiert, in denen die Eigenschaften und Methoden der entsprechenden Klasse gespeichert sind. Dies ermöglicht Techniken, die Java- und C++-Programmierern fremd vorkommen werden, wie z. B. das Einschließen von Anweisungen oder ausführbarem Code auf der obersten Ebene einer Klasse oder eines Pakets.

Ein weiterer Unterschied zwischen ActionScript-Klassen und Java- oder C++-Klassen besteht darin, dass jede ActionScript-Klasse ein so genanntes Prototypobjekt aufweist. In früheren Versionen von ActionScript wurden Prototypobjekte zu Prototypketten verknüpft, die gemeinsam als Grundlage für die gesamte Klassenvererbungshierarchie dienten. In ActionScript 3.0 spielen Prototypobjekte im Vererbungssystem jedoch nur noch eine untergeordnete Rolle. Das Prototypobjekt kann dennoch als Alternative zu statischen Eigenschaften und Methoden verwendet werden, wenn Sie eine Eigenschaft und deren Wert für alle Instanzen einer Klasse freigeben möchten.

In der Vergangenheit konnten erfahrene ActionScript-Programmierer die Prototypkette mit speziellen integrierten Sprachelementen direkt bearbeiten. Jetzt verfügt die Sprache über eine ausgereiftere Implementierung einer klassenbasierten Programmierschnittstelle, und viele dieser speziellen Sprachelemente (wie __proto__ und __resolve ) sind kein Teil der Sprache mehr. Darüber hinaus schließen die Optimierungen des internen Vererbungsmechanismus, der wesentliche Leistungssteigerungen ermöglicht, einen direkten Zugriff auf den Vererbungsmechanismus aus.