18
OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

Embed Size (px)

Citation preview

Page 1: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

OO Analyse und Entwurf für Anwender

XII. EntwurfsmusterDr. Michael Löwe

Page 2: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. 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)

Page 3: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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]

Page 4: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 5: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 6: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 7: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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()

Page 8: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 9: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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()

Page 10: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 11: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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“

Page 12: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 13: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 14: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 15: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 16: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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

Page 17: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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>

Page 18: OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe

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