Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen, sekvenssikaaviot

Luokkakaavion laatiminen

Johdatus sovellussuunnitteluun

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

Johdatus sovellussuunnitteluun

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Olioiden yhteistoiminta

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta

Olioiden yhteistyön mallintaminen

UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Ohjelmistojen mallintaminen, mallintaminen ja UML

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

UML -mallinnus TILAKAAVIO

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

UML Luokkakaavio 14:41

Olioperustaisuus (object oriented)

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

1. Tarkastellaan seuraavaa kaaviota

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen, kesä 2010

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Luokka- ja oliokaaviot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Ohjelmistojen mallintaminen

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

UML- mallinnus: Tilakaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistojen mallintaminen. Luento 6,

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistotekniikan menetelmät, kevät 2008

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistotekniikan menetelmät, mallintaminen ja UML

Java kahdessa tunnissa. Jyry Suvilehto

UML ja luokkien väliset suhteet

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Java-kielen perusteet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

2. Olio-ohjelmoinista lyhyesti 2.1

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

1. Omat operaatiot 1.1

Mikä yhteyssuhde on?

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Ohjelmistoarkkitehtuurit

11. Javan toistorakenteet 11.1

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Ehto- ja toistolauseet

Javan perusteita. Janne Käki

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Metodien tekeminen Javalla

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

13. Loogiset operaatiot 13.1

Ohjelmistojen mallintaminen. Luento 3, 9.11.

1. Olio-ohjelmointi 1.1

Integrointi. Ohjelmistotekniikka kevät 2003

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Toimintokaavio. UML-Toimontokaavio 1

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Kaaviotekniikoista (erityisesti UML)

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

4. Luokan testaus ja käyttö olion kautta 4.1

Ohjelmistotuotanto, s

8. Näppäimistöltä lukeminen 8.1

19. Olio-ohjelmointia Javalla 19.1

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Listarakenne (ArrayList-luokka)

Ohjelmistojen suunnittelu

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Tietokantojen suunnittelu, relaatiokantojen perusteita

Transkriptio:

Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1

Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto voidaan hahmottaa olioina eri tasoilla. Tähän mennessä on tarkasteltu liiketoimintaolioita, joiden varassa on ohjelmiston keskeinen tietosisältö. Näitä määrittelevät luokat muodostavat kuitenkin vain pienen osan ohjelmiston toteutuksessa tarvittavista luokista. Lisäksi tarvitaan luokkia, esim. Tiedon esittämiseen käyttöliittymässä Käyttäjän syötteiden vastaanottamiseen Tietojen tallentamiseen ja hakuun tietokannasta Tiedonkäsittelyalgoritmien hoitamiseen, jne 18.11.2008 Harri Laine 2

Olioiden yhteistyö Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön (vuorovaikutuksen) selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu palvelujen kautta. Yhteistoimintakuvauksilla kuvataan, miten palveluja käytetään. Olioiden yhteistoiminnan kuvaaminen on ohjelmiston suunnitteluvaiheen tehtävä. 18.11.2008 Harri Laine 3

Olioiden yhteistyö UML esittelee kaksi perustekniikkaa yhteistoiminnan kuvaamiseen. sekvenssikaavion (sequence diagram), jossa keskitytään erityisesti kuvaamaan operaatioiden tapahtumajärjestystä ja toimintaan liittyvien viestien kulkua. Sekvenssikaavion toinen ulottuvuus on aika. kommunikontikaavion (communication diagram, aiemmassa UML-versiossa collaboration diagram), jossa keskitytään kuvaamaan, miten yhteistyö hyödyntää olioiden välisiä kytkentöjä 18.11.2008 Harri Laine 4

Sekvenssikaavio kuvaa: Jonkin tehtävän (käyttötapaus, palvelu) suoritukseen liittyvän olioiden yhteistyön Mitkä oliot osallistuvat tehtävän suoritukseen Mikä olio kontrolloi suoritusta Mitä avustavia olioita palvelun suoritukseen osallistuu ja mitä näiden palveluja käytetään Missä järjestyksessä avustavien olioiden palveluita käytetään 18.11.2008 Harri Laine 5

olio1:luokka olio2:luokka operaatio / palvelu [nro] viesti nimeää käytettävän palvelun palkin pituus kuvaa palvelun kestoa aika 18.11.2008 Harri Laine 6

Tehtävän suoritukseen osallistuvat oliot kuvataan elämänpolkuna (lifeline) olio:luokka [lkm] Oliolle ei tarvitse antaa nimeä Luokan nimi yleensä mukana Lukumäärä (lkm) on oletusarvoisesti 1 Aika etenee alaspäin Elinkaaren päättyminen (kuvataan jos olio poistetaan tehtävässä) (destruction event) 18.11.2008 Harri Laine 7

Palvelun suoritus kuvataan elämänpolun päälle sijoitettavalla suorakaiteella. Suorakaiteen korkeus kuvaa palvelun kestoa. Suorakaiteet kerrostuvat, jos palvelun suorituksessa käytetään avuksi jotain suorittavan olion omaa palvelua oma_apu 18.11.2008 Harri Laine 8

