Upload
luitgard-gauerke
View
227
Download
2
Embed Size (px)
Citation preview
OO Analyse und Entwurf für Anwender
XII. EntwurfsmusterDr. Michael Löwe
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
2
Objektorientierte Analyse und Entwurf
Inhalt der Ausbildung
• Kennzeichen objektorientierter Softwareentwicklung (1)
• Projektorganisation (2)• Architektur (2)• Objektorientierte Analyse (4)• Objektorientierter Entwurf (3 von 5)• Realisierung und Test (2)
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
3
Objektorientierte Analyse und Entwurf
Übungsbeispiel: Rückversicherung
Org.-Vertrag Ordnung{abstract}
Propostional Geschichtet
Prop-Anteilanteil:Prozent
SchichtLimit:Betrag
* *hat
1
*Anteil
{abstract}
RV-Kanal{abstract}
RV-Vertraghat 1* hat
[0,1]
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
4
Objektorientierte Analyse und Entwurf
Lernziele
• Verständnis für die Wichtigkeit des Entwurfs• Einsicht in die Dreifaltigkeit
– Material, Werkzeug, Prozeß– Attribute, Operationen, Interaktion
• Gefühl für den Übergang Analyse / Entwurf• Kennenlernen der Beschreibungsmittel• Einsicht in den nötigen Detaillierungsgrad• Erlernen erster Faustregeln für guten Entwurf• Regeln für angemessene Benutzeroberflächen
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
5
Objektorientierte Analyse und Entwurf
Inhalt
• Composite pattern• Decorator pattern• Adapter pattern• Command pattern• Mediator pattern• Observer pattern
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
6
Objektorientierte Analyse und Entwurf
Composite Pattern
• Repräsentation von Teil-Ganzes-Hierarchien
• Vereinheitlichen von Teilen und Ganzem• Verstecken des Aufbaus vor Klienten
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
7
Objektorientierte Analyse und Entwurf
Composite Pattern
Compositeoperation()
Component{abstract}
operation()Client
Leafoperation()
children
For all g in childreng.operation()
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
8
Objektorientierte Analyse und Entwurf
Decorator Pattern
• Hinzufügen von Veranwortlichkeiten – dynamisch– transparent– ohne Seiteneffekte
• Für temporäre oder lokale Zusatzdienste• Wo Spezialisierung unübersichtlich wird
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
9
Objektorientierte Analyse und Entwurf
Decorator Pattern
Decorator{abstract}
operation()
Component{abstract}
operation()Client
Concrete Componentoperation()
component
1
Decorator Aoperation()
Decorator Boperation()
component.operation()
Decorator::operation();addedBehavior()
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
10
Objektorientierte Analyse und Entwurf
Adapter Pattern
• Benutzung einer Klasse, deren Schnittstelle nicht optimal paßt
• Anpassung von Schnittstellen an die Bedürfnisse des Klienten
• Herstellen einer in unterschiedlichen Kontexten wiederverwendbaren Klasse
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
11
Objektorientierte Analyse und Entwurf
Adapter PatternTarget{abstract}
request()Adaptee
specRequest()
Adapter
Client
request() specRequest()
„implements“ „inherits“
Target{abstract}
request()Adaptee
specRequest()
Adapter
Client
request() adaptee.specRequest()
adaptee
„implements“
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
12
Objektorientierte Analyse und Entwurf
Command Pattern
• Nachrichten als Objekte• Trennen von Versenden und Ausführung• Unterstützung für „undo“• Unterstützung für Log-Files• Basis für Objekt-Transaktionen
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
13
Objektorientierte Analyse und Entwurf
Command Pattern
Client Invoker Command{abstract}
execute()
ConcreteCommandexecute()
Receiveraction()
receiver
receiver.action
Client Invoker Command{abstract}
execute()
ConcreteCommandexecute()
Receiveraction()
receiver
receiver.action
aReceiver aClient aCommand anInvoker
new(aReceiver)
storeCommand(aCommand)
executeaction
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
14
Objektorientierte Analyse und Entwurf
Mediator Pattern
• Viele Objekte kommunizieren in komplexer Art
• Wiederverwendung eines Objekts scheitert an den vielfältigen Beziehungen
• Objektifizierung und damit Anpaßbarkeit komplexer Kommunikationsbeziehungen
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
15
Objektorientierte Analyse und Entwurf
Mediator Pattern
Mediator Colleague
ConcreteMediator Colleague 2Colleague 1
mediatorKlassen:
Objekte:
m:Mediator
c1:colleague
c2:colleague
c3:colleague
c6:colleague
c5:colleague
c4:colleague
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
16
Objektorientierte Analyse und Entwurf
Observer Pattern
• Umkehr von Beziehungen• Umkehrung der Bekanntschaftsverhältnisse• Benachrichtigung ohne Wissen darüber,
wer benachrichtigt werden muß• Erhöhung der Wiederverwendbarkeit
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
17
Objektorientierte Analyse und Entwurf
Observer Pattern
ConcreteObserver
update()
Subjectattach(Observer)detach(Observer)
notify
observers
*
ConcreteSubject
setState()
getState()
Observer{abstract}
update()
subject
for all o:observerso.update
<2>
observerState=subject.getState()
<3>
setState(); notify()
<1>
Entwurfsmuster Prof. Dr. Michael Löwe, FHDW, Hannover
18
Objektorientierte Analyse und Entwurf
Zusammenfassung
• Muster sind Faustregeln für guten Entwurf• Sie sind Entwurfsfragmente• Sie erhöhen die Wiederverwendung• Sie standardisieren den Entwurf• Sie sind bekannte Lösungen für
Entwurfsprobleme