28
Entwurfsmuster Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

  • Upload
    lykiet

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Entwurfsmuster

Tao Zhang

Technische Universität München

Lehrstuhl für Angewandete Softwaretechnik

Page 2: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Information über Entwurfsmuster

♦ Die heutige Vorlesung: Einführung in die Thematik

♦ Die Vorlesung am 12.01: Drei Muster vorstellen! abstrakte Fabrik

! Proxy

! Beobachter

Page 3: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Überblick der heutigen Vorlesung

♦ Hintergrund und Definition

♦ Entwurfsmuster - Idee und Ziele

♦ Entwurfsprinzipien für Muster

♦ Wiederverwendungsmechanismen bei Mustern

♦ Klassifikation der Entwurfsmuster

♦ Das Missverständnis über Entwurfmuster

♦ Zusammenfassung

Page 4: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Hintergrund

♦ Arbeiten von E. Gamma an der Universität Zürich! Entwicklung eines Editor-Toolkits ET

! Weiterentwicklung zum Framework ET++

! E.Gamma beschreibt in seiner Dissertation Entwurfslösungen fürbestimmte Entwurfsprobleme

! Er nennt sie in Anlehnung an die Arbeiten von C.Alexander“Design Patterns”

♦ E.Gamma, J.Vlissides, R.Helm und R.Johnson (GoF)! Autoren des Buches “Design Pattern”

! Es führt eine Systematik für die Beschreibung von Entwurfsmusterein

! Wird ein “Kultbuch ” in der OO-Szene

Page 5: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Ist das die richtige Muster -Definition ?

♦ Ein Muster ist die Lösung eines Problems in einemKontext

Gegenbeispiel:

Problem : Wie kann ich meinen Gewinn-Lottoschein einlösen,bevor er abgelaufen ist ?

Kontext: Der Hund hat den Lottoschein eine Stunde vor demletzten Termin aufgefressen :-(

Lösung: Schneide den Hund auf, angle den Lottoschein heraus,und renne zur nächsten Lottostelle… :-)

Page 6: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Definition von GoF:

Ein Entwurfsmuster beschreibt ein bestimmtes, ineinem gegebenen Kontext immer wiederkehrendesEntwurfsproblem, sowie ein vorgegebenes Schema zuseiner Lösung

♦ Wiederholbarkeit

♦ Leitfaden (teaching)

♦ Name eines Musters

Page 7: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Beispiel:Das Sicherheitsproblem mit der Open Architektur

VIP Subsystem

Page 8: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Lösung: Close Architektur mit Fassademuster

Page 9: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Entwurfsmuster - Idee und Ziele

♦ Entwurfsmuster beschreiben Expertenwissen auf demGebiet SW- Entwurf

♦ Entwurfsmuster beschreiben Design-Erfahrungen inwiederverwendarer Form

♦ Entwurfsmuster helfen, einfacher eine adäquate Lösung fürein gängiges Entwurfsproblem zu finden

♦ Entwurfsmuster schaffen dringend benötigte höhereAbstraktionen

♦ Entwurfsmuster führen zu einer Terminologie über SW-Architekturen (Pattern Languages)

Page 10: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Bevor wir einzelne Entwurfsmuster vorstellen,werden wir noch einige wichtige Entwurfsprinzipienfür Muster kennenlernen

Page 11: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Entwurfsprinipien für Muster

♦ Eine Konstruktion soll offen und flexibel gestaltet sein

♦ Wiederverwendbarkeit, Verständlichkeit undÄnderbarkeit einer Konstruktion soll erreicht werden

♦ Die wesentlich Konstruktionsprinzipien sind u.a.:! Kapselung (Information hiding)

! Lose Kopplung von Komponenten

! Gleichverteilung von Verantwortlichkeiten

! Wahrnehmen der Verantwortung und Delegation

Page 12: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Mehr über Wiederverwendungsmechanismen

♦ Komposition (Black-Box Reuse)

♦ Vererbung (White-box Reuse)

♦ Drei bekannte Techniken:! Implementierungsvererbung

! Schnittstellenvererbung

! Delegation

♦ Vererbung und Objektkomposition arbeitenzusammen bei vielen Entwurfsmustern

