SE-02 Oliosuunnittelu Slides by Roope Raisamo. SE-02 Yksityiskohtainen suunnittelu Yksityiskohtaisessa suunnittelussa kunkin osan toteutus suunnitellaan.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

18. Abstraktit tietotyypit
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
15. Loogiset operaatiot.
Koostumussuhde Jukka Juslin © Jukka Juslin.
Ohjelmiston tekninen suunnittelu
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Tietojärjestelmät ja Systeemisuunnittelu
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Tapahtumasekvenssit = Käyttötapausten realisointi
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
2.8.3 Abstraktit tietotyypit
Taulukot Jukka Juslin © Jukka Juslin 2006.
SE-02 Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo perustuu Kai Koskimiehen Oliokirjaan ja kurssin aiempiin materiaaleihin.
13. Pakkaukset.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
Ohjelmiston toteutus (teknisestä näkökulmasta)
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
SE-02 Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo perustuu Kai Koskimiehen Oliokirjaan ja kurssin aiempiin materiaaleihin.
Olioperustainen ohjelmistoprosessi
2. Vuokaaviot.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Visual Basic -ohjelmointi
String-vertailusta ja Scannerin käytöstä (1/2)
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Systeemityö 2 Toimintokaavio – Activity diagram
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
5. Lineaarinen optimointi
– Ohjelmistojen mallintaminen, mallintaminen ja UML.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
Visual Basic -ohjelmointi
Kontrollirakenteet laajemmin
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
OMT Design System design –design technical environment Object design –design class diagram.
Ohjelmassa tänään Ohjelmointimallit Pseudokieli Modulaarisuus.
Tietojärjestelmät ja Systeemisuunnittelu
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
String-vertailusta ja Scannerin käytöstä (1/2)
7. Hyvä ohjelmointitapa..
13. Loogiset operaatiot.
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
14. Hyvä ohjelmointitapa.
13. Pakkaukset.
8. Periytyminen.
Kontrollirakenteet laajemmin
Slides by Roope Raisamo
3. Attribuutit.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
Esityksen transkriptio:

SE-02 Oliosuunnittelu Slides by Roope Raisamo

SE-02 Yksityiskohtainen suunnittelu Yksityiskohtaisessa suunnittelussa kunkin osan toteutus suunnitellaan tarkemmin. –Vältetään sitoutumista tiettyyn toteutuskieleen. Rakennetta kuvataan luokkakaavioilla –lähtökohtana analyysivaiheen luokkakaaviot –tarkennetaan huomioimalla tehokkuus muunneltavuus ylläpito

SE-02 Yksityiskohtainen suunnittelu Yksityiskohtaisen suunnittelun aikana –tehostetaan suoritusta lisäämällä johdettuja assosiaatioita ja attribuutteja –suunnitellaan assosiaatioiden toteutus –parannetaan joustavuutta ja muunneltavuutta esimerkiksi soveltamalla suunnittelumalleja –uudelleenorganisoidaan luokkarakennetta, rajapintoja ja periytymistä –lisätään toteutuksen kannalta tarpeelliset operaatiot ja luokat –suunnitellaan käyttöliittymän toteutus

SE-02 Yksityiskohtainen suunnittelu Arkkitehtuurisuunnittelun sekvenssikaavioita tarkennetaan. –tehtävät järjestelmän olioiden välisenä vuorovaikutuksena Aktiiviset luokat identifioidaan ja niiden käyttäytyminen kuvataan tilakaavioina. Tilakaavioiden toteutustavat suunnitellaan. Luokkien operaatiot identifioidaan sekvenssikaavioiden perusteella.

SE-02 Yksityiskohtainen suunnittelu Merkittävimmät tai monimutkaisimmat operaatiot kuvataan tarkemmin tulo- ja jättöehtoineen. –operaation toimintaan liittyvä olioiden vuorovaikutus esitetään sekvenssikaavioilla –muutoin kuvaus voidaan antaa esimerkiksi pseudokielellä

SE-02 Yksityiskohtainen suunnittelu Yksityiskohtaisen suunnittelun käyttäytymisnäkökulmaa kuvaavat: –sekvenssikaaviot –tilakaaviot –operaatiokuvaukset

