NICHT MEHR LIEFERBAR
Praxiswissen Flex 3

Gerald Reinhardt
1. Auflage Dezember 2008
ISBN 978-3-89721-860-4
464 Seiten

Dieser Titel ist vergriffen und nicht mehr lieferbar!



Weitere Informationen zu diesem Buch

Volltextsuche im Buch bei Google Print

Probekapitel | Errata | Inhaltsverzeichnis | Ihr Feedback | Beispiel Code |


Errata

	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.
	

Zurück zu Praxiswissen Flex 3


Themen

Buchreihen

Special Interest

International Sites

O'Reilly China O'Reilly USA O'Reilly Japan O'Reilly Taiwan