oose entwurfsmuster (hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/oose8 slides.pdf ·...

26
OOSE 8 Entwurfsmuster (Hörsaalübung) SS 2015 Birgit Demuth SS 2015 Softwaretechnologie / OOSE 8

Upload: others

Post on 08-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

OOSE 8Entwurfsmuster(Hörsaalübung)

SS 2015Birgit Demuth

SS 2015 Softwaretechnologie / OOSE 8

Page 2: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Entwurfsmuster in Softwaretechnologie 2015

Prüfungsrelevant• Composite• Iterator• Factory Method• Class Adapter• Object Adapter• Observer • Singleton• State• Strategy (Template Class)• Template Method

Weitere in Vorlesung• MVC• Decorator• Abstract Factory (Factory Class)• Bridge (Dimensional Class Hierarchies)• Varianten des Observers

– Callback (push und pull)– Pull Observer (Event Bridge)– Push Observer– Observer with ChangeManager (EventBus)

• Visitor• Facade• Proxy

SS 2015 Softwaretechnologie / OOSE 8

Page 3: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 1

• Stellt sicher, dass nur genau eine Instanz von GlobalResource erzeugt wird. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 4: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Strukturmuster Singleton• Name: Singleton (dt.: Einzelinstanz)• Problem:

– Sicherstellung, daß von einer Klasse genau ein Objekt besteht.• Lösung:

Singleton– theInstance: SingletongetInstance(): Singleton

class Singleton {

private static Singleton theInstance;

private Singleton () {}

public static Singleton getInstance() {if (theInstance == null)theInstance = new Singleton();

return theInstance;}

}

Expliziter Konstruktor wird(für andere Klassen)

unbenutzbar gemacht!

SS 2015 Softwaretechnologie / OOSE 8

Page 5: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 2

• Es sollen alle Elemente (Einzelelemente und Elementgruppierungen) in einer verschachtelten Struktur gleich behandelt werden, so dass aus Sicht des Clients keine explizite Unterscheidung notwendig ist. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 6: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Structure Composite

Component

commonOperation()add(Component)remove(Component)getType(int)

Composite

commonOperation()add(Component)remove(Component)getType(int)

Leaf

commonOperation()

ClientchildObjects

for all g in childObjectsg.commonOperation()

} Pseudo implementations

*

• Composite has an recursive n‐aggregation to the superclass

SS 2015 Softwaretechnologie / OOSE 8

Page 7: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 3

• Es wird eine Schnittstelle für die Erzeugung von Objekten definiert. Die Entscheidung, welche konkrete Klasse zu instanziieren, zu konfigurieren und schließlich zurückzugeben ist, wird konkreten (Unter‐)Klassen überlassen, die diese Schnittstelle implementieren. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 8: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Structure for FactoryMethod 

Creator

FactoryMethod()anOperation()

ConcreteCreator

FactoryMethod()

Product

ConcreteProduct

return new ConcreteProduct

...Product = FactoryMethod()...

• FactoryMethod is a variant of TemplateMethod

SS 2015 Softwaretechnologie / OOSE 8

Page 9: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 4

• Es wird die Struktur eines Algorithmus definiert, wobei einzelne, konkrete Schritte in Unterklassen verlagert werden. Das Muster erlaubt es, bestimmte Operationen eines Algorithmus zu überschreiben, ohne dessen Struktur zu ändern. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 10: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

• Define the skeleton of an algorithm (template method)– The template method is 

concrete• Delegate parts to abstract hook 

methods that are filled by subclasses

• Implements template and hook with the same class, but different methods

• Allows for varying behavior– Separate invariant from variant 

parts of an algorithm

TemplateMethod Pattern

...primitiveOperation1();...primitiveOperation2();...

AbstractClass

TemplateMethod()primitiveOperation1()primitiveOperation2()

ConcreteClass

primitiveOperation1()primitiveOperation2()

SS 2015 Softwaretechnologie / OOSE 8

Page 11: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 5

• Sie wollen einen Sortieralgorithmus unabhängig von nutzenden Clients austauschen. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 12: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Strategy (also called Template Class)

HookClass (Strategy)

hookMethod()

ConcreteHookValueA

hookMethod()

ConcreteHookValueB

hookMethod()

TemplateClass

templateMethod()

hookObject

hookObject.hookMethod()

SS 2015 Softwaretechnologie / OOSE 8

Page 13: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 6

• Es wird einem Objekt ermöglicht, sein Verhalten zu ändern, wenn sein interner Zustand ändert.  Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 14: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Strukturmuster State • Name: State (auch: Zustandsobjekte, Objects for States)• Problem:

