next up previous contents index
Nächste Seite: 7.5 Repräsentation von Constraint-Ausdrücken Aufwärts: 7. Realisierung und Anbindung Vorherige Seite: 7.3 Übersicht über die   Inhalt   Index

7.4 Der Constraint-Manager

Der YACS Constraint-Manager (YCM) dient als zentrales Bindeglied zwischen einer Anwendung und dem YACS-Framework. Der YCM vereint die benötigten Methoden zur Definition von Constraint-Problemen, zur Initiierung der Auswertung und für das Auslesen der Ergebnisse. Diese Funktionalität entspricht dem Entwurfsmuster einer ,,Fassadenklasse`` (engl. facade): Der YCM verbirgt komplexere Schnittstellen vor dem Nutzer des YACS-Frameworks (vgl. Gamma et al., 1996, S. 212 ff.).

Außerdem werden im YCM die Constraint-Lösungsstrategien bzw. die ihnen zugeordneten Constraint-Netze verwaltet und der Lösungsprozess gesteuert. Der YCM ist somit ebenfalls Bindeglied zwischen den internen Komponenten des YACS-Frameworks.

Die Realisierung des Constraint-Manager unterteilt sich in eine abstrakte Interface-Klasse, die sämtliche benötigten Methoden definiert, und einer Implementierung dieser Klasse (siehe Abbildung 7.2).7.8 Durch diese Abstraktion ist es möglich, ggf. unterschiedliche Implementierungen des YCM zu verwenden, die sich z.B. hinsichtlich der Ausführungskontrolle des Lösungsprozesses unterscheiden können. Es muss allerdings gewährleistet sein, dass diese Realisierungen ebenfalls das Interface YacsConstraintManager implementieren.

Abbildung 7.2: Der YACS Constraint-Manager (YCM)
\begin{figure}\centering
\includegraphics[scale=0.7]{images/implementierung_constraintmanager}\ifx\pdfoutput\undefined
\fi
\end{figure}

Die Implementierung YacsConstraintManagerImpl wird mit dem Dateipfad zu einer XML-Datei mit den Constraint-Lösungsstrategien instantiiert. Diese Lösungsstrategien werden ausgelesen und für jede Strategie wird ein (leeres) Constraint-Netz erzeugt.

Constraints bzw. Constraint-Teilprobleme lassen sich über den Constraint-Manager inkrementell zu Constraint-Netzen hinzufügen. Die Constraint-Netze werden anhand der Namen der ihnen zugehörigen Constraint-Lösungsstrategien unterschieden. Bei dem Hinzufügen eines Constraint-Ausdrucks muss dem YCM mitgeteilt werden, welcher Constraint-Lösungsstrategie bzw. welchem Constraint-Netz der jeweilige Ausdruck zugeordnet werden soll.



Fußnoten

...7.8
Attribute, Operationen und Eigenschaften einer Klasse, die diese aufgrund einer Generalisierung von einer übergeordneten Klasse geerbt hat, werden aus Gründen der Übersichtlichkeit in diesem und den nachfolgenden Klassendiagrammen nach Möglichkeit nicht redundant aufgeführt.

next up previous contents index
Nächste Seite: 7.5 Repräsentation von Constraint-Ausdrücken Aufwärts: 7. Realisierung und Anbindung Vorherige Seite: 7.3 Übersicht über die   Inhalt   Index