UML perusteet
-
Upload
pasi-kellokoski -
Category
Technology
-
view
2.424 -
download
3
description
Transcript of UML perusteet
![Page 1: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/1.jpg)
UML perusteetUML perusteet
Pasi KellokoskiPasi Kellokoski
![Page 2: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/2.jpg)
Sisällys
UML yleiskatsaus
Tausta
Kaaviotyypit
Peruskäsitteet
Staattinen mallintaminen
Luokkakaavio
Dynaaminen mallintaminen
Sekvenssikaavio (skenaariokaavio)
Tilakaavio
![Page 3: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/3.jpg)
Mallinnusmenetelmistä
Tähän asti kehitettyjen menetelmien antina on ollut lähinnä se muoto, jossa analyysin ja suunnittelun tulokset esitetään
Vähemmän selkeämpi ja vakiintunut on se prosessi, jolla nämä tulokset syntyvät
Muista: menetelmiä käytettävä soveltaen ja harkiten
![Page 4: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/4.jpg)
Mallinnusmenetelmistä
Suosittuja menetelmiä:
Jacobson: OOSE (Object-Oriented Software Engineering)
Rumbaugh et al.: OMT (Object Modeling Technique)
Nokia/Jaaksi: OMT++
![Page 5: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/5.jpg)
UML
Booch, Rumbaugh, Jacobson: Unified Modeling Language (UML)
Nykyisin OMG:n (Object Management Group)kehittämä standardoitu mallinnuskieli
![Page 6: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/6.jpg)
UML (jatkoa)
Ohjelmiston mallien kuvaustapa, graafinen suunnittelukieli
Ei siis varsinainen menetelmä
Erittäin laaja
![Page 7: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/7.jpg)
TilakaaviotAktiviteetti-
kaaviotSijoittelu-kaaviot
Komponentti-kaaviot
Luokka-kaaviot
Sekvenssi-kaaviot
Oliokaaviot
Rakenne Käyttäytyminen
Korkean tason toiminnalisuus
Käyttö-tapauskaaviot
Yhteistyö-kaaviot
Esimerkkejä
Ohjelmisto-kehitys
UML:n kaaviotyypit
![Page 8: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/8.jpg)
UML:n kaaviotyypit (jatkoa)
Korkean tason toiminnallisuus
Käyttötapauskaaviot
Järjestelmän staattinen ja dynaaminen rakenne
Oliokaaviot
Luokkakaaviot
Sijoittelukaaviot
Komponenttikaaviot
![Page 9: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/9.jpg)
UML:n kaaviotyypit (jatkoa)
Järjestelmän dynaaminen käyttäytyminen
Sekvenssikaaviot
Yhteistyökaaviot
Tilakaaviot
Aktiviteettikaaviot
Kaaviotyypit esitellään seuraavassa käyttäen esimerkkinä autojen vuokrausjärjestelmää
![Page 10: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/10.jpg)
UML:n kaavioiden peruselementtejä ja -suhteita
Kaaviot koostuvat peruselementeistä ja niiden välisistä suhteista
Elementit ovat geometrisia kuvioita
Elementeillä usein myös sisäinen rakenne (esimerkiksi luokan attribuutit ja operaatiot)
Suhteet ovat elementtejä yhdistäviä viivoja
Suhteisiin voidaan liittää tarkempaa informaatiota (assosiaation nimi, kertautuminen, roolit)
UML:n graafinen ulkoasu ei ole tarkasti määrätty
![Page 11: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/11.jpg)
Elementit Suhteet
LuokkaNimi
Tila
Pakkaus
Kommentti Teksti
jne.
Riippuvuus
Assosiaatio
Kooste
Yleistys(Periytyminen)
Toteutus
0..1*rooli
jne.
Nimi
Nimi
UML:n kaavioiden peruselementtejä ja -suhteita
![Page 12: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/12.jpg)
Käyttötapaus
Käyttötapaus (use case) on kuvaus järjestelmän ja sen käyttäjien välisestä vuorovaikutuksesta tietyn, käyttäjän kannalta mielekkään tuloksen aikaansaamiseksi
Kuvaus annetaan usein tavallisena tekstinä, joka tarkennetaan sekvenssikaavioiksi
Esimerkkejä käyttötapauksista: luottotarkistus, lainahakemus, valmistelu
![Page 13: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/13.jpg)
Käyttötapauskaavio
Käyttötapauskaavio (use case diagram) kuvaa järjestelmän käyttötapausten väliset suhteet ja käyttötapauksiin osallistuvat järjestelmän ulkopuoliset toimijat
Käytetään järjestelmän käyttöyhteyden ja vaatimusten korkean tason kuvaukseen
Jos käyttötapaus sisältyy toiseen, laajemmasta piirretään katkonuoli sisältyvään käyttötapaukseen päin
![Page 14: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/14.jpg)
Varaus
PalautusPalautus
Huolto
Asiakas Virkailija<<include>>
Ajoneuvojenvuokrausjärjestelmä
Käyttöönotto
Käyttötapauskaavio - Esimerkki
![Page 15: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/15.jpg)
Luokkakaavio
Luokkakaavio (class diagram, static structure diagram) kuvaa järjestelmään kuuluvia luokkia ja niiden välisiä suhteita
Luokkakaaviota käytetään järjestelmän staattisen rakenteen kuvaukseen
![Page 16: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/16.jpg)
Kohde
ParkkiAlue
HenkilöAuto
Varasto
rekisterinumero
huolla(int km)palauta()
Talleta huolto-informaatio(palauta kutsuu)
KohdeHallintohallinnoi
*palautaKohde(Kohde, Varasto)varaaKohde(Kohde)otaKäyttöönKohde(Kohde)
palauta()varaa()otaKäyttöön()
Ohjain
1
11
Luokkakaavio - Esimerkki
![Page 17: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/17.jpg)
Oliokaavio
Oliokaavio (object diagram) kuvaa olioita ja niiden välisiä suhteita
Luokkakaavion mahdollinen ajoaikainen ilmenemismuoto
Oliokaavio antaa esimerkin järjestelmän dynaamisesta rakenteesta tietyllä hetkellä
![Page 18: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/18.jpg)
auto1: HenkilöAuto
rekisterinumero = XYZ-999
: KohdeHallinto
auto2 : HenkilöAuto
rekisterinumero = ABC-123
Oliokaavio - Esimerkki
luokan ilmentymä:alleviivattu
![Page 19: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/19.jpg)
Sekvenssikaavio
Sekvenssikaavio (sequence diagram) koostuu tiettyyn vuorovaikutukseen liittyvistä olioista ja niiden välisistä sanomista (message)
Sekvenssikaaviota käytetään kuvaamaan oliojoukon välistä vuorovaikutusta tietyssä tilanteessa
Aika kulkee ylhäältä alas
Vuorovaikutustapahtumat ovat vaakasuuntaisia nuolia
Osallistujat kuvataan pystyviivoina
Kuvaa usein olioiden vuorovaikutuksen tietyn käyttötapauksen yhteydessä
![Page 20: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/20.jpg)
: KohdeHallinto auto: HenkilöAuto
palauta()
UI
palauta(auto, parkki)
parkki: ParkkiAlue
varastoi(auto)
Sekvenssikaavio - Esimerkkialijärjestelmä
![Page 21: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/21.jpg)
Yhteistyökaavio
Yhteistyökaavio (collaboration diagram) kuvaa olioiden välistä vuorovaikutusta
Aikaa ei edusta mikään tietty suunta
Olioiden yhteydet kuvataan symbolien välisinä viivoina
Sijoittelua voidaan käyttää ilmaisemaan loogisesti yhteen kuuluvia olioita
Kontrollin kulun suunta voidaan ilmaista nuolella
Sanomien ajallinen järjestys voidaan antaa sanomiin liitettyinä numeroina
Monitasoinen numerointi: sisäkkäiset operaatiokutsut
![Page 22: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/22.jpg)
auto: Henkilöauto
parkki: ParkkiAlue
: KohdeHallinto
1: palauta(auto,parkki)
1.2: varastoi(auto)
1.1: palauta()
UI
Yhteistyökaavio - Esimerkki
vastaa edellistä sekvenssikaaviota
![Page 23: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/23.jpg)
Vuorovaikutuskaaviot
Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Siksi niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi.
![Page 24: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/24.jpg)
Tilakaavio
Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message)
Käytetään tyypillisesti aktiivisten olioiden ajoaikaisen käyttäytymisen spesifiointiin
Voidaan antaa tarvittaessa myös muille olioille, joiden käyttäytyminen voidaan ymmärtää tilojen vaihtumisena
Koostuu tiloista (attribuuttien arvojen yhdistelmä tietyllä hetkellä) ja niiden välisistä siirtymistä
Tilat pyöristettyjä suorakaiteita, siirtymät nuolia
Luokan ilmentymä on aina jossakin luokan tiloista
Voi sisältää alku- ja lopputilan
![Page 25: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/25.jpg)
Käytettävissä
HuollossaVarattu
Käytössäpalauta/lopeta ajan lasku
varaa
otaKäyttöön/aloita ajan laskuhuolla
exit/huoltoilmoitus
valmis
Tilakaavio - Esimerkki
alkutila
![Page 26: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/26.jpg)
Aktiviteettikaavio
Aktiviteettikaavio (activity diagram) kuvaa tietyn tehtävän sisäisen logiikan
Muodollisesti tilakaavion erikoistapaus
Kaavio voidaan jakaa sarakkeisiin, jotka vastaavat kutakin suorittajaa
Koostuu toimenpidetiloista (sivureunat täysin pyöristettyjä, ei nimiä) sekä niitä yhdistävistä ilman tapahtumaa olevista siirtymistä
![Page 27: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/27.jpg)
Aktiviteettikaavio (jatkoa)
Kaavioon voidaan liittää päätössymboleja (vinoneliö) kuvaamaan kontrollin haarautumista jonkin ehdon perusteella
Kaaviolla voidaan myös kuvata rinnakkaisten suoritussäikeiden haarautumista ja yhdistymistä
Kaavioon voidaan lisätä tietoalkioita (toiminnan kohteita) olioina
Muistuttaa täydellisessä muodossaan läheisesti muissa kuvausmenetelmissä käytettyjä tietovuokaaviota
Tietovuokaaviot eivät sinänsä kuulu UML:ään
![Page 28: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/28.jpg)
Aktiviteettikaavio - Esimerkki
Pyydäauto
Teevaraus
Tee lasku
Maksa Valmisteleauto
Rekisteröivuokraus
Asiakas Virkailija
Ota auto
:Lasku[avoin]
:Lasku[maks]
![Page 29: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/29.jpg)
Pyydäauto
Teevaraus
Tee lasku
Maksa Valmisteleauto
Rekisteröivuokraus
Asiakas Virkailija
Ota auto
:Lasku[avoin]
:Lasku[maks]
Aktiviteettikaavio - Esimerkki
säikeidenhaarautu-minen (fork)
säikeidenyhdisty-minen (join)
alkutila
lopputila
![Page 30: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/30.jpg)
Komponenttikaavio
Komponenttikaavio (component diagram) kuvaa komponentit ja niiden väliset suhteet
Komponentti (UML-kaavioissa) voi olla:
Lähdekielinen tai binäärimuotoinen rajapinnan toteuttava ohjelmayksikkö
Myös esimerkiksi datatiedosto, ohjelmatiedosto (mm. exe tai dll), html-sivu, dokumentti, kirjasto tai jokin muu osa
![Page 31: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/31.jpg)
Komponenttikaavio (jatkoa)
Yleisesti UML:n komponentti on lähes mikä tahansa ohjelmistojärjestelmästä selkeästi erotettavissa ja korvattavissa oleva osa (”fyysinen”, ei vain käsitteellinen)
Voidaan käsitellä kaavioissa luokan tavoin (assosiaatiot, yleistyssuhteet, attribuutit, ...)
![Page 32: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/32.jpg)
GUI
Auton-Vuokraus
Tietokanta-liittymä
KohdeKanta
VuokrausToiminta
Komponenttikaavio - Esimerkki
toteuttaa
käyttää
![Page 33: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/33.jpg)
Sijoittelukaavio
Sijoittelukaavio (deployment diagram) kuvaa prosessointia suorittavat laiteyksiköt, niiden yhteydet ja ohjelmistojen osien sijoittumisen niihin
Tarvitaan vain silloin kun järjestelmään liittyy useita laiteyksiköitä
Prosessointiyksiköt (node) esitetään kuutioina ja niiden väliset suhteet assosiaatioina
Prosessointiyksiköille voidaan antaa luokkien tapaan yleistyssuhteita, niillä voi olla attribuutteja ja ilmentymiä ja ne voivat olla osallistujina vuorovaikutuskaavioissa
![Page 34: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/34.jpg)
asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin
: XTietokanta-liittymä
: XTietokanta
: GUI
: Auton-Vuokraus
<<TCP/IP>>
Sijoittelukaavio - Esimerkki
Huomaa: prosessointiyksikön ilmentymä =tietty laite, ei laitetyyppi
komponentin ilmentymä olio
![Page 35: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/35.jpg)
Kaavioille yhteisiä piirteitä
Pakkaukset
Laajennosmekanismit, joilla voidaan määritellä lisäominaisuuksia UML:n perusosille
Stereotyypit (stereotype)
Lisätietomääreet (tagged value)
Rajoitteet (constraint)
![Page 36: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/36.jpg)
Pakkaus
Pakkaus (package) on UML:n yleinen ryhmittely- ja kokoamisväline, jota voidaan käyttää kaikissa kaaviotyypeissä.
Piirretään suorakaiteena, jonka ylälaidassa on nimiuloke
Voi kuvata loogisen kokonaisuuden, alijärjestelmän, ...
Hakemiston vastine, voi sisältää myös toisia pakkauksia
Pakkaus edustaa nimiavaruutta
Pakkauksen elementtien näkyvyys ulospäin voidaan kuvata Java-kielen tavoin
![Page 37: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/37.jpg)
Kohteet Tuki
Kohde
ParkkiAlue
HenkilöAuto
Varasto
rekisterinumero
huolla(int km)palauta()
KohdeHallintohallinnoi
*palautaKohde(Kohde, Varasto)varaaKohde(Kohde)otaKäyttöönKohde(Kohde)
palauta()varaa()otaKäyttöön()
Ohjain
1
1
1
Pakkaukset - Esimerkki
![Page 38: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/38.jpg)
TukiTuki TietokantaTietokanta<<import>>
Pakkaukset suljetussa muodossa
![Page 39: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/39.jpg)
Stereotyypit
Stereotyypillä varustetulla perusosalla on oma laajennettu merkitys
Täysin epäformaali tai esimerkiksi rajoitteilla määritelty
Stereotyypille voidaan antaa oma kuvake, joka esiintyy perusosan symbolin yhteydessä tai korvaa sen
Hyödyllisiä hyvin yleisten UML-symbolien kohdalla: varsinkin komponentit ja prosessointiyksiköt
Mekanismi sovelluskohtaisten notaatioiden tekemiseen
![Page 40: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/40.jpg)
Stereotyypit - Esimerkki
![Page 41: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/41.jpg)
Lisätietomääreet
Lisätietomääre on UML:n perusosaan liitettävä määre, joka koostuu nimestä ja arvosta
Määreen avulla mallin tiettyyn osaan voidaan liittää mielivaltaista käyttäjän haluamaa informaatiota
Ei muuta mallin merkitystä, vaan liittyy enemmän mallin hallintaan ja prosessointiin
![Page 42: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/42.jpg)
MyClass{version = 1.2author = KK}
Lisätietomääreitä luokkaan liitettyinä
![Page 43: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/43.jpg)
Rajoitteet
Rajoitteet antavat mahdollisuuden määritellä lisävaatimuksia, jotka mallin toteuttavan järjestelmän tulee täyttää
Kirjoitetaan aaltosulkujen sisään
Voi olla joko nimetty standardirajoite, OCL-kielellä kirjoitettu ilmaus tai täysin epäformaali tekstinä annettu ehto
OCL on UML-määrittelyyn sisältyvä formaali rajoitekieli, jolla voidaan antaa merkitykseltään täsmällisiä, analysointi- ja suorituskelpoisia kuvauksia
![Page 44: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/44.jpg)
Rajoitteita - Esimerkki
Henkilö
vaimo
aviomies0..1
0..1sukupuoli
{(self.aviomies->size=1 impliesself.aviomies.sukupuoli = mies) and(self.vaimo->size=1 impliesself.vaimo.sukupuoli = nainen) andnot(self.vaimo->size=1 and self.aviomies->size=1)}
{xor}
Ministeriö
Yritys
johtaa
omistaa
0..1
*
1
1
OCL-rajoite
![Page 45: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/45.jpg)
Staattinen mallintaminen
Luokkakaavio (class diagram) kuvaa järjestelmään kuuluvia luokkia ja niiden välisiä suhteita
Tärkein järjestelmän staattisen rakenteen mallinnusväline
![Page 46: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/46.jpg)
Kohde
ParkkiAlue
HenkilöAuto
Varasto
rekisterinumero
huolla(int km)palauta()
Talleta huolto-informaatio(palauta kutsuu)
KohdeHallintohallinnoi
*palautaKohde(Kohde, Varasto)varaaKohde(Kohde)otaKäyttöönKohde(Kohde)
palauta()varaa()otaKäyttöön()
Ohjain
1
11
Luokkakaavio - Esimerkki
![Page 47: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/47.jpg)
Luokkasymbolin osat
Luokkasymbolin osat:
Attribuutit
{näkyvyysmääre} nimi {[kertautuminen]} {: tyyppi} {= alkuarvo} {lisätietomääreet} Näkyvyysmääreet: public +, protected #, private –
Attribuutit primitiivityyppejä, eivät mallissa olevia luokkia (nämä kuvataan assosiaatioina)
Staattinen attribuutti alleviivattuna
Vakiot merkitään lisätiedolla {const}
![Page 48: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/48.jpg)
Luokkasymbolin osat (jatkoa)
Luokkasymbolin osat:
Operaatiot
{näkyvyysmääre} nimi {parametrilista} {: palautustyyppi} {lisätietomääreluettelo} Parametreista annetaan tiedonvälityksen suunta (in, out, inout), nimi,
tyyppi sekä mahdollinen oletusarvo
Staattinen operaatio alleviivattuna
Avoin virtuaalioperaatio kursiivilla tai lisätiedolla {abstract}
Toteutus operaation kommenttina (esim. pseudokielellä), jos halutaan
![Page 49: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/49.jpg)
HenkilöHenkilö
nimi: Stringikä: Integer = 0
nimi: Stringikä: Integer = 0
ristiminen(n: String)tervehdi()vanhene()
ristiminen(n: String)tervehdi()vanhene()
ikä++
Luokkalaatikko
![Page 50: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/50.jpg)
Assosiaatiot
Assosiaatioilla (association) kuvataan luokkien väliset suhteet
Edustaa jotain sellaista luokkien välistä suhdetta, jolla on tietty pysyvyys
Sellaiset hetkelliset suhteet, jotka kestävät vain tietyn operaation suoritusajan, eivät yleensä ole edustettuna assosiaatiolla
Assosiaation ajoaikainen ilmentymä on linkki (link), joka vallitsee kahden olion välillä
![Page 51: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/51.jpg)
Assosiaation perusrakenne
Assosiaatiolla on yleensä nimi
Nimen yhteyteen voidaan merkitä nuolisymboli, joka kuvaa nimen lukusuunnan
Personowns
Car0..1 *
![Page 52: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/52.jpg)
Roolit
Assosiaation pää on nimeltään rooli, jolla voi olla nimi
Jos assosiaatio liittyy molemmissa päissään samaan luokkaan, molemmilla rooleilla on syytä olla nimi
Roolin yhteydessä voidaan myös ilmoittaa rajapinta muodossa roolinimi:rajapintanimi
Roolin ilmentymä = olioliitos
![Page 53: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/53.jpg)
Yritystyönantaja
Henkilö0..1 *
työntekijä:IWorker
Roolinimet assosiaatiossa
rajapinta
![Page 54: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/54.jpg)
Assosiaation kertautuminen
Rooli ilmaisee myös assosiaation kertautumisen
Kertautuminen ilmoitetaan listalla kokonaislukuvälejä
* tarkoittaa mielivaltaisen monta
0..1 tarkoittaa kertautumista "yksi tai ei yhtään”
0..* voidaan antaa lyhyesti *
i..i voidaan lyhentää i
Jos kertautumista ei ole merkitty, se on määrittelemätön (eikä siis esimerkiksi 1
Jos olioliitoksilla on mallin kannalta olennainen keskinäinen järjestys, rajoite "{ordered}" voidaan liittää rooliin
![Page 55: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/55.jpg)
Moninkertainen assosiaatio
Jos assosiaation kertautuminen on suurempi kuin 1, kutsumme assosiaatiota moninkertaiseksi
Kurssi Opettaja1..**
![Page 56: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/56.jpg)
Assosiaatioluokka
Joskus assosiaatioon liittyy muutakin tietoa ja/tai toiminnallisuutta, joka halutaan esittää luokkakaaviossa
Tällöin assosiaatioon voi liittää oman luokan, jossa annetaan normaaliin tapaan attribuutteja ja operaatioita
Linkit ovat assosiaatioluokan ilmentymiä
Assosiaatioluokkaan voi liittyä puolestaan muita assosiaatioita kuten mihin hyvänsä luokkaan
Assosiaatioluokalle ei tarvitse antaa nimeä, jos assosiaatiolla on sellainen. Assosiaatioluokka liitetään itse assosiaatioon katkoviivalla.
![Page 57: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/57.jpg)
HenkilöHenkilö
nimisosturvatunnusosoite
nimisosturvatunnusosoite
työskentelee *
työntekijäYritysYritys
nimiosoite
nimiosoite
*
työnantaja
työsopimusaikapalkka
työsopimusaikapalkka
päällikkö
0..1
johtaa
Assosiaatioluokka
![Page 58: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/58.jpg)
Yksilöinti
Jos assosiaatioon liittyy tieto, joka määrää assosiaation ilmentymien toisessa päässä olevien olioiden joukon, tämä tieto voidaan esittää nk. yksilöintinä (qualification)
Yksilöinti liittyy siis aina moninkertaiseen assosiaatioon
Tavallisesti yksilöinti muuttaa kertautuvan pään kertautumisen "1":ksi (tai "0..1":ksi); tällöin yksilöinti määrää linkin toisessa päässä olevan olion yksiselitteisesti
Yksilöinti merkitään luokkasymboliin liittyvänä pienenä laatikkona, jonka sisään kirjoitetaan linkin yksilöivä tieto; yksilöinti tarkentaa olion vastakkaisessa päässä
Usein yksilöivä tieto on vastakkaisella puolella olevan luokan attribuutti
![Page 59: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/59.jpg)
KirjastoKirjasto
kokoelmasijainti
kokoelmasijainti
HenkilöHenkilö
nimiosoite
nimiosoite
lainaaja nrolainaaja nrolainaa
* 1
Yksilöinti
![Page 60: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/60.jpg)
Navigointi
Assosiaatioon voidaan liittää myös tieto siitä, että toteutuksen on varmistettava navigoitavuus, ts. että assosiaation ilmentymää voidaan käyttää helposti siirtymiseen oliosta toiseen
Tämä tehdään piirtämällä nuolen kärki assosiaation päähän; tällöin edellytetään, että navigointi on mahdollista toisesta päästä tähän päähän
![Page 61: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/61.jpg)
Kooste
Kooste (aggregation) on erityinen assosiaatiolaji
Kooste esittää suhteen "on-osa" tai "kuuluu" luokkien (ilmentymien) välillä
Koska tämä suhde on merkittävä erikoistapaus, sille on oma symbolinsa: pieni vinoneliö sisältävässä päässä (siis suhteen "A on-osa B:tä" B-päässä)
Tämä symboli korvaa tavallisesti assosiaation ja roolien nimet. Koosteeseen voidaan soveltaa normaaliin tapaan kertautumista ja yksilöintiä
Koostesuhteen tulisi aina olla luonteeltaan transitiivinen ja asymmetrinen
![Page 62: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/62.jpg)
MonikulmioMonikulmio
pinta-alapinta-ala
PistePiste
x-koordy-koord
x-koordy-koord
3..*
{ordered}
Kooste (ja navigoitavuus)
![Page 63: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/63.jpg)
Aito kooste
Aito kooste (composition) tarkoittaa koostesuhdetta, jossa osaolio riippuu isäntäoliostaan kahdella tavalla:
Osa ei voi olemassa ilman isäntäänsä, ja
Osa voi olla vain yhden isännän osa
Tällöin isännän tulee yleensä huolehtia osan luonnista ja hävittämisestä
Aito kooste merkitään kuten kooste, mutta vinoneliö on musta
![Page 64: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/64.jpg)
ValtioneuvostoMinisteri1..*
Aito kooste
![Page 65: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/65.jpg)
Periytyminen
Periytyminen kuvaa erikoistus/yleistys-suhteen kahden luokan (yliluokan ja aliluokan) välillä
Suhde piirretään kolmiokärkisenä yliluokkaan osoittavana nuolena
Jos luokalla on useita aliluokkia, nuolet voidaan piirtää joko erikseen tai yhdistettynä samaan kärkeen
Moniperiytyminen on sallittua
![Page 66: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/66.jpg)
Rajapinnan toteutus
Rajapinta esitetään joko stereotyypillä <<interface>> varustetulla luokkasymbolilla tai pyöreällä rajapintasymbolilla
Jos luokka toteuttaa rajapinnan, piirretään edellisessä tapauksessa toteutussuhdetta kuvaava nuoli (kuten periytyminen, mutta katkoviivalla) luokasta rajapintaan
Jälkimmäisessä tapauksessa rajapintaympyrä yhdistetään yksinkertaisella viivalla luokkasymboliin
Luokkasymbolin käyttäminen rajapinnan kuvaukseen on hyödyllistä silloin, kun halutaan näkyville rajapinnan tarjoamat operaatiot
![Page 67: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/67.jpg)
Car Vehicle
Car <<interface>>Vehicle
Periytymis- ja toteutussuhde
![Page 68: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/68.jpg)
Aktivinen luokka
Jos luokan ilmentymät ovat oman prosessin omaavia aktiivisia olioita, kutsumme myös luokkaa aktiiviseksi
Aktiivinen luokka kuvataan luokkasymbolilla, jonka rajaviivat ovat paksunnettuja
Vastaavasti aktiivisen luokan ilmentymä kuvataan paksureunaisella oliosymbolilla
Aktiiviselle luokalle voidaan antaa ylimääräinen lohko, jossa luetellaan signaalit, joihin luokan ilmentymät reagoivat
![Page 69: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/69.jpg)
DeviceController
SignalsdeviceInterruptuserInterruptseriousFlaw
<<controller>>
currentConfiguration
Aktiivinen luokka
paksu reuna
![Page 70: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/70.jpg)
Dynaaminen mallintaminen
Dynaaminen malli kuvaa sovelluksen käyttäytymisen suorituksen aikana
Sekvenssikaaviot (sequence diagram)
Kuvaavat, miten joukko olioita toimii yhteistoiminnassa
Korostavat olioiden välistä vuorovaikutusta
Tilakaaviot (statechart diagram)
Kuvaavat yhden olioluokan täydellisen käyttäytymisen
Korostavat yhden olion reagoimista ulkoa tuleviin tapahtumiin
![Page 71: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/71.jpg)
Sekvenssikaavio
Sekvenssikaavio (sequence diagram) koostuu tiettyyn vuorovaikutukseen liittyvistä olioista ja niiden välisistä sanomista (message)
Sekvenssikaaviota käytetään kuvaamaan oliojoukon välistä vuorovaikutusta tietyssä tilanteessa
Aika kulkee ylhäältä alas
Vuorovaikutustapahtumat ovat vaakasuuntaisia nuolia
Osallistujat kuvataan pystyviivoina
Kuvaa usein olioiden vuorovaikutuksen tietyn käyttötapauksen yhteydessä
![Page 72: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/72.jpg)
: KohdeHallinto auto: HenkilöAuto
palauta()
UI
palauta(auto, parkki)
parkki: ParkkiAlue
varastoi(auto)
Sekvenssikaavio: Palautusalijärjestelmä
![Page 73: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/73.jpg)
Skenaariot
Skenaario kuvaa yhden mahdollisen tapahtumasarjan sovelluksen suorituksen aikana. Skenaariokuvaus keskittyy olioiden vuorovaikutuksen esittämiseen.
Yleensä haarautumaton tapahtumajono
Voidaan kuvata tavallisena tekstinä
Käyttötapaus voidaan kuvata skenaariona
Kuvaa myös sovelluksen sisäistä toimintaa
![Page 74: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/74.jpg)
Skenaariokaaviot
Skenaariokaavio (sequence diagram, event trace diagram, interaction diagram, scenario diagram) on skenaarion formaali kuvaus
UML:ssä käytetään sekvenssikaavioita
Käytöltään hyvin saman tapaisia (käytännössä samoja) kuin sekvenssikaaviot, mutta skenaariokaavioilla on notaatiosta riippuen erilaisia ominaisuuksia ja ulkoasuja
![Page 75: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/75.jpg)
Sekvenssikaavion merkinnät
Usein sekvenssikaavio kuvaa olioiden välisiä operaatiokutsuja
Kontrollin omistus voidaan esittää paksunnettuna jaksona, aktivaatiopalkkina, olioviivassa:
Oliolla on kontrolli, jos sen operaatiota on kutsuttu eikä operaatiosta ole vielä poistuttu
Operaatioiden paluut voidaan haluttaessa esittää katkoviivanuolina, joskin aktivaatiopalkki ilmaisee myös paluun
![Page 76: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/76.jpg)
Sekvenssikaavion merkinnät
Paluunuoleen voidaan liittää mahdollinen paluuarvo, vastaavasti kuin kutsunuoleen voidaan liittää kutsun todelliset parametrit
Olio voi kutsua myös omaa operaatiotaan; tällöin kutsunuoli tekee 180 asteen käännöksen
Kun olio kutsuu omaa operaatiotaan, sisemmän kutsun aktivaatiopalkki siirtyy hieman oikealle
![Page 77: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/77.jpg)
Olion luominen ja hävitys sekvenssikaaviossa
Olion luominen kuvataan sekvenssikaaviossa sanomana, joka suuntautuu itse oliolaatikkoon
Vastaavasti olion hävittäminen kuvataan sanomana, joka suuntautuu olioviivan lopussa olevaan vinoristiin
Vinoristi esittää olion häviämistä
![Page 78: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/78.jpg)
: C2
x: C1
op1(x)
op2()
true
Olion luominen ja hävitys sekvenssikaaviossa
![Page 79: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/79.jpg)
Käyttäjä sekvenssikaaviossa
Järjestelmän ulkoinen toimija (kuten esimerkiksi käyttäjä) voi olla myös osallistujana sekvenssikaaviossa
Käyttäjällä on oma ikoninsa, tikku-ukko
Käyttäjän toimenpiteet kuvataan sanomina käyttäjältä jollekin järjestelmään kuuluvalle oliolle
Esimerkiksi käyttöliittymän kautta tapahtuvat valinnat, napin painallukset ym.
Käyttäjälle annettava informaatio kuvataan sanomina joltain järjestelmän oliolta käyttäjälle
Esimerkiksi ilmoitukset, dialogit, kyselyn tulokset ym.
![Page 80: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/80.jpg)
Sanomat ja signaalit
Olioiden välinen sanoma sekvenssikaaviossa voi edustaa synkronista operaatiokutsua tai asynkronista signaalin lähettämistä
Aktiiviset, rinnakkaisia prosesseja edustavat oliot kommunikoivat tyypillisesti signaalein pikemmin kuin operaatiokutsuin
Asynkroniselle signaalille voidaan haluttaessa käyttää omaa nuolisymbolia, mutta yleensä tämä ei ole tarpeen: asia käy ilmi yhteydestä
![Page 81: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/81.jpg)
Sanomat ja signaalit
Myös käyttäjä edustaa omaa rinnakkaista prosessiaan, joka kommunikoi järjestelmän kanssa signaalein
Aktiivisten olioiden tapauksessa aktivaatiopylväät eivät useinkaan tuo uutta informaatiota, koska oliot ovat periaatteessa jatkuvasti aktiivisia; tällöin pylväät kattavat olion koko eliniän
![Page 82: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/82.jpg)
Aikamerkinnät
Sekvenssikaavion aikaskaalalle (tiettyyn kohtaan kuviteltua pystyssä olevaa aikajanaa) voidaan asettaa aikamerkkejä (timing mark), jotka edustavat kyseistä ajanhetkeä
Näitä aikamerkkejä voidaan käyttää esimerkiksi rajoitteissa kuvaamaan tiettyjä reaaliaikavaatimuksia
Myös sanoman lähettämisen viemää aikaa (esimerkiksi maksimiaikaa) voidaan tällä tavoin spesifioida
Jos sanoman lähettämisen viemä aika on olennaista mallissa, sanomanuoli piirretään vinoon alaspäin
![Page 83: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/83.jpg)
Suorituslogiikka
Sekvenssikaavion pääasiallinen tarkoitus on kuvata yhtä mahdollista tapahtumasarjaa järjestelmän toiminnassa eikä määritellä tietyn toiminnan tai operaation yleistä suorituslogiikkaa
Niinpä algoritmiset ilmaisut kuten ehdollisuus ja toisto eivät ole periaatteessa välttämättömiä sekvenssikaavioissa
Silti tällaiset ilmaisut voivat olla joskus hyödyllisiä lyhennysmerkintöjä: niiden avulla voidaan samalla sekvenssikaaviolla kuvata useita mahdollisia tapahtumasarjoja
Tästä syystä myös UML:ssä on sekvenssikaavioihin otettu mukaan ilmaisut ehdollisuudelle ja toistolle
![Page 84: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/84.jpg)
Suorituslogiikka
Ehdollisuus kuvataan sanomana, joka haarautuu lähtökohdastaan
Kumpaankin haaraan voidaan liittää hakasuluissa ehto, jonka vallitessa tämä haara valitaan
Kukin haara edustaa omaa erillistä alisekvenssikaaviota haarojen yhdistymiskohtaan saakka
Toisto kuvataan liittämällä sanoman nimen eteen toistomääre muodossa *[...], missä hakasulkujen sisällä annetaan mielivaltainen toistoa kuvaava ilmaus (esimerkiksi i = 1..n)
![Page 85: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/85.jpg)
SETSET
ALARMALARM
MM
HH
: SoittoYks
sytytä
: Valo
Paina ALARM
Näytä aika:User
: Ohjaus
aloita soitto
Paina ALARM
lopeta soitto
Paina ALARMsammuta
09 30
t{t = soittoaika}
Herätyskellon sekvenssikaavio
![Page 86: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/86.jpg)
Sekvenssikaavion ja luokkakaavion yhteys
Vaikka sekvenssikaavio ja luokkakaavio kuvaavat varsin erilaisia näkökulmia ohjelmistoon, niillä on myös yhtymäkohtia:
Jos sekvenssikaaviossa luokan A ilmentymä lähettää sanoman s luokan B ilmentymälle, on s:n oltava joko B-luokan operaatio tai jos B on aktiivinen luokka, B:n tunnistama signaali
Kummassakin tapauksessa s:n tulee esiintyä B:n yhteydessä luokkakaaviossa ja mahdollisten todellisten parametrien tulee täsmätä operaation kutsumuodon kanssa
Luokkien A ja B välillä on myös todennäköisesti oltava assosiaatio, koska sanoman lähettäminen viittaa suhteeseen näiden luokkien välillä
Jos A-olio kommunikoi usean eri B-olion kanssa sekvenssikaavioissa, tulee assosiaation olla moninkertainen
![Page 87: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/87.jpg)
Dynaaminen mallintaminen: Tilakaavio
Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message)
![Page 88: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/88.jpg)
Tilakaavio
Käytettävissä
HuollossaVarattu
Käytössäpalauta/lopeta ajan lasku
varaa
otaKäyttöön/aloita ajan laskuhuolla
exit/huoltoilmoitus
valmis
alkutila
![Page 89: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/89.jpg)
Tilakaavio
Tilakaavio on suunnattu verkko, joka koostuu tiloista (states) ja niitä yhdistävistä siirtymistä (transitions) eli tapahtumista
Tilakaavio kuvaa systeemin tilamuutokset nykyisen tilan ja tapahtuman funktiona
Tila1 Tila2
Tila3
laukaisin
![Page 90: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/90.jpg)
Tilasuuntautuneet luokat
Tilakaavio on mielekäs vain tilasuuntautuneille luokille, eli luokille, joiden ilmentymät ovat selvästi identifioitavissa tiloissa elinaikanaan
Usein vain harvat sovellukset luokat ovat tilasuuntautuneita
Tyypillisesti aktiiviset luokat ja sovelluksen kontrollia ohjaavat luokat
Ohjausolioita ovat mm. pelisovelluksen kontrolliolio ja graafisen käyttöliittymän tapahtumankäsittelystä vastaava olio
Joskus paikallaan muidenkin luokkien kohdalla, jos on tarpeen ymmärtää luokan dynaamista toimintaa
![Page 91: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/91.jpg)
Alku- ja lopputilat
Alkutila = pieni musta ympyrä
Jos olion ylimmän tason tilakaaviolla on alkutila, olio on tässä tilassa syntyessään (enintään yksi alkutila)
Ei alkutilaa: olion tila on aluksi määrittelemätön
Lopputila = kehän sisällä oleva musta ympyrä
Jos olion ylimmän tason tilakaaviolla on lopputila, ja olio joutuu siihen, se lakkaa olemasta
Salasanan luku
help / nayta avustedo / nayta kehoteentry / kaiutus poisexit / kaiutus päälle
![Page 92: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/92.jpg)
Tilasymbolin osat
Tilaan voi liittyä:
Nimi
Toimia (action)
Aktiviteetteja (activity)
Sisäisiä siirtymiä (internal transition)
Viivästettyjä tapahtumia (deferred event)
Alitiloja
Mikä tahansa näistä voi myös puuttua
SalasanaSyöttö
entry/kaiutus poisexit/kaiutus päälledo/näytä kehotehelp/näytä avustefunktionäppäin/defer
![Page 93: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/93.jpg)
Tilasymbolin osat
Toimet
Mallin kannalta hetkellisiä, keskeytymättömiä toimintoja, joiden ei ajatella kuluttavan aikaa
Tulotoimen muoto: entry/toimi
Jättötoimen muoto: exit/toimi
Aktiviteetti
Mallin kannalta aikaa kuluttava toiminta, jota suoritetaan tilassa ollessa
Aktiviteetin muoto: do/aktiviteetti SalasanaSyöttö
entry/kaiutus poisexit/kaiutus päälledo/näytä kehotehelp/näytä avustefunktionäppäin/defer
![Page 94: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/94.jpg)
Tilasymbolin osat
Sisäiset siirtymät
Sallivat reagoimisen tiettyyn tapahtumaan jättämättä kyseistä tilaa
Eroavat tilaan palaavasta tavallisesta siirtymästä(ei jättö- ja tulotoimia)
Sisäisen siirtymän muoto:tapahtuma {(parametrit)}} {[ehto]} {/toimet}
Viivästetyt tapahtumat
Tapahtumaa ei käsitellä kyseisessä tilassa, mutta se säilytetään tapahtumapuskurissa
Viivästetyn tapahtuman muoto: tapahtuma/defer
Tuntemattomat tapahtumat sivuutetaan
SalasanaSyöttö
entry/kaiutus poisexit/kaiutus päälledo/näytä kehotehelp/näytä avustefunktionäppäin/defer
![Page 95: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/95.jpg)
Yhteenveto määrittelyistä
Tilaan liittyvät toiminnot voivat olla:
Aktiviteetteja, jotka kuvaavat tilan toimintaa do/aktiviteetti
Tulotoimia, jotka suoritetaan tilaan siirryttäessä entry/tulotoimet
Jättötoimia, jotka suoritetaan tilasta poistuttaessa exit/jättötoimet
Tilan sisäisiä siirtymiä, joissa sanoma liitetään tilan toimintoontapahtuma/toimet
Viivästettyjä toimiatapahtuma/defer
![Page 96: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/96.jpg)
Siirtymiin liittyvät määreet
Siirtymä laukeaa (fire), kun
olio on sen lähtötilassa, ja
siirtymään liittyvä laukaisin aktivoituu
Tällöin olio:
suorittaa lähtötilan jättötoimet,
siirtyy siirtymän kohdetilaan,
suorittaa kohdetilan tulotoimet,
suorittaa tilan varsinaiset (tavalliset) toimet, sekä
jää odottamaan seuraavan siirtymän laukeamista
![Page 97: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/97.jpg)
Siirtymiin liittyvät määreet
Siirtymän laukaisin on yleisesti muotoa:
{nimi:} {tapahtuma {(parametrit)}} {[ehto]} {/toimet}
Mikä hyvänsä laukaisimen osa voi puuttua
Laukaisin aktivoituu, kun
Olio saa laukaisimessa annetun tapahtuman, ja
Ehto joko puuttuu tai on tosi
Siirtymätoimet ovat hetkellisiä toimia, jotka suoritetaan, kun siirtymä laukeaa
![Page 98: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/98.jpg)
Siirtymän laukaisimen merkinnöistä
Laukaisimessa voi esiintyä seuraavia määreitä:
sanoma(parametrit)
[ehto]
^sanoman_oheislähetys
/siirtymätoimi
![Page 99: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/99.jpg)
Tapahtumat
Tapahtumat:
Tapahtuvat tiettyinä aikana
Hetkellisiä
Jaksottavat systeemin toiminnan tiloihin
![Page 100: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/100.jpg)
do/Vihreä valoE-P suunnalle
do/Vihreä valoE-P suunnalle
do/Vihreä valoI-L suunnassavasemmalle
do/Vihreä valoI-L suunnassavasemmalle
do/Vihreä valoI-L suunnalle
do/Vihreä valoI-L suunnalle
do/Vihreä valoE-P suunnassa
vasemmalle
do/Vihreä valoE-P suunnassa
vasemmalle
after(30s)after(30s)[ei vas. E-P]
after(30s)[ei vas. I-L]
after(30s)[on vas. E-P]
after(30s)[on vas. I-L]
after(30s)
Liikennevalojen ohjaimen tilakaavio
![Page 101: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/101.jpg)
do/Vihreä valoE-P suunnalle
do/Vihreä valoE-P suunnalle
do/Vihreä valoI-L suunnassavasemmalle
do/Vihreä valoI-L suunnassavasemmalle
do/Vihreä valoI-L suunnalle
do/Vihreä valoI-L suunnalle
do/Vihreä valoE-P suunnassa
vasemmalle
do/Vihreä valoE-P suunnassa
vasemmalle
after(30s)[ei vas. E-P][ei vas. I-L]
[on vas. E-P]
[on vas. I-L]
after(30s)
after(30s)
after(30s)
Haarautumissymbolin käyttö
![Page 102: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/102.jpg)
HuollossaHuollossa
Vapaa
ProsessointiProsessointiValintaValinta
TarkistusTarkistus
KuitintulostusKuitin
tulostus
[jatka]
[lopeta]
Aktiivinenentry/lue korttiexit/poista kortti
huolto
korttisyötetty
peruuta
Koostetilan käyttö yhteisten siirtymien yhdistelyyn
![Page 103: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/103.jpg)
Huolto
OdotusOdotus
ItsetestiKäyttövalmis
huolla
Testaus
Komponenttientestaus
Komennonsuoritus
Komennonsuoritus
näppäin(n)
[lopetus][ei lopetus]
Komentotila
Rinnakkaistettu koostetila
![Page 104: UML perusteet](https://reader033.fdocument.pub/reader033/viewer/2022052206/5566274cd8b42a61238b505f/html5/thumbnails/104.jpg)
SETpainetaan
do/näytä aika
Perustila
M/ajan minuutti-lisäys
H/ajan tunti-lisäys
SET vapautetaan
/tee alkuasetukset[aika=soittoaika]
Soittovalmis
Soitto
do/soita
ALARM/sytytä valo
ALARM/sammuta valo
Aika-asetus
do/näytä aika
Herätysasetus
do/näytäsoittoaika
ALARM
SETpainetaan
do/näytä aika
M/soittoajan minuuttilisäys
H/soittoajantuntilisäys
SET vapautetaan
Herätyskellon ohjausyksikön tilakaavio