AS3-Tutorium: Flash: Calculator 01 integer
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:
| Korrektheit: 4 (großteils überprüft) |
Umfang: 1 (zu gering) |
Quellenangaben: 5 (vollständig vorhanden) |
Quellenarten: 5 (ausgezeichnet) |
Konformität: 5 (ausgezeichnet) |
AS3-Tutorium: Calculator: Flash | Flex
Flash: Übersicht | Teil 1 | Teil 2
Taschenrechner
In diesem Teil des Tutoriums wird beschrieben, wie ein einfacher Taschenrechner implementiert werden kann. Dieser kann nur Interzahlen verarbeiten. Auf Komma- und Exponential-Darstellungen wird ebenso verzichtet, wie auf ein Fehlerbehandlung dei Division durch Null.
<swf width="300" height="420">http://glossar.hs-augsburg.de/beispiel/tutorium/flash_cs5/calculator/calculator_01_integer/Calculator01Flash11.swf</swf> Musterlösung (SVN-Repository)
Datenmodell
Im Folgenden wird ein Klassendiagramm beschrieben, dass die Implementierung des obigen Taschenrechners gemäß dem LDVCS-Paradigmas ermöglicht.
Medium:AS3-Tutorium Calculator 01 Flash Class Diagram.jpg
Aus folgenden Komponenten besteht der Taschenrechner:
ViewCalculator- Die View-Komponente enthält ein Panel bestehnd aus Digitalziffern (ein Vorzeichen-Element und acht Sieben-Segment-Elemente) zum Darstellen des Rechenergebnisses. Außerdem enthält sie 16 Tasten zur eingabe von Ziffern und Operatoren.
ControllerCalculator- Der Controller bietet eine Methode
keyClick, die von der View aufgerufen wird, sobald eine Taste gedrückt wird. Dieser Methode wird im Parameterp_valueübergeben, welche Taste gedrückt wurde:0, ..., 9, "C", "=", "+", "-", "×", "÷". Der Controller überfügt über zwei Attribute, die bei Programmstart initialisiert werden:keyInputenthält das Stage-Objekt, um auf Tastatur-Ereignisse direkt zugreifen zu können. Damit kann der Taschenrechner auch über die Tastatur gesteuert werden.logicenthält die Logik-Komponente der Anwendung. Die Aufgabe des Controllers ist es, die Methoden dieser Komponenten abhängig von der Benutzer-Eingabe aufzurufen.
LogicCalculator- Aufgabe der Logik-Komponente ist es, abhängig von der Benutzeraktion
- Drücken einer Ziffer:
addDigit - Drücken einer Operatortaste:
addOperator - Drücken der Clear-Taste:
clear)
- Drücken einer Ziffer:
- ein neues Ergebnis zu berechnen und diese im Data-Objekt zu speichern. Das Data-Objekt wird bei Programmstart initialisiert.
DataCalculator- Das Daten-Objekt enthält alle Daten die von der View visualisiert werden können:
value: Die Zahl, die aktuell erfasst wird bzw, das Ergebnis, nachdem eine mathematische Operation ausgeführt wurde.operator: Der Operator, der als nächstes angewendet werden soll (wenn die aktuelle Zahl vollständig eingegeben wurde).oldValue: Die letzte Zahl, die erfasst bzw. gerechnet wurde. Diese wird mit der aktuellen Zahl (mit Hilfe des zuvor eingegebenen Operators) verknüpft, sobald der nächste Operator ("=", "+", "-", "×", "÷") gedrückt wird.
- Im obigen Beispiel wird allerdings nur der Wert des Atributes
valuevisualisiert.
Jede der im Diagramm angegebenen Klassen hat genau eine Aufgabe (vgl. Programmierprinzip „Separation of concerns“):
LED
Visualisierung einer LED (Leuchtdiode), die ein und ausgeschaltet werden kann.
LEDRed
Ein Flash-Symbol, das eine rote LED visualisiert und LED als Basisklasse hat. (In der Musterlösung wurden zwei weitere Flash-Symbole mit der Basis-Klasse LED erstellt: LEDPlusRed</code< und LEDMinusRed. Dies ist aber nicht unbedingt notwendig, wenn man ein als LEE ein einfaches Rechteck verwendet.)
Sign
Visualisierung eines Vorzeichen-Elements, bestehend aus ein bis drei LEDs. In der Musterlösung kann das Element drei Werte annehmen: positiv, negativ, ausgeschaltet
Digit
Visualisierung eines Sieben-Segment-Elements, bestehend aus sieben LEDs. In der Musterlösung kann ein deratiges Element ide Ziffern 0 bis 9 darstellen sowie ausgeschaltet sein. Weitere Werte (wie z.B. ein E für Error) sind denkbar.
Panel
Visualisierung einer Intergerzahl mit maximal acht Stellen.
Key
Visualisierung eines Taschenrechner-Buttons für die Benutzereingabe. In der Musterlösung wurde allerdings nicht Button als Basisklasse verwendet, sondern MovieClip, da die Skinning-Möglichkeiten von Flash-Buttons (im Gegesatz zu Flex-Spark-Buttons) eingeschränkt sind.
ViewCalculator
- Verknüpflung der anderen Komponenten mit der View:
- Das Panel muss den Wert des Attributs
value der Daten-Komponente darstellen.
- Die Keys müssen, sobald sie geklickt werden, ihren Label-Wert an die Methode
keyClick der Controller-Komponenten weiterleitet.
ControllerCalculator
- Aufbereitung der Benutzer-Eingaben für die Logik-Komponenten. Dabei werden zwei Arten von Eingabe unterstützt:
- Eingabe per Maus-Klick (View-Komponente)
- Eingabe per Tastatur (Listerne vür Keyboard-Events)
LogicCalculator
- Aktualisieren der Werte in der Daten-Komponente, nach jeder Benutzerkation.
DataCalculator
- Verwalten der Daten, die visualisiert werden sollen:
- Speichern der Daten
- Informieren der interessierten Observers über Änderungen
Calculator01Flash11
- Starten der Anwndung, insbesindere erzeugen und initialisieren aller LDVCS-Komponenten.
EnumKey
- Bereitstellen von Konstanten, die im Controller, inder Logikkomponete sowie im Daten-Onjekt verwendet werden.
Mealy-Automat
Quellen
SVN-Repository-Verweise
Dieser Artikel ist GlossarWiki-konform.
