Im 1., korrigierten Nachdruck werden folgende Errata berücksichtigt:
Seite 38:
Im Kasten "Kommandozeilenbefehle" funktionieren einige der genannten
Befehle nur unter Windows. Mit dieser Notation können Sie auch auf
anderen Plattformen damit arbeiten:
cd Verzeichnis So wechseln Sie in ein existierendes Verzeichnis.
Unter Windows werden Verzeichnisse mit einem
Backslash (\) getrennt, unter Linux und auf dem Mac
nutzen Sie dafür den Slash (/).
cd .. Mit diesem Befehl können Sie eine Verzeichnisebene
nach oben wechseln.
cd\ Wechseln Sie mit diesem Befehl unter Windows in das
Hauptverzeichnis (root) des Laufwerkes.
cd / Wechseln Sie mit diesem Befehl unter Linux oder auf
dem Mac in das Hauptverzeichnis (root) des Laufwerkes.
Seite 61:
Der Code im Abschnitt "ActionScript-Befehle im MXML-Tag" müsste korrekt
heißen:
Seite 67ff:
Im Abschnitt "Eine Funktion anlegen" wird Alert fälschlicherweise als
Funktion bezeichnet, tatsächlich handelt es sich um eine Klasse.
Seite 83 bis 91
Auf den Seiten 78 bis 91 wird beschrieben, wie Sie verschiedene Methoden für
eine Klasse erstellen und anwenden. Dies wird am Beispiel der Klasse Mensch
und den Methoden alter, anredePruef und landPruef gezeigt.
Grundsätzlich gibt es für jede Klasse, die in ActionScript angelegt wird,
Eigenschaften und Methoden. Die Eigenschaften einer Klasse werden durch
die Zuweisung eines Wertes definiert. In unserem Beispiel sind es das
Geburtsjahr und das Geschlecht. Die Methoden einer Klasse hingegen werden
in Form von Programm-Routinen festgelegt. Bei der Definition einer Klasse
werden diese Methoden wie eine Funktion in der Programmierung angelegt.
Die Definition und die Anwendung dieser Methoden kann auf verschiedene
Weisen erfolgen. Ich habe mich im Buch für eine Variante entschieden, die vor
allem Neulingen in der Programmierung entgegenkommt, weil sie relativ einfach
ist. Dieser Aufgabe kann man sich aber auch mit Methoden der Objektorientierten
Programmierung nähern. Diese Herangehensweise hat große Vorteile, ist aber
etwas komplexer. Der Vollständigkeit halber wird im Folgenden erklärt, wie
Sie die Methode alter auf die Klasse Mensch nach den Prinzipien der
Objektorientierten Programmierung behandeln würden.
Zunächst zu dem Weg, den ich im Buch eingeschlagen habe: In unserem Beispiel
wird das Alter der angelegten Person berechnet, indem die Differenz zwischen
dem aktuellen Jahr (bei der Veröffentlichung des Buches 2008) und dem
angegebenen Geburtsjahr gebildet wird. Das Geburtsjahr wird als Eigenschaft
bei der Erzeugung des Objektes ichSelbst zugewiesen. Auf Seite 83 wird diese
Eigenschaft als numerische Variable definiert und weiter unten der Wert 1967
zugewiesen:
public var geburtsjahr:Number;
ichSelbst.geburtsjahr = 1967;
Um das Alter nun berechnen zu können, wird bei der Erzeugung der Klasse Mensch
eine Programm-Routine in Form einer Funktion angelegt, die anschließend als
Methode der Klasse benutzt werden kann. Diese Definition wird auf der Seite 84
beschrieben:
public function alter(uebergabeGeburtsjahr:Number):Number
{
var ergebnis:Number;
ergebnis=2008 - uebergabeGeburtsjahr;
return ergebnis;
}
Bei der Erzeugung dieser Methode wird innerhalb der Klammer die Variable
uebergabeGeburtsjahr:Number angegeben, die in der Routine benutzt wird, um die
Differenz zwischen dem Jahr 2008 und dem Geburtsjahr zu berechnen. Die Variable
ergebnis:Number dient der Übergabe des berechneten Ergebnisses an die aufrufende
Stelle. Die aufrufende Stelle ist in unserem Beispiel der auf Seite 83 definierte
Layout-Container panelAlter, dessen Eigenschaft text mit dem Ergebnis aus der
Methode alter aufgefüllt wird:
panelAlter.text = String(ichSelbst.alter(ichSelbst.geburtsjahr));
Betrachten wir nun den Teil auf der rechten Seite des Gleichheitszeichens. Der
String dient dazu, den zurückgegebenen Wert als Text im Panel anzuzeigen. Die
Methode alter wird in der Klammer aufgerufen und der aktuelle Wert des Geburts-
jahres übergeben. In unserem Fall ist es die Eigenschaft ichSelbst.geburtsjahr,
die vorher mit 1967 definiert wurde. Dieser Wert wird dann innerhalb der
aufgerufenen Methode verarbeitet, als Ergebnis wird die Zahl 41 zurückgeliefert
und im Panel angezeigt. Das Grundprinzip besteht also darin, dass beim Aufruf
der Methode alter() der Wert für die Berechnung mit übergeben wird.
Dieses Verfahren lässt sich auch objektorientiert beschreiben. Die Übergabe
des Geburtsjahres beim Aufruf der Methode kann entfallen, wenn die Eigenschaft
geburtsjahr bereits bei der Definition der Klasse festgelegt wird. Daraus
ergeben sich notwendige Anpassungen im Code, die im Folgenden beschrieben
werden.
Zunächst muss die Eigenschaft geburtsjahr bei der Definition der Klasse berück-
sichtigt werden. Auf der Seite 79 werden im unteren Teil die Eigenschaften
definiert, die um die Eigenschaft geburtsjahr ergänzt werden muss:
public class Mensch()
{
public var vorname:String;
...
public var geburtsjahr:Number;
}
Anschließend müssen wir die Definition der Methode alter() auf Seite 84 anpassen.
Hier kann die Variable in der Klammer weggelassen werden und bei der Berechnung
direkt auf die Eigenschaft des angelegten Objektes zugegriffen werden. Das
Schlüsselwort this wird dabei als Bezug zum aufrufenden Objekt eingesetzt.
public function alter():Number
{
var ergebnis:Number;
ergebnis=2008 - this.geburtsjahr;
return ergebnis;
}
Schließlich muss nun der Aufruf der Methode angepasst werden.
panelAlter.text = String(ichSelbst.alter());
Die Übergabe des Wertes für die Eigenschaft geburtsjahr ist nun nicht mehr
erforderlich. Die Methoden anredePruef() und landPruef() können auf die
gleiche Weise angepasst werden.
Seite 84
Um ein korrektes Ergebnis für alter() zu erhalten, müssen Sie als Bezugsjahr
2009 angeben (statt 2008 wie zur Drucklegung des Buches).
public function alter():Number
{
var ergebnis:Number;
ergebnis = 2009 - this.geburtsjahr;
return ergebnis;
}
Seite 86
Auf dieser Seite ist die Bezeichnung der aufgerufenen Funktion falsch.
Korrekt muss es heißen:
public function anredePruef(uebergabeGeschlecht:String):String
{
}
Und weiter unten:
public function anredePruef(uebergabeGeschlecht:String):String
{
var anrede:String;
}
public function anrede():String muss richtig heissen public function
anredePruef():String
Seite 140
Hier hat sich bei der Beschreibung des Data-Bindings ein Fehler eingeschlichen.
Wenn Sie mithilfe von Data Binding mehrere Variablen angeben wollen, müssen Sie
die Data Bindings nicht wie im Text beschrieben mit +-Zeichen voneinander
trennen, sondern sie werden ohne Trennzeichen hintereinander geschrieben. Die
Angabe der Quelle erfolgt über den Parameter source. Korrekt müsste es also auf
Seite 140 heißen:
<mx:Image source="{speicherort}{datei}" />
Und weiter unten dann:
<mx:Image source="{speicherort}{datei}.jpg" />
Kapitel 14
In diesem Kapitel geht es um die Arbeit und den Datenaustausch mit einem
Web- und einem Datenbankserver. Diese Anleitung ist auf ein Mimimum
beschränkt und sollte in der beschriebenen Form ausschließlich lokal
auf dem heimischen Computer so eingesetzt werden. Für den Einsatz
der Servertechnologie in der Praxis ist es notwendig, zusätzliche
Sicherheitsrichtlinien zu berücksichtigen. Zum Beispiel müssen die Inhalte,
die in einer Datenbank eingetragen werden sollen, unbedingt geprüft werden.
In diesem Kapitel ging es mir vorrangig um die Verfahrensweise beim
Datenaustausch, alles weitere hätte den Rahmen des Kapitels gesprengt.