Für die Lernsoftware Javanti soll ein Plug-In entwickelt werden, mit dem sich die Gesetzmäßigkeiten der Booleschen Algebra veranschaulichen lassen.
Im Mittelpunkt steht dabei ein neues Javanti-Element, indem sich ein Boolescher Ausdruck eintragen lässt. Hier bietet sich ein einfaches Textfeld an, in welches der Ausdruck
eingetragen werden kann. Es können dabei beliebig viele Variablenbezeichner eingesetzt werden. Jeder neu eingetragene Bezeichner führt zu einer Variablen mit dem
Wert false.
Zur Vereinfachung des Ausdrucks und zum Ändern der Variablenwerte kann zur Laufzeit einer Präsentation ein beliebiges Fragment innerhalb des Textfeldes markiert
werden. Auf verschiedene Anfragen anderer Elemente (z.B. ein Button) wird eine bestimmte Regel der Prädikatenlogik auf den markierten Bereich ausgeführt. In gleicher
Weise kann für eine markierte Variable der Wert auf true oder false gesetzt werden.
Wenn eine Anfrage nicht ausgeführt werden kann, z.B. weil eine Regel nicht anwendbar ist, dann soll ein frei definierbares Ereignisskript ausgeführt werden. Der Benutzer
kann darin bei Bedarf eine Fehlerbehandlung oder -meldung initiieren.
Anfragen, die eine Regelanwendung bezwecken, führen dazu, dass sich der Ausdrucks-String verändert, die Wertigkeit des Ausdrucks bleibt unberührt.
Anfragen, die den Wert einer Variablen verändern, können zu einer Veränderung der Wertigkeit des Gesamtausdruckes führen. Der Ausdrucks-String bleibt unberührt.
Das Ausdruckselement soll mindestens folgende Eigenschaften in Javanti
bereitstellen:
- der Boolesche Ausdruck selbst (ein String)
- aktueller Wert des Ausdrucks (Boolean)
- der aktuell markierte Bereich des Ausdrucks
- eine Liste von Elementen, die benachrichtigt werden sollen, wenn sich der Wert des Ausdrucks oder die Anzahl der benutzten Variablen veändert
- Größe der Schrift
- Farbe und Hintergrundfarbe
- Ereignisskript, das ausgeführt wird, wenn eine Anfrage fehlschlug
Das Ausdruckselement soll mindestens folgende Anfragen bearbeiten:
- tell variablenliste: liefert eine Liste aller verwendeten Variablen als String
- tell wertigkeit: liefert den aktuellen Wert des Ausdrucks
- tell wertigkeit teilausdruck: liefert den aktuellen Wert des markierten Teilausdrucks
- tell getVariablenwert varName: liefert den aktuellen Wert der Variable varName
- tell setVariablenwert varName true|false: setzt den Wert der Variable varName auf true oder false
- tell setValue true|false: setzt den Wert der aktuell markierten Variable auf true oder false
- tell getValue: liefert den Wert der aktuell markierten Variable
- tell regel regelbezeichnug: wendet auf den aktuell markierten Bereich eine Regel der Prädikatenlogik an, siehe GdP-Skript
Das Ausdruckselement ist die Hauptaufgabe dieses Softwarepraktikums. Zur Unterstützung sollen jedoch zwei weitere einfache Anzeigeelemente erstellt werden. Jedes
Anzeigeelement verwaltet dabei genau ein Ausdruckselement und liefert zusätzliche Informationen über dieses Element.
Das erste Hilfselement zeigt eine Liste der verwendeten Variablen sowie deren aktuelle Wertigkeit. Außerdem wird der Wertigkeit des Gesamtausdruckes ausgegeben.
Das zweite Hilfselement zeigt eine Tabelle, in der alle möglichen Wertekombination der Variablen des beobachteten Elementes dargestellt werden. Jede Spalte steht für
eine Variable. In der letzten Spalte steht die Wertigkeit des Ausdruckes für die Variablenbelegung der jeweiligen Zeile, z.B.:
Ausdruck: a or b or c
Tabelle:
a | b | c | a or b or c |
true | true | true | true |
true | true | false | true |
true | false | true | true |
true | false | false | true |
false | true | true | true |
false | true | false | true |
false | false | true | true |
false | false | false | false |
Die Darstellung soll für maximal acht Variablen gelten.
Die Hilfselemente sollen mindestens folgende Eigenschaft in Javanti bereitstellen:
- den Namen des zu beobachtenden Ausdruckselementes
Die Hilfselemente sollen mindestens auf folgende Anfrage reagieren:
- tell update variablen: das beobachtete Element hat seine Variablenliste verändert
- tell update variablenwert varName: die Variable varName des beobachteten Elementes hat seine Wertigkeit geändert
- tell update wert: das beobachtete Element hat seine Wertigkeit geändert
Zu Testzwecken ist ein kleines Lerntutorium zu erstellen, mit dem sich die oben beschriebenen Anfragen ausführen lassen. Im einfachsten Falle wird für jede mögliche
Anfrage ein Button angelegt, dessen onClick-Ereignis die Anfrage aufruft.
|