SE-02 Yksityiskohtainen suunnittelu Lopuksi varmistetaan rakenne- ja käyttäytymisnäkökulmien yhtäpitävyys –tarkastetaan, että kaikkien operaatioiden suoritukseen tarvittavat assosiaatiot ovat olemassa –tarkastetaan, että luokkakaavioissa ja sekvenssikaavioissa esiintyvät samat operaatiot –tarkastetaan, että tilakaaviot sallivat sekvenssikaavioissa kuvattujen toimintojen suorittamisen

SE-02 Suunnittelu Suunnittelun tavoitteena on täsmentää analyysin tuloksena saatua mallia –toteutustekniset näkökohdat huomioidaan –ei sitouduta vielä toteutusvälineeseen tai kieleen

SE-02 Luokkien operaatioiden määrääminen tehdään tarkat skenaariokaaviot eri käyttötapauksille –olioiden kommunikoinnin tasolla –operaatiot kuvataan oikeilla nimillään ja niihin liitetään tieto mahdollisesta parametrista poimitaan niistä operaatiot

SE-02 Yksityis- kohtainen sekvenssi -kaavio käyttö- tapauk- selle Askellus

SE-02 Löydetyt operaatiot Luokkaoperaation kutsumuotomerkitys Pelialusta()Pelilaudan (kartan) alustus lisääPelaaja(n: String)Pelaaja lisätään nimellä n nopanHeitto()Heitetään noppaa siirräPelaaja(p: Paikka)Siirretään pelaaja paikkaan käännäLappu(p: Paikka)Käännetään lappu paikassa päätä()Pelin lopettaminen, tulokset PeliseuruelisääPelaaja(n: String)Pelaaja lisätään nimellä n seuraavaPelaaja():Palauttaa siirtovuorossa Pelaajaseuraavan pelaajan aarrePelaaja(p: Paikka): Jos aarteen omaava pelaaja Pelaajaon paikassa p, palaute- taan se, muuten nil

SE-02 Löydetyt operaatiot Luokkaoperaation kutsumuotomerkitys PelaajaonkoLentoPaikalla():Palauttaa toden jos pelaa- Booleanja on lentopaikalla onkoRahaa(): BooleanPalauttaa toden jos pelaa- jalla on rahaa annaPaikka(): PaikkaPalauttaa pelaajan paikan siirry(p: Paikka)Siirtää pelaajan paikkaan p onkoVoittaja(): BooleanPalauttaa toden jos pelaa- jalla on aarre ja pelaajan paikka on lähtöpaikka onkoAarre(): BooleanPalauttaa toden jos pelaa- jalla on aarre luovutaAarre(): AarrePoistaa aarteen pelaajalta otaAarre(a: Aarre)Antaa aarteen pelaajalle maksu()Poistaa yhden pelirahayksi- kön pelaajalta nollaaRahat()Poistaa pelaajalta kaikki rahat

SE-02 Löydetyt operaatiot Luokkaoperaation kutsumuotomerkitys LentoliikenneannaKohteet(p: Paikka):Palauttaa paikasta p lentäen set of Paikkasaavutettavat paikat PaikkaonkoLappu(): BooleanPalauttaa toden jos paikalla on kääntämätön lappu käännäLappu()Kääntää paikan lapun Noppaheitä(): IntegerPalauttaa nopan arvon

SE-02 Löydetyt operaatiot Luokkaoperaation kutsumuotomerkitys KarttaannaViereiset(p: Paikka,Palauttaa paikat, joihin pää- n: Integer): set of Paikkasee paikasta p n:llä askeleella Lappuvaikuta(p: Pelaaja)Aiheuttaa pelaajalle p lapun edellyttämän vaikutuksen Nappulasiirry(p: Paikka)Siirtää nappulan paikkaan p annaPaikka(): PaikkaPalauttaa nappulan paikan

SE-02 Olioiden esitysmuodon suunnittelu Luokka vai perustietotyyppi? –esimerkiksi Sosiaaliturvatunnus vs. String Luokka vai joukko attribuutteja? –esimerkiksi Piste vs. erilliset x- ja y-attribuutit kalvo

SE-02 Tehokkuusnäkökohdat assosiaatiopolkujen lyhentäminen –lisää ylimääräisiä assosiaatioita operaatioiden tehostamiseksi lisätään assosiaatio Peli- ja Pelaaja-luokkien väliin johdetut attribuutit –turhan uudelleenlaskennan välttäminen –päivitys: eksplisiittinen, kanta-attribuutin muutoksen jälkeen eksplisiittinen, tietyin väliajoin implisiittinen, kanta-attribuutin päivitysoperaatio muuttaa myös siitä riippuvia attribuutteja (ns. aktiiviset arvot)