Kerrostumista esiintyy myös, jos avustava palvelu tekee ns. paluukutsun (callback) :A :B avusta hoida_itse_tämä (paluukutsu) Tässä viestit ovat synkronisia palvelupyyntöjä = pyytäjä odottaa kunnes pyyntö on hoidettu ja paluuarvot palautettu synkronisissa umpinainen nuolenpää 18.11.2008 Harri Laine 9

:A :B avusta hoida_itse_tämä (paluukutsu) Tässä viestit ovat synkronisia palvelupyyntöjä = pyytäjä odottaa kunnes pyyntö on hoidettu ja paluuarvot palautettu odotusta 18.11.2008 Harri Laine 10

Oliot ovat vuorovaikutuksessa viestien (message) avulla Viesti voi olla synkroninen (esim. metodikutsu) kontrolli palaa kun palvelu päättyy (paluuviestiä ei yleensä esitetä) asynkroninen (lähettäjä jatkaa toimintaansa, jos lähettäjää informoidaan valmistumisesta tarvitaan erillinen paluuviesti) Viesti voi toteutua metodikutsuna, etäkutsuna, sanomanlähetyksenä, tapahtuman generointina 18.11.2008 Harri Laine 11

hoida_homma Asynkroninen palvelu avonainen nuolenpää valmis paluuviesti 18.11.2008 Harri Laine 12

Viestit voivat tulla ja mennä ulkopuolelle porttien kautta Vuorovaikutus gate (portti) tee_se avusta 18.11.2008 Harri Laine 13

Esimerkki class A { B oliob; C olioc; D oliod; public int doit() { oliob.assist1(); olioc.assist2(oliod); } } class B { E olioe; public void assist1() { olioe.dosomething(); } } class C { public void assist2(d od) { od.serviced()} } 18.11.2008 Harri Laine 14

A.doit olioa:a oliob:b olioe:e olioc:c oliod:d doit assist1() dosomething() assist2(oliod) serviced() 18.11.2008 Harri Laine 15

Luonti ja tuhoaminen create :Apuluokka use delete 18.11.2008 Harri Laine 16

Sekvensseistä voidaan eristää alisekvenssejä (combined fragments) Alisekvenssiin voidaan liittää tyyppi, joka kuvaa alisekvenssin toteutumista, esim. alt (+ ehto) else ehdon voimassaollessa suoritettava opt (+ ehto) ehdon voimassaollessa suoritettava loop (+ ehto) toistetaan niin kauan kuin ehto voimassa 18.11.2008 Harri Laine 17

:Pankki :Ostos :Tili annasumma annasaldo alt [saldo>=summa] tililtäotto(summa) else tilinylitys 18.11.2008 Harri Laine 18

tee_ryhmälista :Kurssi :Ryhmä :Varaukset loop näytäryhmä annavaraustilanne(ryhmätunnus) 18.11.2008 Harri Laine 19

Sekvenssikaaviota käytetään havainnollistamaan oliorakenteen toimintaa. Ei kannata laatia jokaiselle toiminnolle. Laaditaan keskeisille palveluille ja tilanteisiin, joissa kaavioiden käyttö edistää rakenteiden ymmärtämistä. Ei ole sääntöjä, kuinka pitkä yhteistyöketju kaaviossa tulisi esittää, mutta 3-4 viestiä pidemmät ketjut pikemminkin sotkevat kuin havainnollistavat mitään. 18.11.2008 Harri Laine 20

Kaavioita voidaan laatia erillisinä pienemmille toiminnoille ja käyttää osana isommissa Ei kaikkea samaan kaavioon Käytettävää palvelua kuvaava erillinen kaavio 18.11.2008 Harri Laine 21

18.11.2008 Harri Laine 22

18.11.2008 Harri Laine 23

Sekvenssikaavion ohjelmakoodin perusteella laadittaessa suoritusjärjestys on tärkeä a.do {b.doit(c.function);...} a c b do function doit 18.11.2008 Harri Laine 24

Olioiden yhteistyö/kommunikointikaavio Kommunikointikaaviossa (communication/ collaboration diagram) näkyy miten, yhteistyö perustuu olioiden välisiin kytkentöihin 1: palvelu1 olio1 yhteys1 olio2 Järjestysnumero kuvaa suoritusjärjestyksen. Numerointi: palvelun I sisällä i.1, i.2, 1.1: palvelu2 olio3 yhteys2 Käytettävä palvelu (viesti) 18.11.2008 Harri Laine 25

Olioiden yhteistyö/kommunikointikaavio Kommunikointikaavion informaatiosisältö periaatteessa sama kuin sekvenssikaavion Yhteyksien nimiä ei standardin mukaan anneta, kuitenkin useissa työkaluissa näin voi tehdä 18.11.2008 Harri Laine 26

Olioiden yhteistyö/kommunikointikaavio doit OlioA:A 1:assist1() OlioB:B 2.1:serviceD 2:assist2(olioD) 1.1:doSomething OlioD:D OlioC:C OlioE:E 18.11.2008 Harri Laine 27