Zur Hauptnavigation springen [Alt]+[0] Zum Seiteninhalt springen [Alt]+[1]

MVC-Softwaremuster

 

Das MVC-Softwaremuster ist eine Möglichkeit zur Strukturierung einer Anwendung. Dazu werden drei Bereiche unterschieden: Datenmodell (model), Darstellung (view) und Programmsteuerung (control).

MVC

Bildquelle: MVC-Softwaremuster von ZPG/PG Fach [CC BY-SA 4.0 DE], aus Hintergrund GUI-Programmierung, bearbeitet

Durch diese Trennung erleichtert man die Wiederverwendung einzelner Teile der Software. Ohne Änderung des Datenmodells kann die Software auf andere Geräte oder sogar andere Betriebssysteme adaptiert werden.

Das Modell enthält die darzustellenden Daten. Es ist von Präsentation und Steuerung unabhängig. Das Modell muss die Änderungen von relevanten Daten an die „Beobachter“ melden. Als Beobachter werden die View-Elemente der Anwendung eingetragen.
Die Präsentationsschicht ist für die Darstellung der benötigten Daten aus dem Modell und die Entgegennahme von Benutzerinteraktionen zuständig. Sie kennt sowohl ihre Steuerung als auch das Modell, dessen Daten sie präsentiert, ist aber nicht für die Weiterverarbeitung der vom Benutzer übergebenen Daten zuständig. Im Regelfall wird die Präsentation über Änderungen von Daten im Modell unterrichtet und kann daraufhin die aktualisierten Daten abrufen.

Die Steuerung verwaltet eine oder mehrere Präsentationen, nimmt von ihnen Benutzeraktionen entgegen, wertet diese aus und agiert entsprechend. Zu jeder Präsentation existiert eine Steuerung. Es ist die Aufgabe der Steuerung, Daten zu manipulieren. Die Steuerung entscheidet aufgrund der Benutzeraktion in der Präsentation, welche Daten im Modell geändert werden müssen. Sie enthält weiterhin Mechanismen, um die Benutzerinteraktionen der Präsentation einzuschränken. Die Steuerung kann in manchen Implementierungen ebenfalls zu einem „Beobachter“ des Modells werden, um bei Änderungen der Daten den View direkt zu manipulieren1. Die direkte Interaktion zwischen Model und View entfällt dann. Model und View sind nur über den Controller verbunden.

 


1 Definition des MVC-Musters nach Seite „Model View Controller“. In: Wikipedia, Die freie Enzyklopädie. (25.10. 2013). URL: http://de.wikipedia.org/w/index.php?title=Model_View_Controller&oldid=123795562

Umsetzung in Java

Die strenge Umsetzung des MVC-Musters in drei verschiedenen Klassen ist in der Schule in der Regel ein übertriebener Aufwand. Die Trennung des Datenmodells von der Steuerung und der Darstellung ist aber sinnvoll. In der hier vorgestellten Unterrichtseinheit entsteht diese Trennung nahezu zwangsläufig, auch wenn sie nicht Thema des Unterrichts ist. Das MVC-Muster sollte daher nicht im Vordergrund stehen, kann aber natürlich als Konzept vorgestellt werden.

Die Daten bestehen in dieser Unterrichtseinheit aus Bildern (Klasse Picture). Die Daten werden mit Algorithmen der Bildbearbeitung verändert. Diese Algorithmen können unabhängig von View und Controller ausgeführt und in BlueJ getestet werden. BlueJ (und die Klasse PictureViewer) stellt sozusagen automatisch einen View und den dazugehörigen Controller bereit.

Mit dem Gluon Scene Builder wird die Oberfläche (View) entworfen. Dort werden auch die (meisten) Listener-Methoden festlegt. Dadurch wird die Darstellung weitgehend von der Steuerung getrennt. Der Scene Builder bietet aber automatisch einen Rohling für die Controller-Klasse an.

Die Controller-Klasse stellt auch in diesem Projekt die Schnittstelle zwischen GUI und den Bilddaten dar. Viele Methoden sind daher sehr schlank und rufen nur die entsprechenden Algorithmen zur Bildbearbeitung auf.

Nicht sichtbar ist, dass der PictureViewer der GUI als Beobachter für das Bild eingetragen wird. Jede Änderung an einem Bild durch Aufruf einer Zeichenmethode, würde dem eingetragenen PictureViewer-Objekt mitgeteilt, das daraufhin ein Neu-Zeichnen auslöst.

 

Hintergrund GUI-Programmierung: Herunterladen [odt][289 KB]

Hintergrund GUI-Programmierung: Herunterladen [pdf][517 KB]

 

Weiter zu GUI mit dem Gluon Scene Builder