1b523db393720d44133b5416cc669256.ppt
- Количество слайдов: 102
Design Pattern SS 10 Prof. Albert Zündorf Fachgebiet für Software Engineering Wilhelmshöher Allee 73 34121 Kassel (Raum 1339)
Organisatorisches m Umfang: 4 SWS teils Vorlesungen teils Übungen m Übungsbetreuung: Johannes Spohr, Sebastian Schulz m Ort und Zeit: Vorlesung: Dienstags 16: 00 - 19: 00 Raum 2104 (Erste Vorlesung: 13. 04. 10) Übung: ? In obigem Zeitraum m Prüfung: l Pflichtübungsaufgaben (korrigiert, bepunktet) m Folienskript / Screen Videos: l http: //www. se. eecs. uni-kassel. de. Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 2
Literatur Grundlegend: m E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns (Elements of Reusable Object-Oriented Software); Addison Wesley, Bonn, ISBN 0 -201 -63361 -2 (1994) m Patterns Home Page: st-www. cs. uiuc. edu/users/patterns. html Unified Modeling Language: m Martin Hitz, Gerti Kappel: UML @ Work, dpunkt. verlag (ziemlich gut) Hintergrund: m Frederick P. Brooks: The Mythical Man Month, Addison Wesley 1975 (ist nur kurz aber ziemlich witzig, unbedingt mal lesen) Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 3
Gliederung 1. Einführung 2. Design Grundprinzipien 3. Grundlegende Pattern 4. Weitere Pattern 5. Zusammenfassung Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 4
1. Einführung Ziele der Veranstaltung: m Design Know How für große Programme > 100 000 LOC m Grundprinzipien der Wartbarkeit und Erweiterbarkeit m sicherer Umgang mit Vererbung und Delegation m Grundkenntnis der wichtigsten Design Pattern m neue UML 2. 0 features Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 5
Beispiel Composite Pattern m Realisierung hierarchischer Datenstrukturen m kommt in praktisch allen Software-Anwendungen vor m naiver Ansatz verursacht dramatische Wartungsprobleme m Gute Lösung ist Ausgangspunkt für viele weitere Pattern Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 6
Gliederung 1. Einführung 2. Design Grundprinzipien 3. Grundlegende Pattern 4. Weitere Pattern 5. Zusammenfassung Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 7
2. Design Grundprinzipien m Wartbarkeit m Erweiterbarkeit m ein Ort eine Design Entscheidung / eine Funktionalität lokale Änderungen m nur lokale Auswirkungen lokaler Änderung (Module/Klassen, Interfaces, Sichtbarkeiten) m "wenig" Vererbung Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 8
Vererbung m Substitutionsprinzip: Söhne müssen halten was die Väter versprechen m anstelle eines Vaterklassenobjektes kann man auch immer ein Unterklassenobjekt verwenden hat Employee work (t : Task) : Product does Enterprise created Task Product Project Presentation Manager work (t : Task) : Product manage ( proj : Project ) : Presentation Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 9
Beispielsituationen hat Employee work (t : Task) : Product does Enterprise created Task Product Project Presentation Manager work (t : Task) : Product manage ( proj : Project ) : Presentation Struktur … prod = e. work (t); … Verhalten Daten : Employee : Task : Employee : Manager Design Pattern SS 2010 : Task : Product : Project Albert Zündorf, University of Kassel : Presentation © 2010 10
Beispielsituationen hat Employee work (t : Task) : Product does Enterprise created Task Product Project Presentation Manager work (t : Task) : Product manage ( proj : Project ) : Presentation Struktur … prod = e. work (t); … Verhalten Daten : Employee : Task : Employee : Manager Design Pattern SS 2010 : Task : Product : Project Albert Zündorf, University of Kassel : Presentation © 2010 11
Beispielsituationen hat Employee work (t : Task) : Product does Enterprise created Task Product Project Presentation Manager work (t : Task) : Product manage ( proj : Project ) : Presentation Struktur … prod = e. work (t); … Verhalten Daten : Employee : Task : Employee : Manager Design Pattern SS 2010 : Task : Product : Project Albert Zündorf, University of Kassel : Presentation © 2010 12
Beispielsituationen hat Employee work (t : Task) : Product does Enterprise created Task Product Project Presentation Manager work (t : Task) : Product manage ( proj : Project ) : Presentation Struktur … prod = e. work (t); … Verhalten Daten : Employee : Task : Employee : Manager Design Pattern SS 2010 : Task : Product : Project Albert Zündorf, University of Kassel : Presentation © 2010 13
Co- und Contravariante Redefinitionen: wegen Substituierbarkeit: m input Parameter (Lesen) in Unterklassen nur verallgemeinern (Contravariante Redefinition) m output Parametern (Schreiben in Unterklassen nur spezialisieren (Covariante Redefinition) Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 14
Delegation: House alarm. Device Alarm. Device alarm () run () alarm () Flash. Light alarm() Sirene alarm() Mail. Alarm alarm() Struktur Verhalten … this. alarm(); … Daten : Flash. Light : House : Sirene : Mail. Alarm Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 15
Hausaufgabe 1: m Implementiert das Klassendiagramm zur Delegation m Implementiert die alarm () Methoden der Alarm. Device Unterklassen mit unterschiedlichen System. out Ausgaben m Schreibt ein Testprogramm dass: l ein House erzeugt, l das House nacheinander mit verschieden Alarm. Device verbindet l jeweils einen alarm() auslöst Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 16
Abgabe: m Bis m Eclipse Workspace mit Projekt mit JUnit Test m start mit einem Click m Eclipse Projekte inklusive Quellcode Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 17
Gliederung 1. Einführung 2. Design Grundprinzipien 3. Grundlegende Pattern 4. Weitere Pattern 5. Zusammenfassung Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 18
1. Referenzarchitektur interaktive System QVT (Control) Generators / Interpreters GUI (Commands) Data Model GUI (Unparsing) Import/ Export Repository Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 19
Datenmodell mit Composite Pattern: naiv Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 20
Datenmodell mit Composite Pattern: besser Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 21
Datenmodell mit Composite Pattern: gut Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 22
Hausaufgabe 2: m Implementiert ein Datenmodell für ein Filesystem mit dem Composite Pattern m Lest eine Teilbaum eueres Computers ein m es sollte eine Jar Datei enthalten sein. m zählt die Anzahl der Files inklusive der Files in den Jar Dateien m summiert die Dateigrößen aller. java Dateien auf m macht euch für weitere Anforderungen bereit Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 23
Composite Pattern Problem: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 24
Naiver Ansatz: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 25
Visitor Pattern m rekursiver Durchlauf durch Composite Struktur m durchreichen eines Visitor Objekts m uniformerer Umgang mit Rekursionsparametern m Trennung von Durchlauf und Aktion Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 26
Visitor Pattern Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 27
Visitor Pattern Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 28
Visitor Pattern Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 29
Visitor Pattern Zusammenfassung m Ziemlich viele accept und visit Methoden m Double Dispatch möglich m Seperation of concern m Zustandsobjekt in der Rekursion Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 30
Hausaufgabe 3: m stellt das Composite Pattern für Files vom letzten Mal auf ein Visitor pattern um. m Baut einen Visitor zur Summierung der Dateigrößen aller. java Dateien auf m Baut einen Visitor der alle Dateien zählt, auf deren Namen ein mitgelieferter regulärer Ausdruck matcht Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 31
Strategy Pattern m ersetze if-then-else-if Ketten Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 32
If-then-else-if Kette: House mode : int run () ring () Struktur Verhalten Daten public void ring () { if (mode == SIRENE) { …} else if (mode == FLASH) { …} else if (mode == MAIL) { …} … Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 33
Strategy Pattern: House run () ring () Alarm alarm 0. . 1 ring () Flash. Light ring () Struktur Verhalten class House { public void ring () { alarm. ring (); } … Design Pattern SS 2010 Sirene ring () Mail. Alarm ring () Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 34
Strategy Pattern Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 35
Hook Pattern (nicht im Gof-Buch) m zusätzliches Verhalten nachträglich einbauen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 36
Hook Pattern: House run () ring () Alarm extern. Alarms ring () n Sirene Flash. Light ring () Mail. Alarm ring () Struktur Verhalten public void ring () { store. Protocol (); for (alarm in extern. Alarms) { alarm. ring (); } Design } Pattern SS 2010 Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 37
Chain of Responsibility m im wesentlichen Hook m aber Abbruch wenn erfolgreich bearbeitet Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 38
Chain of Responsibility, original House run () ring () Alarm alarm < next ring () Sirene Flash. Light ring () Mail. Alarm ring () Struktur Verhalten class Alarm { public boolean ring () { if (next != null) { return next. ring(); } return false; } } Design Pattern SS 2010 Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 39
Chain of Responsibility, original : House run () ring () Alarm alarm < next ring () Sirene Flash. Light ring () Mail. Alarm ring () Struktur class Flash. Light { public boolean ring () { // try it if (bulb. is. Ready ()) { bulb. activate (); return true; } else { super. ring (); } } } Design Pattern SS 2010 Verhalten Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 40
Chain of Responsibility, besser debugbar: House run () ring () Alarm alarms {ordered} n ring () Sirene Flash. Light ring () Mail. Alarm ring () Struktur Verhalten class House { public boolean ring () { boolean success = false; for (a in alarms) { success = a. ring(); if (success) return true; } return false; }} Design Pattern SS 2010 Daten : House alarms[1] : Flash. Light alarms[2] : Sirene alarms[3] : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 41
Chain of Responsibility, besser debugbar: House run () ring () alarms {ordered} Alarm n ring () Sirene Flash. Light ring () Struktur class Flash. Light { public boolean ring () { // try it if (bulb. is. Ready ()) { bulb. activate (); return true; } else { return false; } } } Design Pattern SS 2010 Verhalten ring () Mail. Alarm ring () Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 42
Beobachtungen m typische Kombinationen von Assoc und Vererbung m Unterklassen haben KEINE neue Methoden m Unterklassen redefinieren geerbte Methoden Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 43
Beobachtungen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 44
Hausaufgabe 4: m Baut euer Hausbeispiel aus der ersten Hausaufgabe in eine Chain of Responsibility um. m Ob ein Device benutbar ist, hängt von der Uhrzeit ab. m Sinnvolle Tests Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 45
State m im wesentlichen Strategy m aber systematische Strategy-Änderung nach Benutzung m meist Implementierung von Statecharts Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 46
State: red transfer. Car(car) / car. stop() yellow transfer. Car(car) / car. stop() green transfer. Car(car) / car. set. Pos(…) Trafic. Light Car state : Integer transfer. Car(car) Struktur Verhalten Daten class Traffic. Ligth { void transfer. Car (Car car) { if (state == GREEN) { car. set. Pos (…); state = YELLOW; } else if (state == YELLOW) { car. stop(); state == RED; } else if (state == RED) car. stop() state = GREEN; } } Design Pattern SS 2010 } © 2010 Albert Zündorf, University of Kassel 47
State: Red Yellow Green Trafic. Light Car current TLState states name transfer. Car(car) Struktur Verhalten Daten class Red { void transfer. Car (Car car) { car. stop() owner. current = owner. states["green"]; } } class Green { void transfer. Car (Car car) { car. set. Pos(…) owner. current = owner. states["yellow"]; } } : Car : Red : Yellow : Green Design Pattern SS 2010 states["red"] states["yellow"] : Traffic. Light states["green"] © 2010 Albert Zündorf, University of Kassel 48
Listener/Observer/Model-View-Controler/Mediator m im wesentlichen Hook m aber Einsatz zur Überwachung von Änderungen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 49
Listener/Observer/Model-View-Controler File listeners > size : Integer write(bytes[]) n Drive used. Space : Integer property. Change (obj, attr. Name, old. Val, new. Val) Struktur Verhalten class File { void write (bytes[]) { … this. set. Size (size+bytes. length()); } void set. Size (new. Val) { if (this. size != new. Val) { int old. Val = size; size = new. Val; fire. Property. Change ("size", old. Val, new. Val); } } … Pattern SS 2010 Design Daten : File write ("aaaa") size = 23 : Drive : File used. Space = 112 size = 42 © 2010 Albert Zündorf, University of Kassel 50
Listener/Observer/Model-View-Controler File size : Integer write(bytes[]) listeners > n Drive used. Space : Integer property. Change (obj, attr. Name, old. Val, new. Val) Struktur Verhalten class File { … void fire. Property. Change (attr. Name, old. Val, new. Val){ for (l in listeners) { l. property. Change (this, attr. Name, old. Val, new. Val); } } … Daten : File write ("aaaa") size = 23 : Drive : File used. Space = 112 size = 42 Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 51
Listener/Observer/Model-View-Controler File size : Integer write(bytes[]) listeners > n Drive used. Space : Integer property. Change (obj, attr. Name, old. Val, new. Val) Struktur Verhalten class Drive { … void property. Change (obj, attr. Name, old. Val, new. Val){ used. Space += new. Val – old. Val; } } … Daten : File write ("aaaa") size = 23 : Drive : File used. Space = 112 size = 42 Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 52
Listener/Observer/Model-View-Controler File size : Integer write(bytes[]) listeners > n targets > n Drive used. Space : Integer Space. Updater property. Change (obj, attr. Name, old. Val, new. Val) Struktur Verhalten class Space. Updater { … void property. Change (obj, attr. Name, old. Val, new. Val){ for (t : targets) { t. used. Space += new. Val – old. Val; } } } … Daten : File write ("aaaa") size = 23 : Space. Updater : File size = 42 : Drive Design Pattern SS 2010 used. Space = 112 53 © 2010 Albert Zündorf, University of Kassel
Computer Model-View-Controler/Mediator File size : Integer write(bytes[]) listeners > n targets > n Drive used. Space : Integer Space. Updater property. Change (obj, attr. Name, old. Val, new. Val) Struktur Verhalten class Space. Updater { … void property. Change (obj, attr. Name, old. Val, new. Val){ for (t : targets) { t. used. Space += new. Val – old. Val; } } } … Daten : Computer write ("aaaa") used. Space = 1012 : File size = 23 : Space. Updater : File size = 42 : Drive Design Pattern SS 2010 used. Space = 112 54 © 2010 Albert Zündorf, University of Kassel
Hausaufgabe 5? : m Baut ein GUI für ein Auto m es soll nur die Geschwindigkeit modelliert werden m die Geschwindigkeit soll auf zwei Wegen visualisiert werden: l Zahldarstellung (JSpinner) l Schieberegler m die Geschwindigkeit soll in beiden Views editiert werden können und von einem Testprogramm verstellt werden m ein Bremspedal und ein Gaspedal wären auch schön m und vorbeifliegende Leuchtpfähle (siehe Processing Framework) m macht eine Tabelle für mehrere Autos Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 55
Listener Concept for Car Example Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 56
Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 57
Template Method m Motivation ähnlich wie Hook m aber feste Vorgabe von abstrakten Template-Methoden m alle Template-Methoden müssen überschrieben werden Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 58
Template Method: House run () ring () Alarm + ring () ~ start () ~ stop () alarm Flash. Light Sirene ring () () ~ start ~ stop () ~ start () ~ stop () Mail. Alarm ring () () ~ start ~ stop () Struktur Verhalten class Alarm { void ring () { start (); … stop (); … }} Design Pattern SS 2010 Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 59
Template Method: House run () ring () Alarm + ring () ~ start () ~ stop () alarm Flash. Light Sirene ring () () ~ start ~ stop () ~ start () ~ stop () Mail. Alarm ring () () ~ start ~ stop () Struktur Verhalten class Flash. Ligth { void start () { power. On (); } void stop () { power. Off () } } Design Pattern SS 2010 Daten : House : Flash. Light : Sirene : Mail. Alarm © 2010 Albert Zündorf, University of Kassel 60
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 61
Decorator m ähnlich wie Composite mit nur einem Kind m ähnlich wie Chain-of-Responsibility m erweitere eine Strategy um zusätzliche Aktionen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 62
Decorator: House run () ring () Alarm alarm 0. . 1 ring () Flash. Light 0. . 1 orig Sirene ring () Mail. Alarm ring () Struktur Verhalten class Mail. Alarm { ring () { send. Mail(); orig. ring(); } } Daten : House : Sirene : Mail. Alarm Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 63
Proxy m ähnlich wie Decorator m aber kein Zusatzeffekt m sondern remote, lazy oder cache Effekte Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 64
Proxy: Struktur Verhalten ? Daten : House : Sirene : Mail. Alarm Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 65
Adapter m ähnlich wie Decorator m aber Schnittstellenanpassung Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 66
Adapter: Struktur Verhalten ? Daten : House : Sirene : Mail. Alarm Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 67
Hausaufgabe: m Baut einen Objektadapter mit dem ein Action. Listener auch als Property. Change. Listener verwendet werden kann. Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 68
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 69
Flyweight Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 70
Flyweight Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 71
Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 72
Command Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 73
Command Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 74
Hausaufgabe: Command m Erstellt eine einfache GUI mit einem Fußball Icon auf einer Malfläche m Darunter 4 Knöpfe um den Ball jeweils 1 cm in jede Himmelsrichtung zu bewegen m Darunter ein Undo und ein Redo Knopf m Mit Command Pattern implementieren m Test: 10 mal bewegen, 5 Undo wieder an Pos 5, 2 Redo wieder an Pos 7, 7 Undo wieder an Pos 1 m Sonderpunkte für Dragging Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 75
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 76
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 77
Factory Method: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 78
Prototype: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 79
Komplexer Prototyp Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 80
Abstract Factory: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 81
Hausaufgabe: m Abstrakte Fabrik für Autos und Garagen m Konfiguration für rote Spielzeugautos und Minigaragen m Konfiguration für blaue Nutzfahrzeuge und Flugzeughallen m vielleicht mal Spielzeugauto mit LKW-Motor und Hundehütte Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 82
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 83
Facade: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 84
Import Umkehrung: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 85
Import Umkehrung: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 86
Plugins: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 87
Daten Plugin: Struktur Verhalten Design Pattern SS 2010 Daten © 2010 Albert Zündorf, University of Kassel 88
Hausaufgabe: m Baut ein Rahmenwerk, das einfach ein Fenster aufmacht m Baut ein Plugin, das in das Rahmenwerkfenster einen Button und ein Label einhängt, bei jedem Button Click soll das Label eins hoch gezählt werden. m Das Rahmenwerk bekommt eine Liste der zu ladenden Plugins als Aufrufparameter. m Achtung: das Rahmenwerk darf KEINE Compilezeitabhängigkeiten zu den Plugins haben Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 89
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 90
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 91
Reuse Architekturen: m Bibliotheken m Frameworks m Product Line Architecture Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 92
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 93
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 94
Components & Connectors Architekturen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 95
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 96
Components & Connectors Architekturen m Wiederverwendung von "Komponenten" m "Konnektoren" zur Verknüpfung und Anpassung von Komponenten Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 97
Components & Connectors Architekturen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 98
Components & Connectors Architekturen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 99
Components & Connectors Architekturen Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 100
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 101
Design Pattern SS 2010 © 2010 Albert Zündorf, University of Kassel 102
1b523db393720d44133b5416cc669256.ppt