11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

64 KAPITEL 5: IMPLEMENTIERUNG<strong>ODL</strong>-Abfrage. Das einfache Vorziehen der Quantoren war möglich, weil die Typen der von ihnengeb<strong>und</strong>enen Variablen von keinen anderen Variablen abhängen konnten. Mit der aktuellenErweiterung des Typsystems wurden Typen eingeführt, die von früher deklarierten Variablenabhängen können: beispielsweise hängt in der Abfrageexists c1:Component.context c2:{ comp:Component | is SubComponents(c1,comp) }der eingeschränkte Typ { comp:Component | is SubComponents(c1,comp) }von der Variablen c1 ab. In einem solchen Fall kann der betreffende context-Quantor nichtvor den Quantor vorgezogen werden, von dessen Variablen sein eigener Variablentyp abhängt.Die new-Quantoren sind von dieser Problematik nicht betroffen, da sie nur Variablen des TypsEntity binden können, <strong>und</strong> dieser Typ hängt nie von anderen Variablen ab.Das entstandene Problem bei der Verschiebung von context-Quantoren kann auf verschiedenenWegen gelöst werden. Die optimale Lösung, bei der ein context-Quantor genau soweitvorgezogen wird, bis er auf einen forall-Quantor trifft oder einen anderen Quantor, von dessenVariablen sein Variablentyp abhängt, konnte aufgr<strong>und</strong> ihrer Komplexität nicht im Rahmender vorliegenden Arbeit implementiert werden. Sie wird jedoch ausführlich im Abschnitt 6.2.1besprochen.In der aktuellen Version des <strong>ODL</strong>-Systems wird eine einfachere jedoch sichere Lösung eingesetzt.Dabei wird für einen context-Quantor zunächst ermittelt, ob sein Variablentyp voneiner anderen Variablen abhängt. Ist dies nicht der Fall, so wird der Quantor – wie schon früher– bis zum nächsten forall-Quantor bzw. an den Anfang der <strong>ODL</strong>-Abfrage vorgezogen.Hängt der Typ der vom context-Quantor geb<strong>und</strong>enen Variablen von einer anderen Variablenab, wird der Quantor als unbeweglich markiert <strong>und</strong> an seiner Stelle belassen. Dieser Algorithmusresultiert zwar häufig in suboptimaler Positionierung von context-Quantoren, er ist aberwesentlich einfacher, als die optimale Lösung, <strong>und</strong> auch mit diesem Algorithmus kann der Benutzerdurch Umformulierung der <strong>ODL</strong>-Abfrage eine optimale Positionierung von context-Quantoren erreichen.5.2 Interaktive <strong>Benutzerschnittstelle</strong>Nachdem wir die <strong>ODL</strong>-Auswertungsklassen besprochen haben, wollen wir eine Beschreibung der imRahmen dieser Arbeit entwickelten <strong>Benutzerschnittstelle</strong> für die Eingabe von Variablenwerten geben.In der früheren <strong>ODL</strong>-Version wurde der Gr<strong>und</strong>stein für das Query-Subsystem gelegt, das Benutzereingabenermöglichen soll, die bei der Auswertung von context-Quantoren notwendigsind ([Pasch], S.29-30). Die Struktur <strong>und</strong> Funktionsweise des <strong>ODL</strong>-Query-Subsystems im Packagequest.odl.evaluation.model.query wird ausführlich im Abschnitt 5.2.2 besprochen.Vorher wollen wir die GUI-Klassen beschreiben, die für den Aufbau von Benutzereingabedialogenerstellt wurden <strong>und</strong> von Query-Klassen verwendet werden.5.2.1 GUI-KlassenDie GUI-Klassen für das Query-Subsystem belegen zwei Packages:– quest.odl.evaluation.model.query.dialog:Dieses Packages enthält die GUI-Klassen, die in Eingabedialogen Verwendung finden.– quest.odl.evaluation.model.query.factory:In diesem Package befinden sich Fabrikklassen, die für die Herstellung von GUI-Klassen ausquest.odl.evaluation.model.query.dialog zuständig sind – sie implementierendie Entwurfsmuster Abstrakte Fabrik, Fabrikmethode <strong>und</strong> Erbauer ([GammaEtAl], S.107-143). Eine weitere Fabrikklasse produziert Instanzen von Klassen aus den Packages quest.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!