SE-02 Assosiaatioiden suunnittelu Assosiaatioiden merkitys operaatioiden suorituksen kannalta tutkitaan tarkemmin –onko käyttö yksi- vai kaksisuuntaista? –kumpaan suuntaan yksisuuntaista käytetään? –onko mukana edelleen turhia assosiaatioita

SE-02 Assosiaatioiden suunnittelu Toteutusperiaatteet: –pieni kertautuminen (1-3) --> viiteattribuutti –suuri kertautuminen --> erillinen säiliöolio, lista –kvalifiointi --> hajautettu hakemisto tai indeksoitu säiliöolio (esim. taulukko) –kaksisuuntainen assosiaatio --> molempiin suuntiin kuten yllä tai erillinen assosiaatio-olio (kuva 7.12) tai toinen suunta haulla (jos käytetään harvoin) kalvot

SE-02 Epätriviaalit assosiaatiot Koosteassosiaatiot –Lentoliikenne-Lentoreitti –Polku-Paikka Muita –Paikka-Seuraa-Paikka –Peliseurue-Pelaaja

SE-02 Lentoliikenne-Lentoreitti Assosiaation tarkastelu: –Assosiaatio on kvalifioitu paikalla –Assosiaatiota käyttää hyväkseen operaatio annaKohteet(p: Paikka), joka palauttaa joukon paikkoja käyttäen avaimena tiettyä paikkaa –Lentoreitti-oliot on siis organisoitava siten, että jokaista paikkaa kohden löytyvät helposti ne paikat, joihin siitä on lentoreitti Ratkaisu: –jokaisella paikalla on sen identifioiva numero 0..k, ja numeron perusteella saadaan indeksoidusta rakenteesta kohdepaikkojen joukko (kalvo)

SE-02 Polku-Paikka, Paikka-Seuraa- Paikka Assosiaatioiden tarkastelu: –operaatio annaViereiset(p: Paikka, n: Integer) palauttaa niiden paikkojen joukon, jotka seuraavat n:llä askeleella paikkaa p. Ratkaisu: –toteutetaan vastaavasti kuin edellinen assosiaatio: paikan numeroa ja askelmäärää (n) käytetään indekseinä, jotka määräävät joukon kohdepaikkoja (kalvo).

SE-02 Peliseurue-Pelaaja Assosiaation tarkastelu: –myös tässä kuljetaan kohti kertautuvaa päätä –operaatiot seuraavaPelaaja() ja aarrePelaaja(p: Paikka) –pelaajaolioilla on siis tietty järjestys Ratkaisu: –valitaan järjestetyn joukon toteutustavaksi taulukko, jota indeksoidaan pelaajan numerolla –luokkakaaviossa tämä näkyy vaihtamalla rajoite {ordered} muotoon {indexed} ja poistamalla kvalifiointi

SE-02 Tarkennettu luokkakaavio Luokkakaavion seuraava muoto –Edellisten suunnitteluvaiheiden lisäksi kaaviossa on käytetty navigointisymbolia sellaisissa assosiaatioissa, jotka voidaan toteuttaa olioon osoittavalla viiteattribuutilla lähtöpäässä

SE-02 Muunneltavuuden lisääminen abstraktit luokat, avointen ja kiinteiden virtuaalioperaatioiden määritteleminen tietyn käyttömuodon tai protokollan määritteleminen rajapintaluokaksi spekulatiivinen suunnittelu: mikä saattaisi myöhemmin muuttua? muutoksia ennakoivat uudet rajapintaluokat

SE-02 Abstraktit luokat ja virtuaalioperaatiot voiko operaation määrittelyn antaa siinä luokassa, jossa se esiintyy mallissa vai onko se tarkoitettu uudelleenmääriteltäväksi? –jos ei voi määritellä --> {abstract} –jos on tarkoitettu uudelleenmääriteltäväksi, operaation pitää esiintyä myös aliluokissa –jos luokalla on avoimia virtuaalioperaatioita, luokka on merkittävä määreellä {abstract} –periytymishierarkian lehtiluokka ei saa olla abstrakti

