Kein Folientitel

Werbung
Motivation Entwurfsmuster
• Entwurf wiederverwendbarer objektorientierter
Software schwer
• gute Entwürfe entstehen durch Wiederverwendung 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
1
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
2
Entwurfsmuster
• Entwurfmuster sind Muster bestimmter Abstraktionsebene
– 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 Entwurfsproblem: wann einsetzbar + Konsequenzen
Design Pattern
3
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
4
Beschreibung von Mustern (II)
• Lösungsabschnitt
– Elemente des Entwurfs, Beziehungen, Zuständigkeiten + Interaktionen (Struktur, Teilnehmer,
Interaktionen)
– kein bestimmter Entwurf, keine konkrete Implementierung, sondern auf viele Situationen
anwendbare Schablone (Elemente z.B. Klassen +
Objekte)
• Konsequenzabschnitt
– Konsequenzen der Musteranwendung (Vor- und
Nachteile) + bekannte Verwendungen
Design Pattern
5
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
6
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
7
V
MVC (Lösung I)
M
C
Struktur:
View
Änderungen
Status erfragen
Model
Benutzeraktionen
Status ändern
View-Auswahl
Controller
Methodenaufrufe
Ereignisse
Design Pattern
8
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
9
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
10
MVC (Konsequenzen II)
• Bekannte Verwendungen
–
–
–
–
Smalltalk mit Benutzerschnittstellen Framework
MFC - Microsoft Foundation Classes
Swing
Web-Frameworks (Struts, Velocity, Tapestry)
Design Pattern
11
Beispiel im JSP-Umfeld
Bitte ausfüllen!
Login
muster
Passwort
******
Benutzeraktion: OK
Instanziieren der
Bean
Status ändern
prüfeEingabe()
C
Controller.java
View-Wahl Eingabe NOK
Passwort falsch!
Login
M
Instanziieren +
Status ändern
(setLogin(...)...)
OK
View1.jsp
V
View-Wahl Eingabe OK
Comicanwendung
login
passwort
setLogin(...)
...
View2.jsp
Bean.java
muster
Passwort
OK
View1.jsp
Status abfragen (getLogin())
Design Pattern
12
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.fhwedel.de/~si/seminare/ws97/Ausarbeitung/3.Krutscher/arc
hmu3.htm
Design Pattern
13
Herunterladen