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

Post on 08-Oct-2019

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OOSE 8Entwurfsmuster(Hörsaalübung)

SS 2015Birgit Demuth

SS 2015 Softwaretechnologie / OOSE 8

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

Beispiel 1

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

SS 2015 Softwaretechnologie / OOSE 8

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

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

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

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

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

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

• 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

Beispiel 5

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

SS 2015 Softwaretechnologie / OOSE 8

Strategy (also called Template Class)

HookClass (Strategy)

hookMethod()

ConcreteHookValueA

hookMethod()

ConcreteHookValueB

hookMethod()

TemplateClass

templateMethod()

hookObject

hookObject.hookMethod()

SS 2015 Softwaretechnologie / OOSE 8

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

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

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

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

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

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

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

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

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

Beispiel 9mit eingezeichneten Mustern

SS 2015 Softwaretechnologie / OOSE 8

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

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

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

Hilfe am Rechner gesucht?

Lernraum jeweils montags 6. DS, E065&

Auditorium

SS 2015 Softwaretechnologie / OOSE 8

top related