SE-02 Abstraktit luokat ja virtuaalioperaatiot Yliluokka Paikka: –operaatio onkoLappu() riippuu aliluokasta, koska lappu voi olla vain erikoispaikalla operaatio tarvitaan kuitenkin Paikka-luokassa, koska paikalta pitää pystyä kysymään mahdollista lappua annetaan luokassa Paikka oletusmäärittely, joka palauttaa epätoden. Luokka Erikoispaikka uudelleenmäärittelee tämän operaation –samoin menetellään operaation kaannaLappu() kanssa oletusmäärittely tyhjä uudelleenmääritellään Erikoispaikassa, lisätään siihen attribuutti lappuNakyy

SE-02 Abstraktit luokat ja virtuaalioperaatiot Yliluokka Lappu: –operaation vaikuta(p: Pelaaja) toteutus riippuu aliluokasta –aliluokat ovat keskenään samanarvoisia, eikä mikään ole ”normaalitapaus” –määritellään operaatio avoimeksi virtuaalioperaatioksi määreellä {abstract}, ja luokka abstraktiksi samalla määreellä –lisätään operaatio vaikuta (p: Pelaaja) kaikille aliluokille

SE-02 Abstraktit rajapintaluokat Malliin voidaan lisätä täysin uusiakin abstrakteja yliluokkia –rajapintaluokat: erilaisia olioita käsitellään jossakin yhteydessä tietyllä tavalla riippumatta niiden muista ominaisuuksista toteutuksena esimerkiksi Javan interface-luokat joskus luokkia pitää hieman muokata, että esimerkiksi samoissa operaatioissa on sama määrä parametreja ja niillä on sama nimi rajapinnat lisäävät ohjelman modulaarisuutta, uudelleenkäyttöä ja laajennettavuutta

SE-02 Spekulatiivinen suunnittelu varautuminen tuleviin muutoksiin –tavoitteena hyvä ylläpidettävyys mitkä asiat mallissa saattaisivat vielä muuttua? –käsitteiden / luokkien uusien muunnelmien tarve –toimintojen uusien versioiden tarve varautuminen tapahtuu käytännössä abstrakteilla rajapintaluokilla

SE-02 Spekulatiivinen suunnittelu esimerkissä varaudutaan uusiin liikennevälineisiin –uusi abstrakti yliluokka Liikenne –määritellään siihen virtuaalioperaatio hinta (p1: Paikka, p2: Paikka): Integer. Samoin aliluokkaan LentoLiikenne. –muutetaan operaatio maksu() muotoon maksu(h: Integer) luokkakaavion seuraava muoto ratkaisuna usein suunnittelumallit (osa III)

SE-02 Yksityiskohtaisen suunnittelun tuottama luokkakaavio

SE-02 Operaatioiden yksityiskohtainen suunnittelu Suunnitteluvaiheessa operaatioiden kuvaukset täsmennetään niin, että kuvausten perusteella voi suoraviivaisesti tuottaa koodia Kuvaus voidaan antaa systemaattisessa muodossa operaatiokaavakkeella

SE-02 Operaatiokaavake Luokka ja operaation kutsumuoto Description: Lyhyt kuvaus operaatiosta. Result: Operaation tulos tai tavoite. Assumes: Operaation tuloehdot, joiden päteminen on tarkistettava eksplisiittisesti. Reads: Attribuutit, joiden arvon operaatio lukee, ja luokat, joiden ilmentymiä operaatio käyttää muuttamatta niiden tilaa.

SE-02 Operaatiokaavake Changes: Attribuutit, joiden arvon operaatio muuttaa, ja luokat, joiden ilmentymiä operaatio muuttaa. Exceptions: Poikkeustilanteet, jotka operaation suorituksessa voivat syntyä (operaatio ei tuota tarkoitettua tulostaan). Scenario: Sekvenssikaavio, joka kuvaa operaation suoritukseen sisältyvän olioiden vuorovaikutuksen. Algorithm: Algoritmi, joka kuvaa operaation toiminnan.

SE-02 Operaatioiden suunnittelu Pohjana analyysissa esitetty karkea kuvaus Tutkitaan operaation käyttötilanteita skenaarioissa ja määritellään operaation tulos Tuloehdot takaavat operaation suorituksen päättymisen ja tuloksen saavuttamisen (pl. poikkeustilanteet)

SE-02 Operaatioiden suunnittelu Tutkitaan operaation viittaamat attribuutit ja luokkien ilmentymät, joita ei muuteta Tutkitaan operaation viittaamat attribuutit ja luokkien ilmentymät, joita muutetaan

SE-02 Operaatioiden suunnittelu Mahdolliset poikkeustilanteet kuvataan erikseen (operaation suoritus päättyy ilman oikeaa tulosta) Jos olio käyttää suorituksensa aikana muita olioita, kuvataan vuorovaikutus skenaariokaaviolla –voidaan usein saada suoraan aiemmista skenaarioista, jos operaation suoritus on kuvattu yksityiskohtaisesti Jos algoritmi ei ole triviaali, se kuvataan erikseen pseudokielellä

SE-02 Operaatioiden suunnittelu kirjan esimerkit s operaatioista annaViereiset(p: Paikka, n: Integer): Set ja aarrePelaaja(p: Paikka): Pelaaja

SE-02 Esimerkki: aarrePelaaja(p: Paikka) Class: Peliseurue Operation: aarrePelaaja(p: Paikka): Pelaaja Description: Ilmoittaa mahdollisen pelaajan, jolla on aarre ja joka on paikassa p. Result: Palauttaa pelaajan Q, jolle Q.omistaa  nil ja Q.käyttää.sijaitsee = p, jos sellainen on olemassa, muuten nil. Assumes: p  nil

SE-02 Reads: Pelaaja, Nappula Exceptions: Pelaajalla ei ole nappulaa. Algorithm: while pelaajia käsittelemättä do Q = käsittelemätön pelaaja; if Q.onkoAarre() then if Q.annaPaikka() = p then return Q end end; return nil

SE-02 Tilakaavioiden toteutus Tilakaavioille ei ole suoraa vastinetta ohjelmointikielissä. Eri toteutustapoja: (i)operaatiopohjainen toteutus (ii)simuloitu tila-automaatti (iii)strukturoitu toteutus (iv)prosessipohjainen toteutus (v)viimeisen päälle oliopohjainen ratkaisu

SE-02 Operaatiopohjainen toteutus Luontevaa silloin, kun tilakaaviolla kuvattu olio vastaanottaa sanomat synkronisten operaatiokutsujen muodossa. Tuttu monista graafisen käyttöliittymän toteutukseen kehitetyistä luokkakirjastoista: Borlandin OWL, Microsoftin MFC, Sunin AWT Tila talletetaan johonkin ohjausolion attribuuttiin

SE-02 Simuloitu tila-automaatti Yleensä varsinainen tapahtumasilmukka toimii järjestelmässä alemmalla tasolla –esimerkiksi Windows-ohjelmien WinMain-funktio, kuva kalvot Simuloidussa tila-automaatissa –tilakaavion toteutuksen tehtävänä on reagoida sanomiin –koko tilakaavion koodi on yhtenäinen ohjelmanosa, joka on operaation sisällä –Kutakin tilaa vastaa koodinpätkä, jossa käsitellään kaikki tilasta lähtevät siirtymät (yleisimmät ensin), esimerkiksi case-lauseella kuva kalvo 106

SE-02 Strukturoitu toteutus Kuvataan tilakaavion toiminta rakenteisena toteutuksena, eli case-lauseiden sijaan käytetään sisäkkäisiä ehto- ja toistolauseita ei tarvita erillistä tila-attribuuttia edellyttää tilakaavion tarkkaa analysointia sopii yksinkertaisille tilakaavioille, mutta voi tehdä monimutkaisen kaavion toteutuksen vaikeasti hallittavaksi kuva 7.19.

SE-02 Prosessipohjainen toteutus Esimerkiksi monisäikeisessä ohjelmassa, jossa on aktiivisia olioita Vuorovaikutus voidaan kuvata prosessien välisillä kommunikointimekanismeilla –esimerkiksi Adan tasking-malli –ei kuvata tässä tarkemmin, kuuluu rinnakkaisohjelmoinnin (parallel computing) ja hajautetun ohjelmoinnin (distributed computing) tekniikoihin

SE-02 Oliopohjainen toteutus Sekä tilat että siirtymät voidaan esittää myös olioina –korostaa muunneltavuutta (sekä tilojen että siirtymien lisäämismahdollisuutta) –tehottomampi ratkaisu –lisää sekä luokkia että ajonaikaista rasitetta