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

Preview:

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

Recommended