Sunteți pe pagina 1din 26

Diagrama de Modelarea

mașini cu stări dinamică


Cuprins

▪ Introducere
▪ Stări
▪ Tranziţii
▪ Tipuri de evenimente
▪ Tipuri de stări
▪ Puncte de intrare și ieșire

2
Introducere

▪ Fiecare obiect trece printr-un număr finit de stări diferite pe parcursul


vieții sale
▪ Diagrama de mașini cu stări este utilizată:
▪ Pentru modelarea stărilor posibile ale unui sistem sau obiect
▪ Pentru a arăta cum au loc tranzițiile dintre stări ca urmare a unor
evenimente
▪ Pentru a arăta ce comportament prezintă sistemul sau obiectul în fiecare
stare
▪ Exemplu: descrierea la nivel înalt a comportamentului unei săli de
cursuri Tranziție Stare

3
Exemplu: SalaCurs cu detalii

class SalaCurs {
private boolean libera;

public void ocupa() {


disponibila=false;
}
public void elibereaza() {
disponibila=true;
}
}

4
Exemplu: Ceas digital

5
Stare

▪ Stări = noduri ale mașinii de stare


▪ Când o stare este activă
▪ Obiectul se află în starea respectivă
▪ Toate activitățile interne specificate în această stare pot fi executate
▪ O activitate poate consta din mai multe acțiuni
▪ entry / Activity(...)
▪ Executată când obiectul intră în stare
▪ exit / Activity(...)
▪ Executată când obiectul iese din stare
▪ do / Activity(...)
▪ Executată cît timp obiectul rămâne în această
stare

6
Tranzitie

▪ Schimbare de la o stare la alta

Eveniment Condiție Secvență de acțiuni(efect)

Stare sursă Tranziție Stare țintă

7
Tranziție – Sintaxă

▪ Eveniment (trigger)
▪ Stimul exogen
▪ Poate declanșa o tranziție a unei stări
▪ Condiție (guard)
▪ Expresie booleană
▪ Dacă evenimentul are loc, condiția este verificată
▪ Arunci când condiția este adevărată
▪ Toate activitățile din starea actuală sunt încheiate
▪ Orice activitate de ieșire relevantă este executată
▪ Tranziția are loc
▪ Arunci când condiția este falsă
▪ Nu are loc nici o tranziție, evenimentul este anulat
▪ Activitate (efect)
8
▪ Secvența acțiunilor executate în timpul unei tranziții de stare
Tranziție – Tipuri (1/2)

Tranziție internă Tranziție externă

ev1

▪ Dacă are loc ev1 ▪ Dacă are loc eveniment1


(eveniment1) ▪ Obiectul iese din starea1 și
▪ Obiectul rămâne în stare1 Activitatea2 este executată
▪ Activitatea3 este executată ▪ Activitatea3 este executată
▪ Obiectul intră în starea1 și
Activitatea1 este executată

9
Tranziție – Tipuri (2/2)

▪ Când au loc următoarele tranziții?


Dacă are loc e1, A1 este anulată și obiectul își
schimbă starea în S2
Dacă are loc e1 și g1 este evaluată ca fiind
adevărată, A1 este anulată și obiectul își
schimbă starea în S2
Imediat ce execuția lui A1 este terminată, se
generează un eveniment de finalizare care
inițiază tranziția la S2
Imediat ce execuția lui A1 este terminată, se
generează un eveniment de finalizare; dacă g1
este evaluată ca fiind adevărată, tranziția are
loc; dacă nu, această tranziție nu se poate
întâmpla niciodată
10
Tranziție - Secvență de executare a activității

▪ Presupunând că S1 este starea activă, care este valoarea lui x după


ce se realizează e?

S1 devine activă, x este setat la valoarea 4


e are loc, condiția este verificată și evaluată ca adevărată
S1 este părăsită, x este setat la 5
tranziția are loc, x este setat la 10
se intră în S2, x este setat la 11

11
Eveniment - Tipuri (1/2)

▪ Eveniment de tip Semnal


Primirea unui semnal
▪ Ex: click_dreapta, trimiteSMS(mesaj)
▪ Eveniment de tip Apel
Apelul unei operații
▪ Ex: ocupa(utilizator,sala_de_prelegeri),
înregistrează(examen)
▪ Eveniment de timp
Tranziție bazată pe timp
▪ Relativă: în funcție de momentul producerii evenimentului
▪ Ex: după(5 secunde)
▪ Absolută
▪ Ex: când(oră==16:00), când(data==2020.01.01)

