Einführung in die Programmierung für NF MI Übung 11
Inhalt Design Patterns (Entwurfsmuster) MVC und Observer Pattern Einführung in die Programmierung für NF MI - Übung 11 2
Design Patterns A Design Pattern is a solution to a problem in a context Context Situation, in der das Pattern anwendbar ist Problem Ziele und Einschränkungen durch den Kontext Solution Das Ziel mit den Einschränkungen erreichen Einführung in die Programmierung für NF MI - Übung 11 3
Bestandteile eines Design Pattern Name Motivation Applicability Participants Structure Collaboration Consequences Related Patterns Einführung in die Programmierung für NF MI - Übung 11 4
Design Pattern Pattern legen meist nur grobe Richtlinien fest, die sich bewährt haben Die konkrete Umsetzung im konkreten Fall ist immer abweichend und individuell und kann von Fall zu Fall variieren Daher auch im Deutschen: Entwurfsmuster Einführung in die Programmierung für NF MI - Übung 11 5
Das MVC Pattern MVC = Model, View, Controller Problem: Benutzerschnittstellen Viele unterschiedliche Anforderungen: Layout, Benutzerführung Benutzerinteraktion, Eingabevalidierung Datenvisualisierung, Datenhaltung Anwendungslogik u.v.m. Einführung in die Programmierung für NF MI - Übung 11 6
Das MVC Pattern Aufteilung dieser Anforderungen in Model Anwendungslogik, Datenhaltung View Layout, Datenvisualisierung, Benutzerinteraktion Controller Vermittlung, Eingabevalidierung Ziel: Eine skalierbare und übersichtliche Programmstruktur Einführung in die Programmierung für NF MI - Übung 11 7
Das MVC Pattern - Nutzereingabe View 1. Benutzereingabe (5. Ansicht wechseln) Controller Model Einführung in die Programmierung für NF MI - Übung 11 8
Das MVC Pattern In kleinen Programmen wird oft auf den Controller verzichtet Dieser schafft hauptsächlich eine Austauschbarkeit mehrere Models oder Views Es bleibt die Problematik, wie die einzelnen Klassen aufeinander zugreifen Einführung in die Programmierung für NF MI - Übung 11 9
Das Observer Pattern Das Observer Pattern behandelt die Kommunikation zwischen zwei Objekten, wenn sich eines aufgrund des anderen ändern / anpassen muss Beispiel: Model und View Wenn eine View die Daten eines Models anzeigt, muss sie sich ändern, wenn sich die Daten ändern Einführung in die Programmierung für NF MI - Übung 11 10
Problem View 1 View 2 Model Einführung in die Programmierung für NF MI - Übung 11 11
Starre Lösung Model 1x modify() View 1 View 2 View 3 3x update() Einführung in die Programmierung für NF MI - Übung 11 12
Starre Lösung Probleme der starren Lösung: Das Model muss jede View kennen Hinzufügen oder Entfernen von Views erfordert jedes Mal eine Änderung am Model Jede View muss ihr Model kennen Die update()-methode kommt dreimal vor und muss in jeder View quasi identisch programmiert werden Einführung in die Programmierung für NF MI - Übung 11 13
Flexible Lösung Einführung von Observer und Observable Observer = Beobachter Observable = Beobachteter Das Model soll ein Beobachteter sein Jede View ist ein Beobachter Einführung in die Programmierung für NF MI - Übung 11 14
Flexible Lösung Realisierung in Java durch die Bibliotheksklasse Observable und das Interface Observer Model erbt von Observable class Model extends Observable View implementiert Observer class View implements Observer Einführung in die Programmierung für NF MI - Übung 11 15
Flexible Lösung Eine gemeinsame Methode Observable Observer update() Observer einfach hinzufügen, entfernen und benachrichtigen addobserver() deleteobserver() notifyobservers() View 1 View 2 Model modify() View 3 Einführung in die Programmierung für NF MI - Übung 11 16
Observer benachrichtigen Wenn sich im Observable etwas ändert werden folgende Methoden aufgerufen: setchanged(); notifyobservers(); Wenn notfiyobservers() aufgerufen wird, wird automatisch die update()-methode im Observer ausgeführt Einführung in die Programmierung für NF MI - Übung 11 17
Observer benachrichtigen Bei der Benachrichtigung können auch weitere Informationen an die update-methode übergeben werden Beispiele gibt es zum Download auf der Vorlesungshomepage und unter http://openbook.galileocomputing.de/javainsel/ javainsel_10_002.html Einführung in die Programmierung für NF MI - Übung 11 18
Kombination MVC und Observer Wenn das MVC Pattern vollständig umgesetzt wird, werden die Observer im Controller dem Observable hinzugefügt Der Controller erstellt also ein neues Model, eine neue View und fügt dem Model die View als Observer hinzu Wenn nun im Model die Observer benachrichtigt werden, wird in der View automatisch die update()-methode aufgerufen Einführung in die Programmierung für NF MI - Übung 11 19
Fragen zum Übungsblatt? Einführung in die Programmierung für NF MI - Übung 11 20