Ohjelmistojen mallintaminen, sekvenssikaaviot

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Luokkakaavion laatiminen

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Johdatus sovellussuunnitteluun

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

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

Mikä yhteyssuhde on?

Olioiden yhteistoiminta

Luokat ja oliot. Ville Sundberg

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

Johdatus sovellussuunnitteluun

Olioiden yhteistyön mallintaminen

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Javan perusteita. Janne Käki

Metodien tekeminen Javalla

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmistotekniikan menetelmät, koe

Olio-ohjelmointi Javalla

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

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

1 Tehtävän kuvaus ja analysointi

58131 Tietorakenteet ja algoritmit (syksy 2015)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

11. Javan valintarakenteet 11.1

Rajapinta (interface)

Luokan sisällä on lista

812347A Olio-ohjelmointi, X Reflektiivisyys

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

1. Omat operaatiot 1.1

Ohjelmistojen mallintaminen kertausta Harri Laine 1

1. Olio-ohjelmointi 1.1

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

YHTEYSSUHDE (assosiation)

Ohjelmistojen mallintaminen, mallintaminen ja UML

Tietorakenteet (syksy 2013)

Ohjelmointi 2 / 2010 Välikoe / 26.3

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Oliot viestivät metodeja kutsuen

Sisällys. 15. Lohkot. Lohkot. Lohkot

Periytyminen (inheritance)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Lista luokan sisällä

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

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

17. Javan omat luokat 17.1

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmoinnin perusteet, kurssikoe

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

20. Javan omat luokat 20.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Taulukoiden käsittely Javalla

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

7. Oliot ja viitteet 7.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN

Listarakenne (ArrayList-luokka)

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

public static void main (String [] args)

Java-kielen perusteet

Ohjelmistotekniikan menetelmät, mallintaminen ja UML

1. Mitä tehdään ensiksi?

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

11. Javan valintarakenteet 11.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

19. Olio-ohjelmointia Javalla 19.1

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

2. Olio-ohjelmoinista lyhyesti 2.1

UML ja luokkien väliset suhteet

Rinnakkaisohjelmointi, Syksy 2006

TyontekijaOhjelma. +main() (käyttää) + = public - = private

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmointi 2, välikoe

5. HelloWorld-ohjelma 5.1

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

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Javan GUI Scratchaajalle

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

ITKP102 Ohjelmointi 1 (6 op)

Metodien tekeminen Javalla

Tietorakenteet, laskuharjoitus 7,

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Transkriptio:

582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1

Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden kautta Yhteistoimintakuvauksilla kuvataan, miten operaatioita käytetään Yhteistyökuvauksia voidaan määrittelyvaiheessa käyttää liiketoimintasääntöjen kuvaamiseen Olioiden yhteistoiminnan kuvaaminen on kuitenkin lähinnä suunnitteluvaiheen tehtävä 2

Vuorovaikutuksen mallintaminen UML:llä Kuvataan järjestelmän osien (olioiden) välistä kommunikointia Tarkoituksena tarkistaa ja täydentää luokkamallia & tarjota esimerkkitapauksia sen dynaamisesta soveltamisesta Vuorovaikutus esitetään viesteinä olioiden (tai niiden elinkaarta esittävien elämänviivojen, lifeline) välillä Painopiste on viestisekvenssin kuvaamisessa, ei viestien tietosisällössä Vuorovaikutus voi olla synkronista tai asynkronista 3

Vuorovaikutuskaaviot UML:ssä Sekvenssikaavio (sequence diagram) kuvaa operaatioiden tapahtumajärjestystä ja viestien kulkua olioiden välillä olioiden lisäksi toinen ulottuvuus on aika Kommunikointikaavio (communication diagram) painottaa olioiden välisiä kytkentöjä tunnettiin ennen UML 2.0:aa nimellä yhteistyörakennekaavio (collaboration diagram) 4

