Neu in ActionScript 3: Namespaces

Manch einer wird jetzt sagen: “Moment mal, die gab es aber ja schon in ActionScript 2!!!”
Das stimmt, aber die Beiden (private & public) aus AS2 waren eher als Orientierungshilfe für den Programmierer zu verstehen als denn richtige Namespaces…wieso? Seht selbst:

class MyClass
{
    var myPrivateMember:String
        = "Don't change me from out of this class";

    public function getMyPrivateMember()
    {
        return this.myPrivateMember;
    }
}

var myObj:MyClass = new MyClass();
myObj["myPrivateMember"] = "Not the original value";
trace( myObj.getMyPrivateMember() );
//OUTPUT: Not the original value

Also ich finds jetzt nicht so toll…aber mit ActionScript 3 ist das ja nun besser geworden, d.h. die Namespaces funktionieren so wie man das erwartet und es, neben der Möglichkeit Eigene zu definieren, sind zwei Neue hinzugekommen: protected & internal.

Hier nochmal ein Überblick:

Schlüsselwort Sichtbarkeit/Zugriff
public Methoden/Eigenschaften mt diesem Schlüsselwort können von
jedem Scope aufgerufen werden.
private Nur von Methoden/Eigenschaften innerhalb der jeweiligen Klasse.
Selbst vererbte Klassen haben keinen Zugriff
protected Ähnlich wie private jedoch mit dem
Unterschied das auch veerbte Klassen Zugriff haben
internal Sowohl von innerhalb und ausserhalb der deklarierenden Klassen,
solange man sich im selben Paket befindet.

Eigene Namespaces deklarieren und verwenden

Komplett neu in ActionScript 3 ist die Möglichkeit eigene Namespaces zu verwenden. Und weil Code mehr sagt als tausend Worte:

package de.web-programmer.as3Demo
{
    public namespace myNs = “http://www.web-programmer.de“;
}
--------
package de.web-programmer.as3Demo
{
   class MyClass
   {
        use_namespace myNs;
        myNs var myString:String; 

        myNs function doSome()
        {
            ...
        }

   }
}

Über Sinn und Unsinn lässt sich sicher streiten… ich z.B. bin eigentlich bisher immer recht gut mit den herkömmlichen Namespaces hingekommen, aber wenn man z.B. Anwendungen hat die externen Code einbinden oder große Bibliotheken schreibt kann es durchaus sein das sich dadurch interessante Möglichkeiten geben.

Andere Beiträge der Reihe:


Danke für das Lesen dieses Eintrags. Du kannst nun einen Kommentar abgeben (0) oder einen Trackback hinterlassen.



Kommentar hinterlassen