-LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff...
-
Upload
reginar-alexy -
Category
Documents
-
view
103 -
download
0
Transcript of -LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: State Gruppe: Christian Wolff...
-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
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
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.
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
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
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
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
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
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.
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.
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.
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.
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.
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
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
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