Sekvenssikaavio Havainnollistaa oliorakenteen toimintaa Laaditaan keskeisille operaatioille ja tilanteisiin, joissa kaavioiden käyttö edistää rakenteiden ymmärtämistä Kuvaa olion (tai järjestelmän) operaation (tiettyyn) suoritukseen liittyvän olioiden yhteistyön: operaation suoritukseen osallistuvat avustavat oliot mitä näiden operaatioita kutsutaan missä järjestyksessä operaatioita kutsutaan Vältä pitkiä kaavioita (harvoin havainnollisia) 5

Sekvenssikaavionotaatio 6

Sekvenssikaavion elämänpolku Tehtävän suoritukseen osallistuvat oliot kuvataan elämänpolkuna (lifeline) Oliolle ei tarvitse, mutta voi antaa nimen Luokan nimi yleensä mukana 7

Uusia olioita luodaan (instantioidaan) lähettämällä viesti konstruktorille Uusien olioiden luominen 8

Metodien aktivointi 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 9

Paluukutsut Kerrostumista esiintyy myös, jos avustava palvelu tekee ns. paluukutsun (callback) Viestit ovat synkronisia, lähettäjä siis odottaa, kunnes pyyntö on palveltu 10

Oliot ovat vuorovaikutuksessa viestien avulla Viesti voi olla synkroninen (esim. metodikutsu) tai asynkroninen (esim. säikeiden kautta). Synkroninen: 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 11

Sekvenssikaavioesimerkki 12

Käytössä oleva pinta-ala rajoittava tekijä 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. 13

Viestit ja aktivaatiot olio1: Luokka olio2: Luokka [ehto] viesti (parametrit) viesti nimeää kutsuttavan operaation aika operaation aktivaatio eli suoritus (palkin pituus kuvaa sen kestoa) paluu operaation suorituksesta (jätetään usein merkitsemättä) 14 14/35

Sekvenssikaavioesimerkki (1/2) public class A { private B b; private C c; private D d;... public int doit() { b.assist1(); c.assist2(d); }... } public class B { private E e;... public void assist1() { e.domagic(); } } public class C { public void assist2(d d) { d.serviced() }... } 15

Sekvenssikaavioesimerkki (2/2) a: A b: B e: E c: C d: D doit assist1() domagic assist2(d) serviced 16

Sekvenssikaavio: olioiden elinkaaren merkitseminen m: MyMain create tmp: MyHelper use yksityiskohdat jätetty pois delete Huom. delete-operaatio voi olla eksplisiittinen (kuten C++:ssa) tai implisiittinen (kuten Javassa) 17

Sekvenssikaavio: silmukat (laajennos) *[ehto]palvelu * koottu koottua palvelujoukkoa pyydetään useilta 18

Sekvenssikaavio: jakaminen Käytettävää palvelua kuvaava erillinen alikaavio 19

Sekvenssikaavioesimerkki public class Tulostin { private String nimi; public Tulostin(String nimi) { this.nimi = nimi; } } public void sanoo(string str) { System.out.println(nimi + sanoo: + str); } 20

Osakaavio: metodi sanoo(string) 21

Pääohjelma public static void main(string args[]) { Tulostin kana, gorilla; kana = new Tulostin( kana ); gorilla = new Tulostin( gorilla ); } kana.sanoo( kot kot kot ); gorilla.sanoo( bundolo ); 22

Alikaavioiden käyttäminen 23

Asynkroniset metodikutsut mitä tulostaa? 24

Kommunikaatiokaavio Kuvaa miten, yhteistyö perustuu olioiden välisiin kytkentöihin 1: palvelu1 olio1 yhteys1 olio2 Järjestysnumero kuvaa suoritusjärjestyksen; numerointi voi olla monitasoinen 1.1: palvelu2 olio3 yhteys2 Käytettävä operaatio (viesti) 25

Kommunikaatiokaavioesimerkki doit a: A 1: assist1 b: B 2: assist2(d) 2.1: serviced d: D c: C 1.1: domagic e: E 26