420 likes | 924 Vues
UML pagrindai. Elgsenos modeliavimas Lekt. dr. Agnius Liutkevičius. Elgseną aprašančios diagramos. Būsenų ( angl. state, statechart) Sekų ( angl. sequence ) Bendradarbiavimo ( angl. collaboration) Apžvelgta anksčiau: scenarijų (activity). Būsenų diagrama.
E N D
UML pagrindai Elgsenos modeliavimas Lekt. dr. Agnius Liutkevičius
Elgseną aprašančios diagramos • Būsenų (angl. state, statechart) • Sekų (angl. sequence) • Bendradarbiavimo (angl. collaboration) • Apžvelgta anksčiau: scenarijų (activity)
Būsenų diagrama • Aprašo visas įmanomas pasirinkto objekto būsenas. • Aprašo perėjimus tarp būsenų. • Yra orientuota į vidinius objekto būsenos kitimus. • Naudojama sudėtingiems (elgesio požiūriu) objektams aprašyti.
Būsenų diagrama • Specifikuoja objekto gyvavimo ciklą, nusakantį visus įmanomus elgesio variantus. • Formalus modelis – automatas (angl. state machine). Aprašomas orientuotu grafu, kurio viršūnės žymi būsenas, o briaunos – perėjimus. • Būsenų diagrama – šio modelio grafinė reprezentacija.
Objekto būsena (1) • Aprašo konkrečią objekto būseną. • Yra prieš tai įvykusių įvykių ir veiksmų rezultatas. • Žymima:
Objekto būsena (2) • Pvz.: užklausa (objektas) yra apdorojama (būsena). • Aktyvi (angl. active). • Neaktyvi (angl. inactive). • Objekto būsenų kitimus nusako perėjimai.
Baigėsi duomenys Perėjimas (angl. transition) • Objektas keičia būseną kai kas nors įvyksta. • Perėjimas aprašo pilną objekto reakciją į tam tikrą įvykį. • Žymima rodykle iš vienos būsenos į kitą:
Pradinė, galinė būsena • Pradinė būsena (angl. initial state): • Nurodo pradinę būseną po objekto sukūrimo; • Gali būti tik viena pradinė būsena. • Galinė būsena (angl. final state): • Žymi objekto sunaikinimą; • Arba bendradarbiavimo (collaboration) pabaigą.
Būsenos elementai • Pavadinimas • Būsenos atributai • Veiksmai (angl. activities) ir įvykiai (angl. events)
Veiksmai ir įvykiai • Formalus aprašas: event_name argument list ‘/’ action_expression • Standartiniai įvykiai: • entry • exit • do • kiti
Perėjimo aprašas • Perėjimas tarp būsenų paprastai yra susietas su įvykiu. • Jei įvykis nenurodytas, perėjimas įvyksta, kai įvykdomi vidiniai būsenos veiksmai (automatinis perėjimas). • Formalus aprašas: [event_siganture] [‘[‘ guard_condition ‘]’] [‘/’ action_expression ‘^’ send_clause]
Perėjimo įvykis • Aprašo įvykį, kuris aktyvuoja perėjimą. • Gali aprašyti papildomą informaciją – įvykio parametrai. • Pvz.: • Draw(f:Figure, c:Color)
Perėjimo sąlyga • guard_condition • Boolean išraiška. • Turi būti tenkinama, kad perėjimas įvyktų. • Pvz.: [t = 20] [balance >= amount]
Veiksmai • action_expression– aprašo veiksmus objekto viduje. • Pvz.: increase() / n := n + 1 • send_clause– aprašo veiksmus susijusius su išoriniais objektais. • Pvz.: out_of_fuel()^engine.stop()
<= <= Diagramos pavyzdys
Sudėtinės būsenos • Būsena gali turėti keletą vidinių būsenų. • Tokia būsena vadinama sudėtine būsena (angl. superstate), o vidinės būsenos – sub-būsenomis (angl. substates).
Sudėtiniai perėjimai (angl. compound transitions) • Sujungimo taškas (angl. junction point) –perėjimo sąlygos yra tikrinamos prieš pereinant į naują būseną. • Dinaminis išsišakojimas (angl. dynamic choice point) – perėjimo sąlygos yra tikrinamos perėjus į išsišakojimo tašką.
Sujungimo taškas Išsišakojimas Sudėtiniai perėjimai UML 2
Papildomai • Rekursyvūs perėjimai • Lygiagrečios sub-būsenos • Sub-būsenų sinchronizavimas
Sekų diagramos • Sekų diagramos parodo kaip objektai bendrauja tarpusavyje laike. • Naudojama sudėtingų vartojimo atvejų ar veiksmų detalizavimui. • Vertikali ašis žymi laiką, horizontalioje išdėstomi objektai. • Skaitoma iš kairės į dešinę iš viršaus į apačią.
Sekų diagramos elementai • Objektai (dalyviai): • Klasių, aprašytų klasių diagramose egzemplioriai; • Vartotojai; • Išoriniai objektai. • Aprašoma nurodant: • Vardą; • Klasę; • Klasę ir vardą.
Sekų diagramos elementai • Pranešimai: • Žymi informacijos perdavimą iš vieno objekto į kitą. • Pranešimų pavyzdžiai: • Metodo iškvietimas; • Signalo perdavimas; • Objekto sukūrimas ar sunaikinimas. • Pranešimai numeruojami.
Pranešimų tipai (1) • Asinchroninis • Sinchroninis • Reikšmės gražinimas
Pranešimų tipai (2) • Sinchroninis – tai pranešimas, kuomet kviečiantysis objektas laukia, kol kviečiamas objektas atliks veiksmus, susijusius su pranešimu. • Asinchroninis – tai pranešimas, kuomet kviečiantysis objektas nelaukia, kol kviečiamas objektas atliks veiksmus, susijusius su pranešimu.
Objekto “gyvavimo linija” (lifeline) • Aktyvi / neaktyvi būsena • Blokuotas objektas • Pranešimas sau • Rekursyvus pranešimas • Aktyvūs objektai
Objekto sukūrimas Objekto sunaikinimas Objekto “gyvavimo linija” (lifeline)
Sekų diagramų tipai • Egzemplioriaus (angl. instace) diagrama – skirta aprašyti vieną galimą vykdymo variantą. • Bendra (angl. generic) – aprašo visus galimus vykdymo variantus. • Bendrą diagrama galima gauti apjungiant aibę instance diagramų. • Du lygiai – egzempliorinis (angl. instance) ir specifikavimo (angl. specification).
Bendradarbiavimo diagramos • Aprašo kaip elementai sąveikauja laike ir kaip jie yra susieti tarpusavyje. • Labiau pabrėžiama struktūra ir sąryšiai. • Pateikiama ta pati informacija kaip ir sekų diagramoje, tik kitu aspektu.
Diagramos elementai • Tokie patys kaip ir sekų diagramoje: • Objektai; • Pranešimai. • Taip pat pateikiama papildoma informacija: • Sąryšiai (asociacijų egzemplioriai).
Pranešimo perdavimas • Žymima rodykle šalia sąryšio: • Žingsniai numeruojami – taip perteikiama veiksmų vykdymo seka.
Papildomai • Multiobjektai – atvaizduojama keletas objekto egzempliorių. • Pranešimas į save • Asociacijos • Rolės