Neu in ActionScript 3: Sealed Classes
Hier nun der zweite Teil der “Neu in ActionScript 3″-Reihe… diesmal geht es um versiegelte Klassen (Sealed Classes).
Während es in ActionScript 2 noch möglich war für Objekte zur Laufzeit neue Methoden und Eigenschaften zu deklarieren geht dies in ActionScript 3 nun nicht mehr. Was bedeutet das? Ganz einfach:
ActionScript 2!
class User { var username; } var user : User = new User(); user.email = "dynamic@class.com";
Der oben stehende Code wäre in AS2 problemlos ausführbar, d.h. obwohl die Klasse MyClass gar keine Eigenschaft myNewVar besitzt können wir sie dynamisch erzeugen und mit einem Wert versehen. Meinem Verständnis von Objektorientierung hat das immer irgendwie wiedersprochen, da ein Objekt nicht mehr eine genaue Instanz der Klasse ist sondern nur deren Member besitzt sonst aber auch alles andere beinhalten kann (ohne div. Vererbungsstrukturen). Das bedeutet auch das zwei Objekte derselben Klasse nicht zwangsläufig die selbe Struktur beinhalten und das kann in größeren Anwendung schnell für Chaos sorgen.
Der ein oder andere wird dieses Konzept auch von Javascript kennen. In Actionscript 3 ist es nun aber so das ein solches Konstrukt direkt zu einem Compiler-Fehler führen würde, wie wir es z.B. auch in Java oder auch PHP erwarten würden.
Das Schlüsselwort dynamic
Wer trotzdem mit dynamischen Klassen arbeiten möchte, bzw. diese Funktionalität bei der Migration alter Projekte dringend benötigt kann mittels dem Schlüsselwort dynamic genau das erreichen:
ActionScript 3
dynamic class User { var username:String; } var user : User = new User(); user.email = "dynamic@class.com";
Wenn möglich sollte auf den Einsatz komplett verzichtet werden, gerade bei umfangreichen Projekten. Falls es aber trotzdem mal nötig sein sollte empfiehlt es sich auch die Klasse als final zu deklarieren damit durch eine Vererbung nicht noch mehr “Unordnung” entsteht.
Für mich war diese Änderung sehr wichtig und vor allem auch notwendig… was vielleicht auch daran liegt das ich sowieso kein Freund von dynamischen Klassen bin.
Der nächste Beitrag zu diesem Thema wird wahrscheinlich die neuen und verbesserten Namespaces behandeln, wo auch kurz nochmal auf ein AS2 Problem im Bezug auf dynamische Klassen zum tragen kommt. Bis dann…
Andere Beiträge der Reihe:
- Neu in ActionScript 3: Grundlagen
- Neu in ActionScript 3: Namespaces
- Neu in ActionScript 3: Reguläre Ausdrücke
- Neu in ActionScript 3: Typsicherheit zur Laufzeit
- Neu in ActionScript 3: try..catch und eigene Exceptions
- Neu in ActionScript 3: Die neuen Datentypen
Danke für das Lesen dieses Eintrags. Du kannst nun einen Kommentar abgeben (0) oder einen Trackback hinterlassen.
Infos
Datum: Monday, 18. February 2008Eingeordnet unter Programmierung
Du kannst die Antworten zu diesem Eintrag durch den RSS 2.0 Feed verfolgen. Du kannst einen Kommentar abgeben, oder einen Trackback.
Vorheriger Eintrag: Neu in ActionScript 3: Grundlagen »
Nächster Eintrag: Achtung Umzug nach www.web-programmer.de »
- Adobe AIR 1.1 veröffentlicht
- PHP date für ActionScript 3
- Ubuntu 8.04 LTS (Hardy Heron) veröffentlicht
- MySQL Workbench released
- Adobe AIR unter Ubuntu 7.10
- Was AIR nicht kann…
- Was ist das eigentlich: Adobe Flex
- Neu in ActionScript 3: Die neuen Datentypen
- Beta 1 vom Internet Explorer 8 (IE8) erschienen
- Auf zur Flashforum Konferenz 2008

