Exkurs - Model-View-Control-Architektur
Weitere Aufteilung von Zuständigkeiten
Bisher war das GUI-Objekt sowohl für die Präsentation der Daten auf der Benutzeroberfläche, als auch für die Ereignisverarbeitung zuständig.
Diese beiden Zuständigkeiten sollen jetzt aufgeteilt werden: Einerseits soll es Präsentationsobjekte geben, die nur für die Darstellung der Daten zuständig sind, andererseits Steuerungsobjekte, die die Verbindungen zwischen Präsentationsobjekten und Datenmodellobjekten herstellen und die Ereignisverarbeitung festlegen. Diese weitere Aufteilung der Zuständigkeiten soll spätere Änderungen oder Erweiterungen des Softwaresystems erleichtern und eine Wiederverwendbarkeit einzelnen Komponenten ermöglichen.
Grafische Benutzeroberfläche zur Bankwelt
Wir betrachten hier noch einmal die folgende sehr einfache grafische Benutzeroberfläche:

Das Programm mit dieser grafischen Benutzeroberfläche wird mit den folgenden Softwarebausteinen erzeugt.
Datenmodell (model)
Das Datenmodell bleibt unverändert.
Präsentation (view)
Aufgabe eines GUIBank
-Objekts ist es, die grafische Benutzeroberfläche zu erzeugen.
Beachte, dass ein GUIBank
-Objekt keinen Zugriff auf Objekte des Datenmodells hat. Das ist deshalb möglich, weil hier keine Ereignisverarbeitungsmethoden implementiert sind. Die für die Verarbeitung des Ereignisses Anklicken der Schaltfläche mit der Aufschrift anzeigen
erforderliche Ereignisverarbeitungsmethode wird erst bei der Aktualisierung des Parameters cbAnzeigen
- also bei der Erzeugung des GUIBank
-Objekts - festgelegt. Hier wird ein Mechanismus benutzt, den man Callback-Funktion
nennt. Mehr über Callback-Funktionen findest du im Abschnitt Fachkonzept - Callback-Funktion
Steuerung (control)
Aufgabe eines Controler
-Objekts ist es, die Datenmodell- und GUI-Objekte zu erzeugen und zu verknüpfen.
Beachte, dass ein Controler
-Objekt Zugriff auf Datenmodell- und Präsentationsobjekte hat. Beachte auch, dass ein Controler
-Objekt die Ereignisverarbeitungsmethoden implementiert, die dem GUIBank
-Objekt bei seiner Erzeugung übergeben werden.
MVC-Architektur
Das folgende Klassendiagramm verdeutlicht noch einmal die Beziehungen zwischen den Komponenten Datenmodell (Model), Präsentation (View) und Steuerung (Control).

Vereinfacht lässt sich die MVC-Architektur wie folgt darstellen.

Hier erfolgt eine strikte Trennung des Datenmodells (Model) von der grafischen Präsentation (View). Die Komponenten Model und View wissen nichts voneinander. Die notwendigen Verbindungen werden von einer dritten Komponente, dem Controller, ausgeführt. Der Controller braucht dazu eine präzise Beschreibung der Schnittstellen von Model und View.
Hinweis
Die hier gezeigte Darstellung der MVC-Architektur orientiert sich sehr stark an den Ausführungen auf den Seiten des HSG.