Boolesche Algebra

Lerneinheit für Boolesche Algebra in Javanti

Boolesche Algebra
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:

abca or b or c
truetruetruetrue
truetruefalsetrue
truefalsetruetrue
truefalsefalsetrue
falsetruetruetrue
falsetruefalsetrue
falsefalsetruetrue
falsefalsefalsefalse

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.
Programmiersprachen und Werkzeuge
Die Plug-Ins sollen in Java 1.2 entwickelt werden und den Schnittstellendefinitionen von Javanti genügen.

Hauptnavigation