Olion tilat Tila on olion attribuuttien ja linkkien arvoyhdistelmä, jolla on oma merkityksensä. Ryhmittely eri tiloiksi tapahtuu saapuvien tapahtumien vaatimien toimenpiteiden mukaan. Puheluesimerkistä voidaan löytää tiloja kuten: valmiustila, numeroiden valinta, hälytysääni, puhelu käynnissä jne. Tapahtumat aiheuttavat tilamuutoksia. Se, millä tavalla järjestelmä (tai olio) vastaa tapahtumaan, riippuu paitsi olioiden ja tapahtuman attribuuttien arvoista myös vallitsevasta tilasta ja tapahtuman aiheuttamasta tilamuutoksesta. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Tilan luonnehdinta (yksi tapa) Kellossa oleva herätys soi. Oliomallinnus TITE.2040 Hannu K. Niinimäki 2 1
Tilakaavio (State diagram) Tilakaavio kuvaa järjestelmän tilamuutokset nykyisen tilan ja tapahtuman funktiona. Puhelinesimerkki. Oliomallinnus TITE.2040 Hannu K. Niinimäki 3 Tilakaavion perussymbolit Tila Tilasiirtymä, jossa E on tapahtuma E Alkutila, jossa S on tilan nimi Lopputila, jossa S on tilan nimi Oliomallinnus TITE.2040 Hannu K. Niinimäki 4 2
Tilakaavion toiminnasta Jos tapahtuman E sattuessa ollaan tilassa S, uudeksi tilaksi tulee S', johon tapahtuma E johtaa eli E = E i. E1 E2 Ei Ek Huom. E n E m, kun n m. Jos E E j, "j = 1...k, ei tapahdu mitään.(tila ei vaihdu) Oliomallinnus TITE.2040 Hannu K. Niinimäki 5 Ehdot Tilasiirtymiin voidaan liittää ehtoja, joiden vaikutuksesta tilasiirtymä tapahtuu vain, jos ehto on tosi. Tapahtuman lisäksi vaaditaan, että samalla ehto on tosi. Tapahtuma on hetkellinen, mutta ehdon arvo (tosi/epätosi) on voimassa pitemmän aikaa. Ehdot toimivat tilasiirtymän vartijoina (guards). Esim. "Jos menet aamulla ulos (tapahtuma), ja silloin on pakkasta (ehto), on parasta, että otat käsineet käteen (seuraava tila). E [ehto] Oliomallinnus TITE.2040 Hannu K. Niinimäki 6 3
Liikennevaloesimerkki Tiet risteysalueella käsittävät kaksi kaistaa: Vasemmalle kääntyvä liikenne ryhmittyy vasemmanpuoleiselle kaistalle. Oliomallinnus TITE.2040 Hannu K. Niinimäki 7 Operaatiot 1 Operaatiot ovat (toimenpiteitä) käsittelyä, joka liittyy tilaan tai tilasiirtymään. Aktiviteetiksi (activity) sanotaan operaatiota, joka liittyy tilaan. Aktiviteetin suoritus vie aikaa ainakin jonkin verran. Aktiviteetteihin kuuluvat jatkuvat aktiviteetit kuten kuvioiden esitys näytöllä tai puhelimen hälytysäänen ylläpito, jotka päättyvät tapahtumaan, joka aiheuttaa poistumisen tilasta peräkkäiset (osa)operaatiot, jotka päättyvät itsestään, kuten venttiilin sulkeminen tai joukko laskutoimituksia do/ A Oliomallinnus TITE.2040 Hannu K. Niinimäki 8 4
Operaatiot 2 Toimenpiteeksi (action) sanotaan operaatiota, joka liittyy tilasiirtymään. Tapahtuma aiheuttaa tilasiirtymän ja siten myös toimenpiteen. Toimenpide on nopea operaatio; se käynnistyy välittömästi tapahtuman esiinnyttyä ja kestää vain vähän aikaa. Esim. "disconnect phone line" voisi olla toimenpide, joka liittyy tapahtumaan "on-hook". E (attrib) [ehdot] / toimenpide Oliomallinnus TITE.2040 Hannu K. Niinimäki 9 Toimenpiteen käytöstä Esim. järjestelmän sisäisessä ohjauksessa, kuten attribuuttien arvojen muuttamisessa tai toisten tapahtumien muodostamisessa. Tyypillinen toimenpide on laskurin arvon kasvattaminen tapahtuman esiintyessä Oliomallinnus TITE.2040 Hannu K. Niinimäki 10 5
Puhelinesimerkki Oliomallinnus TITE.2040 Hannu K. Niinimäki 11 Tulo- ja jättötoimenpiteet (Entry and Exit Actions) Toimenpide liittyy yleensä tilasiirtymään. Joskus on kannattaa liittää toimenpide hetkeen, jolloin tilaan saavutaan tai hetkeen, jolloin tilasta poistutaan. Tarkastellaan esimerkki autotallin ovea, joka avataan ja suljetaan nappia painamalla. Toimenpide tilasiirtymässä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 12 6
Tulotoimenpiteet (entry) Toteutetaan tilaan saavuttaessa. Edellinen esimerkki tulotoimenpiteillä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 13 Jättötoimenpiteet (exit) Toteutetaan tilasta poistuttaessa. Kysymys: voiko edellisen kuvata jättötoimenpiteillä? Oliomallinnus TITE.2040 Hannu K. Niinimäki 14 7
Sisäiset tapahtumat Tapahtuma voi aiheuttaa toimenpiteen ilman, että tilan vaihtoa tapahtuisi. Jos tilaan ei liity tulo- eikä jättötoimenpiteitä, asia voidaan kuvata niin, että tilasiirtymä tapahtuu samaan tilaan takaisin. Vrt. valikkoesimerkki. Sisäinen tapahtuma ja siihen liittyvä toimenpide kuvataan tilasymbolin sisälle (tapahtuman nimi, kauttaviiva ja toimenpiteen nimi) ainakin silloin, kun tilaan sisältyy tulo- tai jättötoimenpiteitä, joita ei haluta suorittaa. Oliomallinnus TITE.2040 Hannu K. Niinimäki 15 Jakeluautomaatti-esimerkki Automaatti osaa antaa rahasta takaisin. Oliomallinnus TITE.2040 Hannu K. Niinimäki 16 8
Automaattinen siirtymä Joskus tila esitetään tilakaaviossa vain aktiviteetin suorittamista varten. Kun aktiviteetti on suoritettu, siirto toiseen tilaan tapahtuu. Nuoli ilman tapahtumaa ja ehtoa kertoo automaattisesta siirtymästä, joka tapahtuu, kun tilan sisältämä aktiviteetti on suoritettu. Edellä ollut esimerkki sisälsi automaattisen siirtymän. Oliomallinnus TITE.2040 Hannu K. Niinimäki 17 Hierarkkiset tilakaaviot Tilakaavion koko kasvaa nopeasti kuvattavan järjestelmän ko'on kasvaessa tai lisättäessä kuvaustarkkuutta. Aggregaation avulla tila jaetaan osiin niin, että näiden välillä on vain vähän vuorovaikutuksia. Yleistämisessä aktiviteetti ja toimenpide kuvataan lyhyesti ja yleisesti korkealla tasolla, siirrytään sitten seuraavalle, alemmalle tasolle, jossa se kuvataan tarkemmin yksityiskohtia lisäämällä. Yleistämisessä voidaan soveltaa attribuuttien ja operaatioiden perimistä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 18 9
Aktiviteetin tarkentaminen Myyntiautomaattin tilakaaviossa esiintyi tila, joka sisälsi aktiviteetin "dispense item". Tarkennettaessa tämä aktiviteetti muodostuu useasta alemman tason tilasta ja tapahtumasta: Oliomallinnus TITE.2040 Hannu K. Niinimäki 19 Tapahtuman tarkentaminen Tapahtuma voidaan tarkentaa niin, että se muodostuu itse asiassa tilakaaviosta. Myyntiautomaattin tapahtuma "select item" käsittää useita alemman tason tapahtumia, jotka ohjaavat siirtymistä alemman tason tilojen välillä sekä lopulta siirtymää ylemmän kaavion tasolle: Oliomallinnus TITE.2040 Hannu K. Niinimäki 20 10
Tilan yleistys Tiloilla voi olla alitiloja, jotka perivät siirtymät ylitiloilta. Siirtymä tai toimenpide, joka vaikuttaa tilaan, vaikuttaa myös kaikkiin alitiloihin. E1 E1 E2 E2 E2 Puhelinesimerkissä kaikki tilat lukuunottamatta tilaa "Idle" ovat tilan "Active" alitiloja. Tapahtuman "on-hook" esiintyminen missä alitilassa tahansa aiheuttaa siirtymisen tilaan "Idle". off-hook on-hook Oliomallinnus TITE.2040 Hannu K. Niinimäki 21 Puhelinesimerkki avattuna Oliomallinnus TITE.2040 Hannu K. Niinimäki 22 11
Vaihteistoesimerkki Vaihdekeppi voi olla tilassa reverse, neutral tai forward (taaksepäin, vapaa, eteenpäin). Jos ylitila on forward, tapahtuma "push N" aiheuttaa siirtymän tilaan neutral siitä riippumatta, mikä vaihteista first, second tai third on valittuna. Oliomallinnus TITE.2040 Hannu K. Niinimäki 23 Rinnakkaisuus (Concurrency) 1 Aggregaatioon/kompositioon liittyvä Aggregaatio/kompositio-olion tila on osatilojen (komponenttien) yhdistelmä. B:llä, C:llä, D:llä ja E:llä on omat tilakaavionsa. A:n tila on tila(b) * tila(c) * tila(d) * tila(e) Oliomallinnus TITE.2040 Hannu K. Niinimäki 24 12
Rinnakkaisuus 2 Aggregaatioon/kompositioon liittyvä Aggregaation/komposition komponenttien tilojen välillä voi vallita vuorovaikutussuhde. Olioon liittyvä vartioitu (ehdolla varustettu) tilasiirtymä voi riippua toisen olion tilasta => tilakaavioiden välillä riippuvuus. Tilakaavioiden modulaarisuus (oliolla oma tilakaavionsa) voidaan kuitenkin säilyttää. Oliomallinnus TITE.2040 Hannu K. Niinimäki 25 Aggregaation tilat esimerkki (1) Seuraava kaavio esittää autoa (car) aggregaationa komponenttien tiloista: Ignition, Transmission, Accelator ja Brake (sytytys, välitys, kiihdytys ja jarrutus). Joka komponenttitilalla on myös alitiloja. Auton tila käsittää yhden alitilan joka komponentista. Kukin komponentti kokee tilasiirtymiä riippumatta muista komponenteista. Poikkeuksena on tapahtuma turn key to start olioon Ignition liityvässä tilakaaviossa, jossa ehtona on transmission in neutral eli olioon Transmission liittyvä tila. Oliomallinnus TITE.2040 Hannu K. Niinimäki 26 13
Aggregaation tilat esimerkki (kuva) Oliomallinnus TITE.2040 Hannu K. Niinimäki 27 Olion tilan sisäinen rinnakkaisuus 1 Olion tilan sisäisestä rinnakkaisuudesta on kyse silloin, kun olio voidaan osittaa attribuuttien ja linkkien alijoukoiksi niin, että kullakin on oma tilakaavionsa. Olion tila käsittää yhden tilan jokaisesta alikaaviosta. Alikaavioiden ei tarvitse olla riippumattomia. Sama tapahtuma voi aiheuttaa tilasiirtymiä useissa kaavioissa. Esitetään jakamalla tilasymboli katkoviivoilla osatilakaavioiksi. Myös osatiloille voidaan antaa nimet. Oliomallinnus TITE.2040 Hannu K. Niinimäki 28 14
Olion tilan sisäinen rinnakkaisuus 2 Oliomallinnus TITE.2040 Hannu K. Niinimäki 29 Tapahtuman lähettäminen 1 Oliot voivat tilasiirtymän yhteydessä lähettää tapahtumia toisilleen. Toimenpide "send E(attributes)" lähettää tapahtuman E attribuutteineen yhdelle tai useammalle oliolle. Tapahtuma käynnistää samanaikaisesti kaikki ne tilasiirtymät, jotka ovat olleet sillä hetkellä tapahtumaa odottamassa. Sana "send" voidaan jättää pois, jos on selvää, että E edustaa tapahtumaa (esim osoitetetaan nuolella). Oliomallinnus TITE.2040 Hannu K. Niinimäki 30 15
Tapahtuman lähettäminen 2 Tapahtuma E1 aiheuttaa tilasiirtymän, jonka yhteydessä suoritetaan toimenpide, joka on tapahtuman E2 lähetys. E1 / (send)e2 Tapahtuman lähetys luokan oliolle: E1 E2 Oliomallinnus TITE.2040 Hannu K. Niinimäki 31 Tapahtuman lähettäminen 3 Tapahtuman lähetys ja sen vaikutuksen esittäminen vastaanottavan luokan tilakaaviossa. E1 E2 Oliomallinnus TITE.2040 Hannu K. Niinimäki 32 16
Rinnakkaisten aktiviteettien synkronointi Joskus olion pitää suorittaa useita aktiviteetteja samanaikaisesti. Aktiviteettien suoritus ei ole keskenään synkronoitu, mutta olio voi siirtyä seuraavaan tilaan vasta, kun kaikki aktiviteetit ovat tulleet loppuunsuoritetuiksi. Esimerkkinä ohjauksen pilkkominen ja yhdistäminen. Oliomallinnus TITE.2040 Hannu K. Niinimäki 33 Synkronointiesimerkki Talon rakentamisen synkronointi. Oliomallinnus TITE.2040 Hannu K. Niinimäki 34 17
Ohjauksen erottaminen ehdon avulla. voidaan esittää N-S suoraan time-out [cars N-S vasemmalle] N-S vasemmalle time-out [no cars W-E vasemmalle] [no cars N-S vasemmalle] time-out E-W vasemmalle [cars W-E vasemmalle] time-out E-W suoraan Oliomallinnus TITE.2040 Hannu K. Niinimäki 35 Erityisiä merkintöjä 1 G x q Voidaan esittää seuraavasti. G x q Oliomallinnus TITE.2040 Hannu K. Niinimäki 36 18
Erityisiä merkintöjä 1 Keskeytyksen ja sen jälkeisen paluun kuvaaminen historiatilan kautta. Historia-tila palauttaa tilanteen ennalleen. Oliomallinnus TITE.2040 Hannu K. Niinimäki 37 19