18
Diagramma di macchina a stati

UMLDay: Diagramma di Stato

Embed Size (px)

Citation preview

Page 1: UMLDay: Diagramma di Stato

Diagramma di macchina a stati

Page 2: UMLDay: Diagramma di Stato

Elementi

Nome

trigger [guardia] / attività

stato

transizione

etichetta

pseudostato iniziale

pseudostato finale

Page 3: UMLDay: Diagramma di Stato

Un piccolo esempio

Stato1trigger [guardia] / attività

Stato2

Page 4: UMLDay: Diagramma di Stato

La transizione

Stato1trigger [guardia] / attività

Stato2

Stato1trigger / attività

Stato2

Stato1trigger [guardia]

Stato2

Stato1[guardia] / attività

Stato2

Stato1 Stato2

Page 5: UMLDay: Diagramma di Stato

La transizione

Stato1 Stato2

Stato3

trigger [true] / attività

trigger [false] / attività

Page 6: UMLDay: Diagramma di Stato

Lo Stato

Stato

Statoentry/ attivitàexit/ attivitàtrigger [guardia] / attivitàdo/ attività…

trigger [guardia] / attività

Stato di attività

Stato

do/ attività

attività di entrataattività di uscitaattività internedo-activity

Auto-anelloAuto-transizione

Page 7: UMLDay: Diagramma di Stato

Superstati e sottostati

Superstato

Sottostato1 Sottostato2

Stato1 Stato2

Page 8: UMLDay: Diagramma di Stato

Stati concorrenti

Stato

Sottostato0 Sottostato1

Sottostato0 Sottostato1

Page 9: UMLDay: Diagramma di Stato

Stati concorrenti

Stato

Sottostato0 Sottostato1

Sottostato0 Sottostato1

Page 10: UMLDay: Diagramma di Stato

Stati concorrenti

Stato

Sottostato0 Sottostato1

Sottostato0 Sottostato1H

pseudostato di storia

Page 11: UMLDay: Diagramma di Stato

Stati concorrenti

Stato

Sottostato0 Sottostato1

Sottostato0 Sottostato1H

pseudostato di storia

Stato

Page 12: UMLDay: Diagramma di Stato

Esempio: La radiosveglia

Page 13: UMLDay: Diagramma di Stato

State Pattern

Lo State Pattern consente ad un oggetto di alterare il suo comportamento quando cambia il suo stato interno. L’oggetto sembrerà cambiare classe.

Contextrequest()

this.state.handle()

Statehandle()

ConcreteStateAhandle()

ConcreteStateBhandle()

Page 14: UMLDay: Diagramma di Stato

State Pattern

StateMachinepushOn()pushOff()

if (plugged) this.state.enable()

State

enable()disable()

StateOffenable()

StateOndisable()

StateOffpushOn [plugged] / enable

StateOnpushOff [plugged] / disable

Page 15: UMLDay: Diagramma di Stato

Esercizio - Vita sentimentale di un italiano medio

L'italiano medio inizia la sua vita sentimentale nello stato di Single nel quale la sua principale attività è cercare una partner.

Quando trova una partner entra nello stato Impegnato nel quale rimane fino a quando un giorno attraverso la donazione di un anello di valore non irrilevante, entra nello stato di Fidanzato. In entrambi i questi stati la sua principale attività è cenare fuori con la partner.

Dallo stato Fidanzato un giorno, attraverso il matrimonio l’italiano medio entra nello stato di Coniugato. In questo stato la principale attività dell’italiano medio è guardare la tv.

Dagli stati Impegnato, Fidanzato, Coniugato l’italiano medio può tornare nello stato di Single lasciandosi con la partner

Page 16: UMLDay: Diagramma di Stato

Lo stato di Single è in realtà composto di 3 sottostati interni. Inizialmente l’italiano medio è a Riposo e la sua principale attività è bere birra con gli amici.

Poi un giorno si mette alla Ricerca e appunto cerca una partner.

Quando ne individua una con specifici parametri comincia il Corteggiamento, all’inizio del quale preventivamente vengono acquistati dei fiori nella speranza di regalarli alla partner.

In caso di rifiuto l’italiano medio torna alla Ricerca, se accetta esce dallo stato di Single e diventa Impegnato.

Quando si stanca di cercare ritorna a Riposo.

Esercizio - Vita sentimentale di un italiano medio

Page 17: UMLDay: Diagramma di Stato

Esercizio - Vita sentimentale di un italiano medio

In realtà però quando l’italiano medio si trova negli stati di Single, Impegnato e Fidanzato si è comunque nello stato di Celibe, dal quale esce solo con il matrimonio diventando Coniugato

Page 18: UMLDay: Diagramma di Stato

Esercizio - Vita sentimentale di un italiano medio

In realtà però l’italiano medio quando si sposa lo fa sia civilmente che religiosamente. Nel caso in cui l’italiano medio si lasci dallo stato di Coniugato l’iter è differente:- Dal punto di vista civile, in seguito ad un litigio nel quale non si sia trovato un accordo attraverso la separazione l’italiano medio entra nello stato di Separato. Se non avviene una riconciliazione che riporta l’italiano medio nello stato di Coniugato, dopo 4 anni avviene il divorzio e civilmente ritorna ad essere Celibe.- Dal punto di vista religioso, Se la Sacra Rota accetta una richiesta di annullamento, l’italiano medio torna ad essere Celibe, altrimenti rimane Coniugato finché morte non vi separi.