-LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff...

16
-LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern“ Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R., Vlissides, J., „Entwurfsmuster“, Addison Wesley, Bonn, 1996

Transcript of -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff...

Page 1: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

-LABORPRAKTIKUM-SOMMERSEMESTER 2005

„Umsetzung von Pattern“

Muster: State

Gruppe: Christian WolffMarita Schwaß

Quelle:Gamma, E., Helm, R., Jonson, R., Vlissides, J.,„Entwurfsmuster“, Addison Wesley, Bonn, 1996

Page 2: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

State – Muster (Zustand)

Laborpraktikum„Umsetzung von

Pattern“

1/15

Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

Schwerpunkte :

1. Zweck

2. Motivation

3. Struktur

4. Interaktion

5. Konsequenzen

6. Implementierung

7. Verwandte Muster

Page 3: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

1. Zweck

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

2/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

Es soll einem Objekt möglich sein,

sein Verhalten zu ändern,

wenn sich sein interner Zustand ändert.

Das Objekt scheint dann seine Klasse zu ändern.

Variante:Der interne Zustand eines Objektes ändert sich.

Page 4: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

2. MotivationLaborpraktikum„Umsetzung von

Pattern“

1. Zweck 2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

3/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

Beispiel Lichtautomat:

1. Zustand = Klasse

Page 5: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

2. Motivation

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck 2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

4/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

2. Verallgemeinerung

Page 6: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

2. Motivation

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck 2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

5/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

3. Aggregation zur Automaten-Klasse

Page 7: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

2. Motivation

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck 2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

6/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

4. Java-Code

Page 8: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

3. Struktur

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

7/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

Kontext: - definiert die den Klienten interessierende Schnittstelle- verwaltet ein Exemplar einer KonkreterZustand-

Unterklasse, welche den aktuellen Zustand definiert

Zustand: - definiert Schnittstelle zur Kapselung des mit einem be- stimmten Zustand des Kontextobjekts verbundenen

Verhalten

KonkreterZustand: - jede Unterklasse beinhaltet ein Verhalten, das mit einem Zustand des Kontextobjekts verbunden ist

Page 9: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

4. Interaktion

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

8/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

1. Kontextobjekt delegiert zustandsspezifische Anfragen an das aktuelle KonkreterZustand-Objekt.

2. Ein Kontext kann sich selbst als Argument an das die Anfrage bearbeitende Zustandsobjekt mitgeben. Dadurch ist es dem

Zustandsobjekt möglich, ggf. auf das Kontextobjekt zuzugreifen.

3. Das Kontextobjekt bietet die für die Kunden interessante Schnittstelle. Der Kunde kann ein Kontextobjekt mit Zustandsobjekten konfigurieren. Ist ein Kontextobjekt einmal konfiguriert, braucht sich der Kunde nicht mehr direkt mit den Zustandsobjekten befassen.

4. Welche Zustände aufeinander folgen und unter welchen Bedingungen sie dies tun, kann sowohl von der Kontext- als auch den KonkreterZustand-Unterklassen bestimmt werden.

Page 10: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

5. Konsequenzen

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

9/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

1. Das Zustandsmuster lokalisiert zustandspezifisches Verhalten und teilt das Verhalten in unterschiedliche

Zustände auf.

- Der gesamte zustandsspezifische Code ist in einer Zustands- unterklasse neue Zustände und Zustandsübergänge können

einfach durch Definition einer neuen Unterklasse hinzugefügt werden.

- Logik der Zustandsübergänge ist auf die Zustandsunterklassen verteilt leichter zu überschauen und zu warten

2. Zustandsobjekte können gemeinsam genutzt werden.

- Wenn Zustandsobjekte über keine Exemplarvariablen verfügen, dann können Kontextobjekte ein Zustandsobjekt

gemeinsam nutzen.

Page 11: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

6. Implementierung

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

10/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

1. Definition der Zustandsübergänge

- Im Zustandsmuster ist nicht bestimmt, welcher Teilnehmer die Kriterien der Zuständeübergänge definiert.

- Ändern sich die Kriterien nicht, könnten sie direkt im Kontextobjekt implementiert werden.

- Flexibler ist es jedoch, wenn die Zustandsklassen ihren Nachfolgezustand und wann der Übergang erfolgen soll, selbst angeben. Kontextobjekt erhält weitere Schnittstelle, die es den Zustandsobjekten ermöglicht, den aktuellen Zustand des Kontextobjekts explizit zu setzen.

Page 12: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

6. Implementierung

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

11/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

2. Erzeugen und Löschen von Zustandobjekten

Frage: Sollen Zustandsobjekte nur bei Bedarf erzeugt werden und danach gelöscht werden (1) oder

im voraus erzeugt und danach niemals gelöscht werden(2).

(1) Sollte genutzt werden, wenn die möglichen Eingabezustände zur Laufzeit bekannt sind und sich die Kontextobjekte selten ändern.

(2) Sollte genutzt werden, wenn die Zustandsänderungen schnell und häufig sind.

Page 13: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

6. Implementierung

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

12/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

3.Alternativen zur Realisierung von Zustandsdiagrammen

3.1. Tabellenbasierte Alternative

Idee: Jeder Zustand hat eine Tabelle, in der jede mögliche Eingabe auf einen Nachfolgezustand abgebildet wird.

Vorteil: regelmäßige Struktur der Tabelle

Übergangskriterien können durch die Modifikation von Daten festgelegt werden, statt durch Programmcode.

Nachteil: Übergänge sind weniger explizit zu sehen und daher schwerer zu warten

Aktionen während eines Zustandsüberganges sind schwierig einzubinden.

Page 14: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

6. Implementierung

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

13/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

3.2. Logische Ausdrücke

Vorteile:äußerst kompakt, ideal für Hardwarerealisierung

Nachteile:Minimierung der Zustandsübergangstabelle nötig, schlechterweiterbar

3.3. Case-Anweisungen

Vorteile:geeignet für procedurale Sprachen, relativ kompakt

Nachteile:verschachtelte Case/If-then-Konstrukte, unübersichtlich, schlechterweiterbar

Page 15: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

6. Implementierung

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

14/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

3.4. State - Muster

Vorteile:

geeignet für objektorientierte Sprachen,gut erweiterbar, übersichtlich,hohe Verfolgbarkeit vom Zustandsdiagramm zum Code

Nachteile:

viele Klassen (Code) mit hoher Ähnlichkeit

Page 16: -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff Marita Schwaß Quelle: Gamma, E., Helm, R., Jonson, R.,

7.Verwandte Muster

Laborpraktikum„Umsetzung von

Pattern“

1. Zweck2. Motivation3. Struktur4. Interaktion5. Konsequenzen6. Implementierung7. Verwandte Muster

15/15Christian WolffMarita Schwaß

Fernstudium InformatikMatrikel 2000

Fliegengewichtmuster:

erläutert, wann und wie Zustandsobjekte gemeinsam genutzt werden können.

Singletons:

Zustandsobjekte sind oft Singletons