Page 13: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Implementierungs- vs Schnittstellenvererbung

♦ Implementierungsvererbung! Funktionalität der Elternklasse wiederverwenden

! Teils oder alle bereits implementierte Operationen derexistierenden Klassen vererben

♦ Schnittstellenvererbung! spezifizierte, jedoch nicht implementierte Operationen einer

abstrakten Klasse vererben

Page 14: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Delegation oder Vererbung (I)?

Vererbung

! Pro:" Direkt von der Programmiersprache unterstützt

" Wiederverwendete Implementierung leicht zu modifizieren

! Con:" Detail der Elternklasse werden ausgesetzt

" Irgendwelche Änderung in der Elternklasse führt zurÄnderung in der Subklassen (erneute Kompilieren isterforderlich) :-(

Page 15: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Delegation oder Vererbung (II)?

Delegation

! Pro:" Flexibilität: Objekt können zur Laufzeit durch einen anderen

ersetzt werden

" Klassenhierarchien bleiben klein

! Con:" Laufzeitineffizienzen

" Dynamische, hochgradig parametrisierte Software istschwieriger zu verstehen

Page 16: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Implementierungsvererbung

❖ Problem: Einige ererbte Operationen zeigen unerwartetes

Verhalten. Was passiert, wenn der Stack-User stattPop() Operation Remove() aufruft ?

❖ Beispiel : bereitsimplementiert wurdeeine Liste-klasse. Gesuchtwird eine Stack Klasse,wie wär’s mitImplementierungs-vererbung ?

Add()Remove()

List

Push()Pop()

Stack

Top()

“bereits implementiert”

Page 17: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Delegation statt Vererbung

+Add()+Remove()

List

Stack

+Push()+Pop()+Top()

+Push()+Pop()+Top()

Stack

Add()Remove()

List

Page 18: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Entwurfsheuristik

♦ Programmiere auf eine Schnittstelle hin, nicht auf eineImplementierung

♦ Vererbung bricht die Kapselung auf

♦ Ziehe Objetkomposition der Klassenvererbung vor

Page 19: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Klassifikation

♦ Erzeugungsmuster! dienen zur Erzeugung von komplexen Objekten,

verstecken den Erzeugungsprozess

♦ Strukturmuster! befassen sich mit der Komposition von Klassen und

Objekten, um grössere Strukturen zu bilden

♦ Verhaltensmuster! befassen sich mit Algorithmen und Zuständigkeiten der

Objekten, beschreiben auch die Interaktion zw. ihnen

Page 20: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Welche Entwurfsmuster werden in dernächsten Vorlesung vorgestellt ?

♦ Erzeugungsmuster:! Abstrakte Fabrik

♦ Strukturmuster:! Proxy

♦ Verhaltensmuster:! Beobachter

Page 21: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Abstrakte Fabrik:Einfacher Austausch von Produktfamilien

Page 22: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Proxy: Das Stellvertreterobjekt

Vorher

Page 23: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Zugriffskontrolle durch Proxy:

Page 24: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Nachher:

Page 25: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

9DesignPatterns2.ppt

Observers Subject

Beobachter: Zustände automatisch aktualisieren

Page 26: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Das Missverständnis

♦ Musterverwenden ist immer gut, sie garantierenwiederverwendbare Software, höhere Produktivität, dieWeltfrieden etc. :-)

Page 27: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Zusammenfassung

♦ Entwurfsmuster beschreiben Expertenwissen auf demGebiet SW-Entwurf

♦ Sie sind mehr als Algorithmen und Datenstrukturen

♦ Sie erhöhen die Flexibilität von Entwürfen

♦ Sie werden wiederverwendbar (Microarchitektur)

♦ Sie werden bei der Konstruktion von Frameworkseingesetzt

♦ Sie unterstützen die Kommunikation im Entwickler-Team (Design-vokabular)

Page 28: Lehrstuhl für Angewandete Softwaretechnik Technische ... · Überblick der heutigen Vorlesung ♦ Hintergrund und Definition ♦ Entwurfsmuster - Idee und Ziele ♦ Entwurfsprinzipien

Vielen Dank für Ihre Aufmerksamkeit!