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).
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.
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