Maciej I Stanisław Jedlińscy Diagramy stanów Maciej I Stanisław Jedlińscy
Maszyna stanów Obiekt, w świetle swoich własności (unikalna tożsamość, stan i zachowanie) może być traktowany jako automat o skończonej liczbie stanów, czyli pewną maszynę, która może znajdować się w danym momencie w jednym z wyróżnionych stanów, a także może oddziaływać na otoczenie i vice-versa. Maszyna stanu jest grafem skierowanym, reprezentowanym za pomocą notacji diagramów stanu, którego wierzchołki stanowią stany obiektu, a łuki opisują przejścia między stanami. Przejście między stanami jest odpowiedzią na zdarzenie. Zwykle, maszyna stanu jest przypisana do klasy i specyfikuje reakcje wystąpień danej klasy na zdarzenia, które do nich przychodzą, stanowiąc w ten sposób model historii życia (opis wszystkich możliwych stanów i przejść) dla obiektu danej klasy. Można przypisać maszynę stanu do przypadku(ów) użycia, operacji, kolaboracji, ale w tym znaczeniu - przepływu sterowania - częściej wykorzystuje się inne środki, np. diagramy aktywności.
Stan obiektu W podstawowym znaczeniu, dotyczy pewnego fragmentu historii życia obiektu) i opisywany jest przez zestaw wartości wszystkich (?) atrybutów oraz aktualnych powiązań danego obiektu z innymi obiektami w pewnej chwili czasowej. Obiekt pozostaje w danym stanie do momentu zajścia zdarzenia, które spowoduje zmianę tego stanu na inny. Innymi słowy, stan to “zdjęcie migawkowe” jednej sytuacji, w której znalazł się nasz system informatyczny. Często abstrahuje się od pewnych składników stanu, lub “zlepia się” wiele stanów w jeden.
Rodzaj stanu Notacja prosty (simple) złożony sekwencyjny (sequential composite state) złożony współbieżny (concurrent composite state) początkowy (initial state) końcowy (final state)
Rodzaj stanu Notacja węzeł (junction state) historyczny (history state) H odnośnik (submachine reference state) include S pniak (stub state) S
Zdarzenie Zdarzeniem jest coś, co następuje w jednym punkcie czasowym (z perspektywy naszej percepcji czasu) i warte jest analizowania z punktu widzenia celów projektowanego systemu. Samo zdarzenie nie trwa w czasie, ale fakt zaistnienia zdarzenia jest rejestrowany i trwa aż do momentu, gdy jakiś podmiot go “skonsumuje”( innymi słowy zdarzenie nie musi być obsłużone od razu w momencie wystąpienia - może być wpisane na listę zdarzeń oczekujących na obsługę). Wszystko, co wywołuje pewne skutki w systemie może być modelowane jako zdarzenie.
Typ zdarzenia Składnia wołanie op(a:T) when(wyrażenie) zmiana nazwa_syg(a:T) sygnał after(czas) czas
Przejścia przejście zewnętrzne stan 1 stan 2 (external transition) W ogólności, przejście może być opisane przez zdarzenie, które je odpaliło (wywołało), warunek oraz akcję (akcje), która jest wykonywana przed ewentualną zmianą stanu. zdarzenie [warunek] /akcja stan 1 stan 2 przejście przejście zewnętrzne (external transition) przejście wewnętrzne (internal transition) zdarzenie [warunek] /akcja bez zmiany stanu zdarzenie [warunek] /akcja stan samo-przejście (selftransition) [warunek] /akcja przejście automatyczne (completion transition) stan 1 stan 2
Przejścia-przykłady przejścia zewnętrzne: Przetwarzanie Oczekiwanie otrzymanie zamówienia (suma) [suma < =100 zł.] Przetwarzanie zamówienia Oczekiwanie otrzymanie zamówienia (suma) [suma > 100 zł.] Zatwierdzenie kredytu kredyt zatwierdzony/ licz debet () kredyt odrzucony Anulowanie zamówienia Wprowadzanie hasła przejścia wewnętrzne: entry/ ustaw echo na gwiazdkę/ haslo_zeruj() exit/ ustaw normalne echo znak/ obsłuż znak czyść/ haslo_zeruj() pomoc/ wyświetl pomoc
Przykłady diagramów Maszyna stanu dla klasy Urządzenie Urządzenie kupno urządzenia przez klienta Urządzenie niesprzedane Urządzenie sprzedane after (data gwarancji) zwrot urządzenia przez klienta Przepływ sterowania Kolejka białych when (szach mat) czarne wygrywają when (pat) ruch czarnych ruch białych remis when (pat) Kolejka czarnych when (szach mat) białe wygrywają
Stan złożony sekwencyjny Przykładowa maszyna stanów dla klasy samochód wybrano 1-szy bieg Jazda Jazda do przodu na 1-szym biegu wybrano poprzedni bieg naciśnięto hamulec Samochód zatrzymany wybrano następny bieg Jazda do przodu na 2-gim biegu Jazda do tyłu wybrano wsteczny bieg
Współbieżność w ramach jednego obiektu Obiekt może wykonywać współbieżnie dowolną liczbę akcji. Wypłata do/wydaj gotówkę Gotowy do działania do/oddaj kartę Synchronizacja: wszystkie współbieżne procesy muszą się zakończyć, aby automat był ponownie gotowy do działania Podział na współbieżne procesy