– Flexible und anpaßbare Möglichkeit, das Objektverhalten zu ändern, wenn sich ein interner Zustand ändert.

• Lösung :

State{abstract}

...

handle()

State1

handle()

{abstract}

State2

handle()

Context

request()setState (s: State)

state

ruft state.handle

auf

SS 2015 Softwaretechnologie / OOSE 8

Page 15: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 7

• Sie müssen nacheinander alle Elemente einer aggregierten Struktur (z.B. Baum oder Liste) bearbeiten. Dazu müssen diese sequenziell geliefert werden, wobei unterschiedliche Traversierungsvarianten zum Einsatz kommen können. Die entsprechende Logik sollte außerhalb des Clients realisiert werden, um diesen von der Struktur zu entkoppeln. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 16: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Verhaltensmuster Iterator• Name: Iterator (auch: Stream, Cursor, Enumeration)

• Problem:–Sequentielles Durchlaufen der Elemente eines zusammengesetzten Objekts.

• Lösung:

elements(): Iterator

Aggregate

Element

next()hasNext()

Iterator

ConcreteIterator

{abstract}

<<create>>

SS 2015 Softwaretechnologie / OOSE 8

Page 17: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 8

• Sobald sich der Zustand eines bestimmten Objekts ändert, sollen andere Objekte ihren Zustand automatisch anpassen. Um welches Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 18: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Structure ObserverSubject

register(Observer)unregister(Observer)notify()

Observerobservers

ConcreteSubject

getState()setState()

update ()

ConcreteObserver

update ()

ObserverState

for all b in observers {b.update ()

}

SubjectObserverState =

Subject.getState()

return SubjectStateSubjectState

*

SS 2015 Softwaretechnologie / OOSE 8

Page 19: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 9

• Spezielle Listen sollen unter Wiederverwendung eines Collection‐Frameworks (hier java.util.*) implementiert werden. Um welche Muster handelt es sich?

SS 2015 Softwaretechnologie / OOSE 8

Page 20: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Object Adapter

Goal

operation()

Client

AdaptedClass

specificOperation()

Adapter

operation()

adaptedObject.specificOperation()

Object adapters use delegation

adaptedObject

Decorator-likeinheritance

Adapted class doesnot inherit from goal

SS 2015 Softwaretechnologie / OOSE 8

Page 21: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Class Adapter

GoalClass

operation()

Client AdaptedClass

specificOperation()

Adapter

operation()

(Implementation)

specificOperation()

Instead of delegation, class adapters use multiple interitance

Can also be interface

SS 2015 Softwaretechnologie / OOSE 8

Page 22: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Beispiel 9mit eingezeichneten Mustern

SS 2015 Softwaretechnologie / OOSE 8

Page 23: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Lösung

Beispiel Entwurfsmuster

1 Singleton

2 Composite

3 Factory Method

4 Template Method

5 Strategy (Template Class)

6 State

7 Iterator

8 Observer

9 Object Adapter und Class Adapter

SS 2015 Softwaretechnologie / OOSE 8

Page 24: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Aufgabenübersicht SS 2015Übung/Hausaufgabe

Aufgabe Design Pattern(s) Praktomat

U07 Bauteil Composite

U07 MyCollection Iterator

HA07 Stücklistenverwaltung Composite

HA07 MyMatrix Objektadapter,  Iterator ja

HA07 RenovationProject Composite, Template Method ja

U08 AudioClipManager Singleton

U08 Queue Factory Method, Objektadapter, Klassenadapter(, Strategy)

ja

HA08 CoolIdeas State, Observer ja

U12 EPost Template Method

U13 Garagentor (Garage Door) State ja

U14 Würfel Observer

SS 2015 Softwaretechnologie / OOSE 8

Page 25: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Weitere Praktomatsaufgaben

Aufgabe Design Pattern(s)

Predicate Iterator Factory Method, Iterator, Strategy(, Object Adapter)

Vehicle Queue Factory Method, Singleton, Observer

Part Management Factory Method, Observer

Vocabulary Trainer State, Strategy

Desktop Search Engine Iterator, Strategy

Pricing Factory Method, Composite, Strategy

Project Management Objektadapter, Composite , Strategy, Templete Method

COOLIdeas State, Observer

SS 2015 Softwaretechnologie / OOSE 8

Hinweis: Lösungen zu Part Management und Vocabulary Trainer sind in [1] , S. 336 enthalten

Page 26: OOSE Entwurfsmuster (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE8 Slides.pdf · Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant • Composite •

Hilfe am Rechner gesucht?

Lernraum jeweils montags 6. DS, E065&

Auditorium

SS 2015 Softwaretechnologie / OOSE 8