Diagram stanów
Jeżeli system wchodzi w interakcję z
użytkownikami lub z innym systemem
wówczas tworzące go obiekty w wyniku tej
interakcji zmieniają się. Chcąc modelować
system, trzeba dysponować
mechanizmem modelowania zmian
.
Jednym ze sposobów scharakteryzowania
zmiany systemu jest stwierdzenie, że jego
obiekty zmieniają stan w odpowiedzi
na zdarzenia i interakcje
.
Przykłady stanów
Kilka prostych przykładów zmian:
Po zmianie przełącznika światło zmienia swój stan z
wyłączonego na włączone (lub odwrotnie).
Po naciśnięciu przycisku na pilocie do zdalnego sterowania
telewizor zmieni stan, pokazując program innego kanału.
Po upływie odpowiedniego przedziału czasu pralka zmieni
swój stan z Prania na Płukanie.
Tego rodzaju zmiany są pokazywane na diagramie
stanów.
Diagram stanów prezentuje
stany obiektu i
przejścia między nimi od rozpoczynającego
ciąg stanu początkowego po ostatni w
kolejności stan końcowy
.
Diagram stanów
Diagram stanów (state machine
diagram)
służy do
modelowania
dynamicznych
aspektów systemu
.
Diagram stanów przedstawia
maszynę
stanów.
Diagram stanów przedstawia
przepływ
sterowania między
stanami.
Diagram stanów
Diagram stanów składa się z:
stanów zwykłych i złożonych
przejścia ze zdarzeniami i akcjami
Diagram stanów stosuje się do
modelowania obiektów, których
działania są najlepiej określane przez ciąg
odpowiedzi na zdarzenia wywołane w ich
otoczeniu.
Diagram stanów
Diagramy stanów mogą być związane
z:
obiektami
klasami
przypadkami użycia
całymi systemami
Diagram stanów
Diagram przedstawia maszynę
stanową z uwypukleniem przepływu
sterowania między stanami.
Maszyna stanowa
to ciąg stanów
przyjmowanych przez obiekt w
odpowiedzi na zdarzenia
zachodzące w czasie jego życia.
Diagram stanów
W diagramie stanów występują następujące
symbole:
stany obiektu (state)
początek (initial)
koniec (final)
przejścia między stanami (transition)
zdarzenia (trigger)
akcje (effect)
historia (history)
rozwidlenie/złączenie (fork/join)
punkt synchronizacji (synch)
rozgałęzienie decyzyjne (decision)
Stan obiektu
Stan obiektu to
sytuacja, w której
obiekt znajduje się w określonej chwili,
kiedy spełnia jakiś warunek, wykonuje
jakąś czynność lub czeka na jakieś
zdarzenie
.
Stan obiektu
Stan jest kolekcją powiązań obiektu z
innymi obiektami i typami
obiektowymi.
Stan jest kolekcją egzemplarzy
odwzorowań danego obiektu.
Stan jest kolekcją atrybutów i
związków dotyczących danego
obiektu.
Stan obiektu
Przykładowy system z dwoma
stanami obiektu:
Stan jest kolekcją egzemplarzy odwzorowań danego
obiektu.
Stan jest kolekcją atrybutów i związków dotyczących
danego obiektu.
Zwyczajowo nazwę stanu piszemy z wielkiej litery w formie
rzeczowników odczasownikowych, np. Faksowanie, Wykręcanie
numeru.
Stan obiektu
Stany Osoby na
podstawie tego, czy
istnieje powiązanie
pracuje w
Stany Osoby na
podstawie tego, czy
istnieje powiązanie
posiada
Stany Osoby na
podstawie daty
urodzenia i bieżącej
daty
Zatrudniony
Niezatrudniony
Nie posiadający
majątku
Właściciel
Niemowlę
Dziecko
Nastolatek
Dorosły
Ikona stanu
Nazwa
Zmienne
Czynności
Semestr
Sesja
koniecSemestru
[uregulowaneOpłaty]/rozpocznij
Sesję
Stany obiektu Student
Podawanie szczegółów w ikonie
stanu
UML pozwala umieszczać na symbolach
informacje szczegółowe: nazwę stanu,
zmienne i czynności.
Zmienne stanu, np. liczniki i zegary,
czasami bywają przydatne.
Czynności to zdarzenia i akcje. Najczęściej
używane są trzy:
entry
(wejdź – określa, co
się dzieje przy wejściu do stanu),
exit
(wyjdź
– określa, co się dzieje przy wychodzeniu ze
stanu) i
do
(wykonaj – określa, co się dzieje,
gdy system pozostaje w danym stanie)
Aparat faksowy - stany
Aparat faksowy jest przykładem obiektu, którego stan ma i
zmienne i czynności.
Gdy wysyłamy faks, tzn. aparat jest w stanie
Faksowanie
,
notuje on datę i czas rozpoczęcia wysyłania (wartości
zmiennych stanu „data” i „czas”) oraz własny numer
telefoniczny i nazwisko/nazwę właściciela (wartości
zmiennych stanu „numer telefonu” i „właściciel”).
W stanie
Faksowanie
aparat wykonuje następujące
czynności: dodawanie do faksu znacznika daty, znacznika
czasu, numeru telefonu i nazwiska (lub nazwy) właściciela.
Inne czynności to odczytywanie po kolei wszystkich
faksowanych stron, podzielenie faksu na strony i wykonanie
pełnej transmisji.
W stanie
Bezczynnym
aparat faksowy wyświetla na konsoli
datę i czas.
Faksowanie
Data = Data bieżąca
Czas = Czas rozpoczęcia
faksowania Numer = Własny
numer telef. aparatu Właściciel =
Nazwisko właściciela
entry/wpiszNumerFaksuAdresat
a exit/zakończTransmisję
do/dodajZnacznikDaty
do/dodajZnacznikCzasu
do/dodajWłasnyNumerTelefonic
zny do/dodajWłaściciela
do/przeciągnijWszystkieStrony
do/podzielNaStrony
Bezczynny
Data = Data bieżąca
Czas = Czas bieżący
Numer = Własny numer telef.
aparatu Właściciel = Nazwisko
właściciela
entry/zakończFaksowanie
exit/rozpocznijFaksowanie
do/pokażDatę
do/pokażCzas
Przykład - graficzny interfejs
użytkownika
GUI może znajdować się w trzech stanach:
Włączanie
Działanie
Wyłączanie
Po włączeniu PC następuje start systemu. Włączenie
jest tu zdarzeniem uruchamiającym, które powoduje
przejście w stan Wyłączanie, a start systemu jest
akcją, która zostaje podjęta w wyniku tego zdarzenia.
W rezultacie wykonania wszystkich akcji stanu
Włączanie następuje przejście w stan Działanie. Gdy
chcemy wyłączyć komputer należy doprowadzić do
zajścia zdarzenia uruchamiającego przejście w stan
Wyłączenie.
Włączanie
Działani
e
Wyłączeni
e
Wyłąc
z
Stany i przejścia graficznego interfejsu
użytkownika
Na rys pokazane są: zdarzenie uruchamiające, akcje i przejścia
bez zdarzenia uruchamiającego.
Na diagramie stanów GUI zostało pominięte wiele istotnych spraw
m.in. Jeżeli pozostawimy włączony komputer lub siedzimy obok
niego bezczynnie, włącza się wygaszacz ekranu oszczędzający
monitor. Opisując to jako zmianę stanów można powiedzieć, że po
upływie określonego czasu bez żadnego uderzenia w klawisze i bez
żadnego poruszania myszą GUI przechodzi ze stanu Działanie do
stanu Oszczędzanie Monitora.
Włączanie
Działani
e
Wyłączeni
e
Wyłąc
z
Stany i przejścia graficznego interfejsu
użytkownika ze stanem Oszczędzanie Monitora i
warunkiem dozoru
Czas po którym następuje wyłączenie wygaszacza ekranu jest
określany w Panelu sterowania Windows. Zwykle po 15 minutach.
Każde uderzenie w klawisz lub ruch myszą powoduje przejście
monitora w stan Działanie.
Ten 15-minutowy upływ czasu jest warunkiem dozoru – gdy zostanie
spełniony, następuje przejście z jednego stanu w drugi.
Uwaga: warunek dozoru [czasMinął] jest wyrażeniem logicznym.
Oszczędzani
e
Monitora
[czasMiną
ł]
Uderzenie klawisza lub
poruszenie myszą
Podstany sekwencyjne
Oczekiwani
e na
działanie
użytkownik
a
Rejestrowani
e działania
użytkownika
Wizualizacj
a działania
użytkownik
a
Działanie
Działanie
użytkownik
a
Podstany sekwencyjne występują kolejno – jeden po drugim.
Porządkując podstany stanu Działanie GUI można wskazać
następującą listę:
Oczekiwanie na działanie użytkownika
Rejestrowanie działania użytkownika
Wizualizacja działania użytkownika
Podstany współbieżne
Oczekiwani
e na
działanie
użytkownik
a
Rejestrowani
e działania
użytkownika
Wizualizacj
a działania
użytkownik
a
Działanie
Działanie
użytkownik
a
Podstany współbieżna występują równolegle w tym samym czasie.
Współbieżność przedstawiamy na diagramie za pomocą linii
przerywanej.
Śledzenie
zegara
systemowe
go
Uaktualnian
ie obrazu
[minąłWyznaczonyCzas]
Stan obiektu
Złożone elementy stanu obiektu
obejmują akcje zachodzące w
konkretnym stanie.
Stan obiektu
entry
– gdy obiekt przyjmie dany stan
zostanie wykonana akcja wejściowa
do
– czynność, która jest wykonywana
ciągle od zakończenia akcji wejściowej
do rozpoczęcia akcji wyjściowej
exit
– gdy obiekt opuści stan zostanie
wykonana akcja wyjściowa
Początek i koniec
Początek jest rozpoczęciem diagramu
stanów. Od niego rozpoczyna się
wędrówka zdarzeń i stanów obiektu.
Koniec jest zakończeniem działań
obiektu.
Podstany
Podstan (sub state/composite state) to
stany zagnieżdżone w innym stanie.
Przejście między stanami
Przejście to związek między dwoma
stanami, wskazujący, że obiekt
znajdujący się w pierwszy stanie
wykona pewne akcje i przejdzie do
drugiego stanu,
za każdym razem kiedy zajdzie
określone zdarzenie i będą spełnione
odpowiednie warunki.
Przejście między stanami
Przejście między stanami zawiera:
zdarzenie uruchamiające (trigger)
warunek dozoru (guard)
akcja (effect)
Przejście między stanami
Zdarzenie uruchamiające
jest
wystąpieniem bodźca
, który może
uruchomić przejście między
stanami
Warunek dozoru
to
wyrażenie logiczne
obliczane jedynie zajściu zdarzenia
Akcja
to
wykonywalna procedura
obliczeniowa
. Może to być wywołanie
operacji na obiekcie, utworzenie /
zniszczenie innego obiektu lub wysłanie
komunikatu.
Przejście między stanami
Przejście automatyczne
Przejście zwrotne
Zdarzenie i akcja
Zdarzenie (trigger) uruchamia
przejście między stanami obiektu.
Akcja (effect) to niepodzielna czynność
przy przejściu między stanami obiektu.
Historia
Stan wznowienia – bieżące
zachowanie obiektu zależy od jego
przeszłości. Definiuje zatem zbiór
poprawnych stanów, przez które obiekt
może przejść w czasie swojego życia.
Jest to punkt w którym system pamięta
swój poprzedni krok.
Historia
Podstan z historią pamięta do którego
stanu przejść, jeżeli wcześniej ekstra
zdarzenie przerwało normalną drogę
przebiegu stanów obiektu.
Rozwidlenie/Złączenie
Rozwidlenie (fork) rozdziela strumień
działań na dwie współbieżne drogi
postępowania.
Złączenie (join) łączy strumienie
współbieżne do jednej pojedynczej
drogi postępowania w diagramie
stanów.
Rozwidlenie/Złączenie
Punkt synchronizacji
Punkt
synchronizacji
wskazuje miejsce
w którym
współbieżne
strumienie
zostaną
zsynchronizowan
e.
Rozgałęzienie decyzyjne
Rozgałęzienie decyzyjne opisuje ścieżki
alternatywne zachowania systemu.
Do wyboru jednej ze ścieżek
postępowania dochodzi na podstawie
wartości pewnego wyrażenie
logicznego.
Diagram stanów
Diagramy stanów używa się do
specyfikowania dynamiki
poszczególnych obiektów.
Diagramy stanów ukazuje jak obiekt
zmienia stany, definiując jego
zachowanie, w czasie życia systemu.
Rodzaje akcji na diagramach
stanów
Akcja
Opis
Składnia
przypisanie przypisanie wartości do
zmiennej
zmienna:= wyrażenie
wołanie
Wywołanie operacji na obiekcie
z oczekiwaniem na jej
zakończenie; operacja może
zwrócić wartość
nazwa_op (arg, …)
utwórz
nowy
utworzenie nowego obiektu
create nazwa_klasy (arg,
…)
usuń
usunięcie obiektu
destroy()
wyślij
utworzenie wystąpienia
sygnału i wysłania go do
obiektu (obiektów)
nazwa_sygnału (arg, …)
zakończ
Samodestrukcja obiektu
terminate
stm złóż zamówienie
początek
Sprawdzanie
Oczekiwanie
Wysyłka
Dostarczone
/pobierz pierwsza pozycje
[wszystkie pozycje
sprawdzone i niektórych
pozycji brak w magazynie]
pobierz nastepna
pozycje [nie
wszystkie pozycje
sprawdzone]
[wszystkie pozycje sprawdzone i dostepne]
pozycja otrzymana
[wszystkie pozycje
dostepne]
dostarczone
pozycja otrzymana
[niektórych pozycji
brak w magazynie]
stm Samochód
J azda do przodu na 1-
szym biegu
Samochod zatrzymany
J azda do przodu na 2-
gim biegu
J azda do tylu
wybrano następny bieg
wybrano poprzedni bieg
naciśnięto hamulec
wybrano wsteczny bieg
naciśnięto hamulec
wybrano 1-szy bieg
naciśnięto hamulec
stm rejestruj pojazd
urządzenie
niesprzedane
urządzenie sprzedane
Initial
Final
kupno urządzenia przez klienta
zwrot urządzenia przez klienta
stm rejestruj pojazd
Wprowadzanie hasla
+ entry / ustaw echo na gwiazdke
+ entry / zeruj haslo
+ exit / ustaw normalne echo
+ do / obsluz znak(do)
+ do / zeruj znak
+ do / wyswietl pomoc
Diagram stanów
Diagram stanów - Ćwiczenie
Stwórz diagram maszyny stanów dla
dowolnego obiektu z diagramu
obiektów.