16.8 Getter und Setter
ActionScript 2.0\getter setter
Falls eine Eigenschaft mit Funktionalität gekoppelt sein soll, dann bieten sich Getter-/Setter-Methoden an. Diese Methoden stehen nach außen als Eigenschaften zur Verfügung, obwohl sich dahinter komplexe Methoden verbergen dürfen. Jedes Mal, wenn solch eine Eigenschaft verwendet wird, dann ruft Flash bei einem lesenden Zugriff den Getter auf, der den Wert der Eigenschaft als Ergebnis zurückliefert. Bei einem schreibenden Zugriff kommt der Setter zum Einsatz. Dieser erhält als Parameter den gewünschten Wert der Eigenschaft und kann damit beliebig verfahren.
16.8.1 addProperty
In ActionScript 1 müssen Getter-/Setter-Methoden mit Hilfe der zur Object-Klasse gehörenden Methode addProperty erzeugt werden. Diese Methode steht für alle Objekte in Flash zur Verfügung, da grundsätzlich alle Klassen die Eigenschaften und Fähigkeiten der Object-Klasse erben. Doch der Einsatz dieser Methode gestaltet sich verglichen mit den neuen Möglichkeiten in ActionScritp 2.0 recht umständlich. Zuerst müssen Funktionen definiert und diese dann der Klasse mit addProperty im Prototypen hinzugefügt werden Die Methode addProperty erfordert als Parameter den Namen der Eigenschaft und eine Funktion zum Ermitteln (getter) sowie eine Funktion zum Setzen (setter) der Eigenschaft:
// ActionScript 1-Code!
function Frau() {
this._alter = null;
}
Frau.prototype.setAlter = function(value) {
this.alter = value;
};
Frau.prototype.getAlter = function(value) {
trace("Der Zugriff auf das Alter ist verboten!");
return null;
};
Frau.prototype.addProperty("alter", Frau.prototype.getAlter, Frau.prototype.setAlter);
//
eineFrau = new Frau();
eineFrau.alter = 27;
// Erzeugt eine Fehlermeldung
trace(eineFrau.alter);
16.8.2 Getter und Setter in ActionScript 2.0
Das Anlegen von Getter- und Setter-Methoden gestaltet sich in ActionScript 2.0-Klassen deutlich einfacher als mit ActionScript 1.
Getter-Methode
Eine Getter-Methode definieren Sie, indem Sie eine Methode mit dem Namen der Eigenschaft erstellen und dieser das Schlüsselwort get voranstellen. Dabei muss eine Getter-Methode einen Wert zurückgeben und darf gleichzeitig keinen Wert erhalten:
function get eigenschaft():Typ {
return _eigenschaft;
}
Setter-Methode
Eine Setter-Methode erstellen Sie auf die gleiche Art und Weise mit dem Unterschied, dass eine Setter-Methode keinen Wert zurückgeben darf, optional aber den Wert erhalten kann, der der zugehörigen Eigenschaft zugewiesen werden soll. Außerdem kommt das Schlüsselwort set anstelle von get zum Einsatz.
class Klasse {
private var _eigenschaft;
function set eigenschaft(wert:Typ) {
_eigenschaft = wert;
}
function get eigenschaft():Typ {
return _eigenschaft;
}
}
Anschließend nutzen Sie die Getter-/Setter-Methoden wie normale Eigenschaften:
objekt = new Klasse();
objekt.eigenschaft = objekt.eigenschaft + 123;
Die folgende Klasse erlaubt beispielsweise nur das Setzen, aber nicht das Auslesen des Alters einer Frau:
class Frau {
private var _alter:Number;
function get alter():Number {
trace("Der Zugriff auf das Alter ist verboten!");
return null;
}
function set(wert:Number) {
_alter = wert;
}
}
Die Verwendung dieser Getter-/Setter-Methoden als Eigenschaft unterscheidet sich nicht von der Variante in ActionScript 1:
eineFrau = new Frau();
eineFrau.alter = 27;
// Erzeugt eine Fehlermeldung
trace(eineFrau.alter);
|