130 likes | 255 Views
Motivation Entwurfsmuster. Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen-dung erfolgreicher Lösungen (Entwurfsmuster) somit in oo Systemen oft wiederkehrende Muster von Klassen und kommunizierenden Objekten
E N D
Motivation Entwurfsmuster • Entwurf wiederverwendbarer objektorientierter Software schwer • gute Entwürfe entstehen durch Wiederverwen-dung erfolgreicher Lösungen (Entwurfsmuster) • somit in oo Systemen oft wiederkehrende Muster von Klassen und kommunizierenden Objekten • Entwickler kann Muster auf vorliegende Probleme anwenden, ohne Lösung erneut zu suchen • Muster lösen spezifische Entwurfsprobleme • Muster machen Entwürfe flexibler, eleganter, wiederverwendbar Design Pattern
Entwurfsmuster • Entwurfserfahrungen als Entwurfsmuster aufgezeichnet (Musterkatalog) • durch verständliche Darstellung gut nutzbar • erleichtern Wahl von Entwurfsalternativen • können Dokumentation + Wartung existierender Systeme erleichtern • ermöglichen Entwurf schneller „richtig“ zu machen • Entwurfsmuster (C. Alexander): • beschreibt beständig wiederkehrendes Problem • erläutert Kern der Lösung für Problem • somit: Lösung beliebig oft, aber nicht jedesmal gleich, ausführbar Design Pattern
Entwurfsmuster • Entwurfmuster sind Muster bestimmter Abstrak-tionsebene • Zusammenarbeit Objekte + Klassen zur Lösung von Entwurfsproblemen in bestimmtem Kontext • Benennen, Abstrahieren, Identifizieren relevanter Aspekte einer allgemeinen Entwurfsstruktur • Klassen, Objekte, ihre Rollen + Aufgaben + Interaktionen zwischen Rollen identifiziert • Entwurfsmuster für je ein bestimmtes Entwurfs-problem: wann einsetzbar + Konsequenzen Design Pattern
Beschreibung von Mustern (I) (Musterbeschreibung nach Gamma) • Mustername: • kurzes Stichwort, um Problem + Lösung zu erläutern • hilft bei Kommunikation im Team + Dokumentation • Problemabschnitt • beschreibt, wann Muster anzuwenden ist (Zweck, Motivation, Anwendbarkeit) Design Pattern
Beschreibung von Mustern (II) • Lösungsabschnitt • Elemente des Entwurfs, Beziehungen, Zuständig-keiten + Interaktionen (Struktur, Teilnehmer, Interaktionen) • kein bestimmter Entwurf, keine konkrete Imple-mentierung, sondern auf viele Situationen anwendbare Schablone (Elemente z.B. Klassen + Objekte) • Konsequenzabschnitt • Konsequenzen der Musteranwendung (Vor- und Nachteile) + bekannte Verwendungen Design Pattern
MVC (Name, Problem) • Name • MVC: Model View Controller • Motivation • Erleichtert Entwurf und Wartung grafischer Benutzerschnittstellen durch Modularisierung • Model: Daten + Kernfunktionalität • View: Präsentation Model • Controller: Kontrollfluss (welche Aktion, welche Logik, welche View) Design Pattern
MVC (Problem) • Views nicht zu verändern bei verändertem Controller • Model unabhängig von Veränderungen in View und Controller • Anwendbarkeit • für grosse Anwendungen • wenn klare Rollenverteilung nötig (Designer, Programmierer) • wenn starke Wiederverwendung angestrebt Design Pattern
View Änderungen Status erfragen Benutzeraktionen View-Auswahl Model Controller Status ändern Methodenaufrufe Ereignisse MVC (Lösung I) V M C Struktur: Design Pattern
MVC (Lösung II) • Teilnehmer: • Model, View, Controller • Interaktionen • Views leiten Benutzeraktionen an Controller • Controller legt fest, wie Eingaben zu verarbeiten (Befehle an Model schicken und View selektieren) • Views können geänderte Werte des Models abfragen Design Pattern
MVC (Konsequenzen I) • Konsequenzen • Gute Wiederverwendbarkeit • Mehrere Ansichten des selben Models möglich • Sichten und Controller sind austauschbar • Bessere Lesbarkeit gute Rollenverteilung • Designer, Programmierer • Gute Skalierbarkeit und Erweiterbarkeit • Erhöhte Komplexität • Längere Planung • Mehr Aufwand bei Implementierung Design Pattern
MVC (Konsequenzen II) • Bekannte Verwendungen • Smalltalk mit Benutzerschnittstellen Framework • MFC - Microsoft Foundation Classes • Swing • Web-Frameworks (Struts, Velocity, Tapestry) Design Pattern
Beispiel im JSP-Umfeld V M C Bitte ausfüllen! Instanziieren der Bean Status ändern prüfeEingabe() Login Benutzeraktion: OK Instanziieren + Status ändern (setLogin(...)...) muster Passwort ****** OK View1.jsp Controller.java View-Wahl Eingabe NOK View-Wahl Eingabe OK Passwort falsch! Comicanwendung login passwort setLogin(...) ... Login muster Passwort OK View1.jsp View2.jsp Bean.java Status abfragen (getLogin()) Design Pattern
Quellen • Wille, S., Go To Java Server Pages, Addison-Wesley, München, 2001 • Gamma, E., Helm, R., Jonson, R., Vlissides, J., Entwurfsmuster, Addison-Wesley, Bonn, 1996 • Siemers, S.: MVC meets XML, Javamagazin, 03/2002, S.24 • Turau, V. Saleck, K., Schmidt, M.: Java Server Pages und J2EE: Unternehmensweite Web-Basierte Anwendungen, dpunkt.verlag, Heidelberg 2001 • http://www.fh-wedel.de/~si/seminare/ws97/Ausarbeitung/3.Krutscher/archmu3.htm Design Pattern