Aktionen im State-Design-Modell

joe89

Aktives Mitglied
Wo werden eigentlich in einem State-Design-Modell die Aktionen durchgeführt ?

Beispiel: eine Temperatur soll ermittelt werden.
Der Zustand eines Heizgerätes ändert sich von (Heizen [an]) zu (Heizen [aus]).

(a) Daten an ein externes Messgerät senden
(b) Daten zurückbekommen
(c) Daten auswerten
(d) einen neuen Zustand setzen

Die Punke (a)(b)(c) kann ich ausserhalb des Modells bearbeiten. Der (neue) Zustand ergibt aus dem Vergleich zwischen gemessener Temperatur und einem Vorgabewert.

Nach Vorgabe des Modells soll die Zustandsänderung in einer Zustandsklasse erfolgen.

Wie kann man dort einen (neuen) Zustand definieren ohne Temperatur und Vorgabewert wieder mit if() vergleichen zu müssen ?

Gibt es im Internet eine Seite, auf der jemand ein komplettes Beispiel mit Aktionen beschrieben hat ?

Vielen Dank.

joe89
 
S

SlaterB

Gast
hab mal kurz bei Wikipedia nachschaut und sehe es jetzt so, dass die Essenz dieses Patterns ist, dass sich ein Zustand gemerkt wird,
nicht grad viel, aber schon ein wichtige grundlegende Eigenschaft

wer wann wo warum den Zustand ändert, ob mit if oder nicht, ist kein Thema, wieso fixierst du dich darauf?

aber wenn es sein muss:
State pattern - Wikipedia, the free encyclopedia
schau dir dort den Pseudocode
Code:
subclass PenTool of AbstractTool is
     last_mouse_position := invalid
     mouse_button := up
 
     function moveTo(point) is
         input:  the location point the mouse moved to
         if mouse_button = down
             (draw a line from the last_mouse_position to point)
             last_mouse_position := point
an, eindeutig mit if, Wertevergleich usw., wenn MausButton nicht gedrückt ist, bringt der Änderungs-Aufruf gar keine Änderung des Zustands,
und dass der Aufrufer eines Zeichen-Tools selber schon diverse Kontrollstrukturen verwendet, versteht sich meiner Meinung nach von selbst
 

joe89

Aktives Mitglied
Hallo slaterB,

wer wann wo warum den Zustand ändert, ob mit if oder nicht, ist kein Thema, wieso fixierst du dich darauf?

Meine Aufgabenstellung habe ich im dem Beitrag 'Klasse wechsele dich' hier in diesem Forum beschrieben. Die Antworten auf meinen Beitrag haben mich auf das Design-State-Modell hingewiesen, das ich bislang noch nicht kannte.

Mit diesem Modell können geschachtelte if() und switch() -Anweisungen verhindert werden, indem für jeden Zweig der bedingten Anweisung eine einzelne Zustandsklasse verwendet wird. Ich habe mich jetzt gefragt, ob durch die Verwendung von if()-Abfragen in Zustandsklassen die Vorgaben des Modells verletzt werden. Nach deinem Hinweis scheint dies nicht der Fall zu sein.

Gruß
joe89
 
S

SlaterB

Gast
hmm hmm, das hatte ich am Anfang nicht ganz so genau verstanden,
ich dachte an den grunsätzlich veränderbaren inneren Zustand eines Objektes,
und PenTool an sich gehört auch eher dahin, da wird die Positions-Variable geändert, nicht auf einen vordefinieren anderen Zustand gewechselt

mein Link scheint dennoch richtig zu sein, zu PenTool ist der zweite Zustand SelectionTool

viel interessanter aber das Beispiel weiter unten
Java:
interface State { 
	public void writeName(StateContext stateContext, String name);
} 
 
class StateA implements State { 
	public void writeName(StateContext stateContext, String name) { 
		System.out.println(name.toLowerCase()); 
		stateContext.setState(new StateB()); 
	} 
} 
 
class StateB implements State { 
	private int count=0; 
	public void writeName(StateContext stateContext, String name){ 
		System.out.println(name.toUpperCase()); 
		// change state after StateB's writeName() gets invoked twice
		if(++count>1) { 
			stateContext.setState(new StateA()); 
		}
	}
}
dort ist in StateB eindeutig auch ein if,

für deine Heizung ist ein Vergleich mit alter Temparatur auch unvermeidbar, wer das macht?..
daraus wird jedenfalls erst ein Ereignis abgleitet, 'Messwert über/unterschritten',
wenn das feststeht kann jeder Zustand ohne if passend reagieren,
entweder zum anderen wechseln oder nix zu tun, in Aus muss die Methode 'abschalten()' nix tun, wobei dann fraglich ist, wieso das Ereignis auftreten kann ohne dass die Heizung vorher an war,

statt zwei Methoden anschalten()/ abschalten() die ohne if auskommen, könnte ich persönlich auch mit einer Methode reagiereAufEreignis(Ereignis) leben und darin ein if/switch um zwischen den verschiedenen Ereignissen zu unterscheiden,
es braucht aber keine Unterscheidung nach 'bin ich grad an oder bin ich grad aus?' wenn man eben zwei verschiedene Zustände An/ Aus hat
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Button mit mehreren Aktionen? Allgemeine Java-Themen 7
M [SOLVED]MVC, einmalige aktionen Allgemeine Java-Themen 7
C java- state of the art ?!? Allgemeine Java-Themen 0
vodkaz state machine Allgemeine Java-Themen 1
T Global state Allgemeine Java-Themen 12
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
G Methodenaufrufe wie state maschine Allgemeine Java-Themen 4
S State-Of-The-Art bei Datenbankzugriffen Allgemeine Java-Themen 10
A State-of-the-Art Techniken für Desktop Programme ? Allgemeine Java-Themen 3
MQue Vector<State> Allgemeine Java-Themen 2
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
S ArrayList Design Allgemeine Java-Themen 4
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Java Design Frage Allgemeine Java-Themen 10
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
M OOP Design Frage Allgemeine Java-Themen 2
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
S Design Oberfläche Allgemeine Java-Themen 2
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
G Domain Driven Design Model Allgemeine Java-Themen 14
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
T Design-Frage Allgemeine Java-Themen 14
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
S JToolBar Design Allgemeine Java-Themen 3
M Bildersyncronisierung - Design Patterns? Allgemeine Java-Themen 2
T Design - Exception in Thread Allgemeine Java-Themen 3
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
M Frage zum Design :: allgemein Allgemeine Java-Themen 6
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
U Frage zu DB Design Allgemeine Java-Themen 3
K Design / Implementierung Allgemeine Java-Themen 5
N Checkstyle - Design for Extension Allgemeine Java-Themen 4
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
P Apple Design Allgemeine Java-Themen 5
S design frage Allgemeine Java-Themen 10
T Design-Tipp gesucht Allgemeine Java-Themen 2
M Design von Java Klassen Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
S Programmierstil / design Allgemeine Java-Themen 9
S Exception design Allgemeine Java-Themen 2
m@nu Exception-Design Allgemeine Java-Themen 4
R Design-Frage Allgemeine Java-Themen 9
N Hilfe beim Design Allgemeine Java-Themen 13
D Design Pattern: Singleton Allgemeine Java-Themen 4
Torres Design-Problem mit Jakarta Struts Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben