UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN
SISÄLLYS 4. Viestiyhteyskaavio suunnitteluvaiheessa 4.1 Suunnitteluvaiheen viestiyhteyskaavion osat 4.2 Aikajakson viestit ohjelmakoodissa 4.3 Ehdonesittäminenohjelmakoodissa 4.4 Toiston esittäminen ohjelmakoodissa 4.5 Palautuksen esittäminen ohjelmakoodissa 4.6 Olion luonti ja tuhoaminen ohjelmakoodissa 4.7 Esimerkkejä
4. Viestiyhteyskaavio suunnitteluvaiheessa Suunnittelu- ja toteutusvaiheessa (OOP) viestiyhteyskaavio kuvaa käyttötapauksen toteuttavien olioiden välistä vuorovaikutusta Suunnittelu- ja toteutusvaiheessa viestiyhteyskaaviolla voidaan kuvata ohjelman toiminta toteutustasolla Suunnittelu- ja toteutusvaiheen viestiyhteyskaavio kuvaa olioiden välistä vuorovaikutusta Oliot saadaan luokkakaavion luokista Olio-ohjelmoinnissa kahden olion välinen vuorovaikutus toteutetaan viestinä yhdeltä oliolta toiselle Viesti tarkoittaa olion funktion suorittamista
4.1 Suunnitteluvaiheen viestiyhteyskaavion osat Olion nimi ja sen luokka, elämänviiva ja aikaväli Funktiokutsun/viestin esittäminen kaaviossa. funktiox1() Olion elämänviiva Olion nimi on OlioX ja luokan nimi LuokkaX Aikajakso, jolloin olion jossain funktiossa suoritetaan viestejä. CLuokkaX::funktioX1() // tehdään jotain Aika juoksee elämänviivassa alaspäin.
4.2 Aikajakson viestit ohjelmakoodissa Olioiden aikajaksot ja niissä suoritettavat viestit Kutsutaan jostain kohtaa ohjelmassa Luokan Y funktiota, joka on void tyyppinen. Tämä aiheuttaa aikajakson suorittamisen. Aikajakson koodi on alla. funktiox1() x=a+2b+c; OlioX->funktioX1(); OlioX->funktioX2(); Vain ne ohjelmakoodin osat kuvataan kaaviossa, joissa suoritetaan viesti. Eli koodiriviä x=a+2b+c; EI kuvata viestiyhteyskaaviossa. funktiox2() void CLuokkaX::funktioX1() // tehdään jotain toimintoja void CLuokkaX::funktioX2() // tehdään jotain toimintoja
4.2 AIKAJAKSON VIESTIT OHJELMAKOODISSA Olioiden aikajaksot ja niissä suoritettavat viestit OlioX->funktioX1(); funktioy2(); void CLuokkaY::funktioY2() OlioX->funktioX2(parametri); funktioy2() funktiox1() funktiox2(parametri)
4.3 Ehdon esittäminen ohjelmakoodissa Käytetään ehdon kuvaamiseen hakasulkuja ja matemaattisia operaattoreita (+,-,%, ==,!=, >,<, &&,...) ja sulkuja Luokan CLuokkaY funktiossa suoritetaan vertailu. Jos laskuri=0, suoritetaan luokan CLuokkaX funktio funktiox1(). Jos laskuri=1, suoritetaan luokan CLuokkaX funktio funktiox2(). Vertailun toteuttaminen switch-case rakenteella [laskuri==0] funktiox1() [laskuri==1] funktiox2() switch(laskuri) case 0: OlioX->funktioX1(); break; case 1: OlioX->funktioX2(); break; Vertailun toteuttaminen if -rakenteella if (laskuri==0) OlioX->funktioX1(); if (laskuri==1) OlioX->funktioX2();
4.3 Ehdon esittäminen ohjelmakoodissa Vertailun esittäminen note graafia käyttäen Viestit funktiox1() ja funktiox2() lähetetään jos [laskutulos==-1] [laskutulos==-1] funktiox1() funktiox2() funktioy2() Vertailun toteuttaminen if -rakenteella laskutulos=(luku1*luku2)-luku3; if (laskutulos==-1) OlioX->funktioX1(); OlioX->funktioX2(); funktioy2();
4.3 Ehdon esittäminen ohjelmakoodissa Jos - muuten vertailun esittäminen [laskuri==0] funktiox1() Vertailun toteuttaminen if - else rakenteella if (laskuri==0) OlioX->funktioX1() else OlioX->funktioX2(p1,p2); [muuten] funktiox2(p1,p2)
4.4 Toiston esittäminen ohjelmakoodissa Toiston esittämiseen käytetään Note -graafia Suoritetaan funktioita funktiox1() ja funktiox2(), kunnes ehto [silmukka<10] ei ole voimassa [silmukka<10] funktiox1() funktiox2() Toiston toteuttaminen while -rakenteella while (silmukka<10) OlioX->funktioX1() OlioX->funktioX2(); silmukka++; Toiston toteuttaminen for -rakenteella for (silmukka==0;silmukka<10;silmukka++) OlioX->funktioX1() OlioX->funktioX2();
4.5 Palautuksen esittäminen ohjelmakoodissa Funktion muuttujan arvon palautus muuttujay=funktiox1() muuttujax muuttujay=oliox->funktiox1(); int CLuokkaX::funktioX1() // toimintoja, joilla muuttujax saa // arvon, joka sitten palautetaan return muuttujax;
4.5 Palautuksen esittäminen ohjelmakoodissa Funktion muuttujan arvon palautus toisen funktion parametriksi OlioZ:CLuokkaZ funktioz1() funktiox2(muuttujaz) muuttujaz void CLuokkaZ::funktioZ1() // toimintoja, joilla muuttujaz saa // arvon, joka sitten palautetaan return muuttujaz; OlioX->funktioX2(OlioZ->funktioZ1()); Voidaan myös esittää seuraavasti funktiox2(olioz->funktioz1())
4.6 Olion luonti ja tuhoaminen ohjelmakoodissa Olion luonti ja tuhoaminen main() <<create>> <<create>> void main() CLuokkaX *OlioX = new CLuokkaX; tai CluokkaX *OlioX; OlioX = new Cluokka; <<destroy>> delete OlioX; CLuokkaX *OlioX = new CLuokkaX; OLION LUONTI OLION TUHOAMINEN
4.7 Esimerkkejä Olio lähettää useita (esimerkissä kaksi) viestejä itselleen funktio1() funktio2() [laskuri=10] funktio3() funktio4() CLuokkaX::funktio1() OlioY->funktio2(); if (laskuri==10) funktio3(); funktio4();
4.7 Esimerkkejä Palautus <<create>> tulos=funktio1(x,y) x*2+y*4 CLuokkaX::CLuokkaX() tulos=olioy->funktio1(x,y); int CLuokkaY::funktio1(int x, int y) return 2*x+y*4;