12
Eveniment - Tipuri (2/2)
▪ Orice eveniment de primire
Se folostește pentru a modela tranzițiile de tip else
▪ Cuvânt cheie all
▪ Din stare S1 obiectul trece în starea S2 la producerea
evenimentului e1 și în S4 la producerea oricărui
eveniment
▪ Eveniment de finalizare
Generat automat atunci când tot ceea ce trebuie făcut
în starea curentă este finalizat
▪ Eveniment de schimbare
Se verifică permanent îndeplinirea unei condiții
▪ Ex: când(x > y), după(90min)

13
Eveniment de schimbare vs. Condiție

Verificat permanent

Verificată numai când are loc evenimentul

14
Stare inițială

▪ Desemnează “începutul” unei diagrame de stare


▪ Este o pseudostare
▪ Tranzitorie, sistemul nu poate rămâne în acea stare
▪ Mai degrabă o structură de control decât o stare reală
▪ Nu are fluxuri de intrare
▪ Dacă există mai multe fluxuri de ieșire
▪ Condițiile trebuie să fie mutual exclusive și să acopere toate situațiile
posibile pentru a se asigura că este atinsă exact o stare țintă
▪ Dacă starea inițială devine activă, obiectul trece imediat în starea
următoare

15
Stare finală și nod de încheiere

Stare finală
▪ Este o stare reală
▪ Marchează încheierea secvenței de stări
▪ Obiectul poate rămâne într-o stare finală pentru totdeauna

Nodul de încheiere
▪ Este o pseudostare
▪ Încheie mașina de stări
▪ Obiectul modelat își încetează existența , adică este șters

16
Nod decizional

▪ Este o pseudostare
▪ Folosit pentru modelarea tranzițiilor alternative

echivalent?

echivalent?


17
Exemplu: Nod decizional

18
Noduri de paralelizare și sincronizare

Nodul de paralelizare
▪ Este o pseudostare
▪ Împarte fluxul de control în mai multe fluxuri concurente
▪ Are un singur flux de intrare
▪ Are mai multe fluxuri de ieșire

Nodul de sincronizare
▪ Este o pseudostare
▪ Fuzionează fluxuri concurente multiple
▪ Are mai multe fluxuri de intrare
▪ Are un singur flux de ieșire

19
Stare compusă

▪ Sinonime: stare complexă, stare imbricată


▪ Conține alte stări - „substari”
▪ Doar una dintre substările sale este activă la un moment de timp

Stare compusă

Substări

20
Stare ortogonală

▪ Starea compusă este împărțită în două sau mai multe regiuni separate
printr-o linie punctată
▪ O stare a fiecărei regiuni este întotdeauna activă în orice moment de
timp, (substări concurente)
▪ Intrare: trecerea la granița stării ortogonale activează stările inițiale ale
tuturor regiunilor
▪ Ieșire: starea finală trebuie atinsă în toate regiunile pentru a declanșa
evenimentul de finalizare

Utilizarea nodurilor de
paralelizare și sincronizare
pentru a intra în diferite stări

21
Starea submașină

▪ Permite reutilizarea părților diagramelor mașinilor de stare în alte


diagrame ale mașinilor de stare
▪ Notatie: stare:stareSubmasina
▪ De îndata ce starea submașinii este activată, comportamentul este
executat comportamentul acesteia
▪ Corespunde apelului unei subrutine în limbaje de programare

Simbol specific
(opțional)

22
Puncte de intrare și ieșire

▪ Mecanism de încapsulare
▪ Se va intra sau se va ieși dintr-o stare compusă printr-o altă stare decât
stările inițiale și finale
▪ Tranziția externă nu trebuie să cunoască structura stării compuse

Vedere externa
External view

23
Exemplu: Puncte de intrare și ieșire

24
Elemente de notație (1/2)
Nume Notație Descriere
Descrierea unui „interval de timp”
specific în care un obiect se regăsește
Stare pe parcursul „ciclului său de viață”. În
cadrul unei stări, diferite activități pot fi
executate de obiect.
Tranziția de la o stare sursa S la o
Tranziție
stare țintă T
Începutul unei diagrame de mașini de
Stare inițială
stări
Încheierea unei diagrame de mașini de
Stare finală
stări

Nod de Încheierea diagramei de mașini de


încheiere stări a unui obiect

25
Elemente de notație (2/2)
Nume Notație Descriere

Nod din care pot origina tranziții


Nod decizional
alternative multiple

Divizarea unei tranziții în mai multe


Nod de paralelizare
tranziții paralele

Îmbinarea mai multor tranziții paralele


Nod de sincronizare
într-o singură tranziție

26

S-ar putea să vă placă și