290 likes | 530 Views
Tila- ja tapahtumasekvenssikaaviot. Tapahtumasekvenssikaaviot Notaatio Yhteys luokkakaavioihin Esimerkki Olioyhteistyökaavio Tilakaaviot Notaatio Käyttötavat Hierarkisuus Esimerkki Yhteys luokkakaavioihin Tilasiirtymämatriisit (ei osa UML-kieltä) Aktiviteettikaaviot. Kaaviot.
E N D
Tila- ja tapahtumasekvenssikaaviot Tapahtumasekvenssikaaviot Notaatio Yhteys luokkakaavioihin Esimerkki Olioyhteistyökaavio Tilakaaviot Notaatio Käyttötavat Hierarkisuus Esimerkki Yhteys luokkakaavioihin Tilasiirtymämatriisit (ei osa UML-kieltä) Aktiviteettikaaviot
Kaaviot Käyttötapaus Käsittele puu Kuljettaja Sahaa tukki
Notaatio, kuva 8.2 funktiokutsu ("nested flow of cntrl") "Flat flow of control" ”Focus of control” Paluu funktiosta (ei pakollinen)
: C2 <<create>> <<destroy>> …notaatio TAI: aktiivinen olio olion luonti, voi ilmaista myös stereotyypillä <<create>> x: C1 : C2 sisäinen kutsu op1(x) op2() true olion tuhoaminen (myös stereotyyppi <<destroy>>)
:A :B Yhteys luokkakaavioihin B A B m m
Opiskelijarekisterisovellus • Korkeakoulun opinto-oppaassa on opintojaksoja (esimerkiksi Ohjelmistotuotannon menetelmät). • Kuhunkin opintojaksoon liittyy joukko muita opintojaksoja esitietovaatimuksina. • Opiskelijalla on joukko opintojaksojen suorituksia. • Kurssi on opintojakson toteutus, esimerkiksi OTM keväällä 1999). • Opiskelijan ilmoittautuessa kurssille järjestelmän tulee pystyä päättelemään, onko opiskelijalla oikeus osallistua tietylle opintojaksolle, ts. onko hän suorittanut opintojakson kaikki esitietovaatimusopintojaksot. • Piirrä tilannetta vastaava luokkakaavio. • Oletetaan, että opiskelijan lisääminen kurssille tapahtuu luokan kurssi metodilla ilmoittaudu, joka tarkastaa esitietovaatimukset ja lisää opiskelijan kurssille. • Hahmottele tapahtumasekvenssikaavio, joka alkaa metodin ilmoittaudu kutsusta. Poimi tapahtumasekvenssikaaviosta metodit luokkakaavioon.
Olioyhteistyökaavio 1: resizeArea(scale:int) d:DrawingArea resizeView(scale:int) 1.1: dimension(newh:int, neww:int) v: View 2: setDimensions(newh:int, neww:int) b: Border 4: setWidth(neww:int) 3: setHeight(newh:int) t: TitleBar s: ScrollBar
Kaaviot Käyttötapaus Käsittele puu Kuljettaja Sahaa tukki
Notaation "hienouksia“ (kaikkea ei löydy kirjasta) Suoritetaan tilaan saavuttaessa toiminto State name Suoritetaan tilasta poistuttaessa entry/action exit/action do/action eventName/action eventName/defer Vahti: tilasiirtymä mahdollinen jos tosi Suoritetaan tilassa ollessa eventName(par)[guard]/action Suoritetaan tapah- tuman sattuessa Estetty tapahtuma Initial state Final state
Tilasiirtymät (ei kirjassa) • eventName(par)[guard]/action • Tapahtuma • ehto, joka muuttuu todeksi: when(a>0) • signaalin vastaanottaminen: OK • funktiokutsu: setWarmerOn() • ajastus: after(15) seconds • kalenteritapahtuma: when(time=12:30) • melkeinpä mitä hyvänsä (?) • Vahti (guard): ehtolauseke, voi esim. testata toisen tilakoneen tilaa: in and not in, esim. [not in processing] • toiminto: mitä tahansa toimintoja (funktiokutsu, suoritettava lause, sanoman lähetys jne.)
Esimerkki: yksinkertainen kello (ei kirjassa) M 0 9 3 0 SET H Visio, Navision stencil, file simpleclock
Tilakoneiden käyttömahdollisuuksia • Mitä järjestelmässä saa tapahtua • Mitä järjestelmässä ei saa tapahtua • Olioiden elinkaaren mallintaminen • Algoritmien kuvaaminen • Käyttöliittymälogiikan kuvaaminen
Sisäkkäiset tilakaaviot NestedState SubState SubState • Sisäkkäisiä tilakaavioita voidaan käyttää • top-down strukturointiin • yhteisten siirtymien yhdistämiseen • rinnakkaisuuden kuvaukseen
Yhteisten siirtymien yhdistäminen alitiloilla a a S a S a a
Tilasiirtymien yhdistäminen (kuva ei kirjassa) Active entry/read card exit/remove card Card inserted Checking Available [continue] cancel maintenance Processing Selection Under maintenance [quit] Printing receipt
Rinnakkaisuus (kuva ei kirjassa) Huolto Testaus Komponenttien testaus Itsetesti Käyttövalmis huolla Komentotila näppäin(n) Odotus Komennon suoritus [lopetus] [ei lopetus]
H Historiatila (ei kirjassa) Go to the last active state BackingUp Collecting query Command CleaningUp Copying
Tilakaavion ja tapahtumasekvenssikaavion yhteys (ei kirjassa) ... / x.a() Y: X:n tilakaaviossa:: X Y Z a a /... b Do: z.b tai ... /send x.a()
Tilakaavion ja tapahtumasekvenssikaavion yhteys/2 (ei kirjassa Statechart diagrams for classes X, Y, Z: :Y :Z :X External interaction Z c/^d b j/ c d f/^g e f g X Y h g/^j d/^e i b/^c e/^f j i/^j h/^i 4.11 Note: ^ is used instead of send or simply writing the name of the event (a convention used in some contexts)
Aktiviteettikaavioiden muita ominaisuuksia (kuva 5.4b) Uimaradat Kontrolli jakautuu Synkronointi Oliovuo