Transcript
Page 1: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Ohjelmistotuotannon menetelmätSyksy 2003

Luokka- ja käsitekaaviot, oliomallinnus

Päivi Ovaska

Tutkijaopettaja

LTY/Tite

Page 2: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Sisältö

• Luokkamallinnus, käsitemallinnus• Taustaa oliopohjaisesta ajattelusta• UML luokkakaaviot• Kaavioiden ilmaisuvoimasta• Kaavioiden laatiminen• Oliomallinnus• Oliomallinnus esimerkki• Hyviä tenttikysymyksiä

Page 3: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokkamallinnus, käsitemallinnus

• Oliokaavio, ER-kaavio, Entity Relationship diagram, ERD, tietoyhteyskaavio, käsitekaavio, kohdekaavio

• Kuvaa järjestelmän käsitteitä (olioita) ja niiden keskinäisiä suhteita

• Tavoitteena löytää tärkeimmät abstraktiot• Perinteisesti tietokantasuunnittelun väline• Oliokeskeisissä menetelmissä keskeisin

mallinnusväline

Page 4: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokka- ja oliokaaviot

• Luokka- ja oliokaavioilla kuvataan– ohjelmiston/järjestelmän rakenne– olioiden tietosisältö– olioiden tarjoamat palvelut– olioiden ja luokkien väliset yhteydet

Page 5: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Taustaa:Kuinka hahmotan maailmaa oliopohjaisesti?

• haluan lähettää kukkia ystävälleni naapurikaupunkiin

• menen kukkakauppaan

• pyydän toimittamaan kukat ->

• pyyntö välitetään naapurikaupungin kukkakauppaan

• siellä lähetti toimittaa kukat

• sama oliokäsitteillä: – lähetän viestin kukkakauppias oliolle

– hän hyväksyy ja osaa käsitellä viestin

– tehtävä jää hänen vastuulleen

– kukkakauppias toteuttaa viestin toimenpiteen (metodin) avulla

– toteutus piilotettu minulta

– hän lähettää viestin toiselle kukkakauppiaalle jne.

Page 6: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Taustaa:Olio-pohjainen ajattelu• Oliokeskeisessä ajattelussa lähes mitä hyvänsä voi ajatella oliona:

– bitti, merkki, merkkijono, kokonaisluku, tiedosto, palvelin, kuorma-auto, pankkiyhteys, varasto, pankkitili …

• Oliolla on tila– olion ”muisti”– tila voi koostua toisista olioista, esimerkiksi pvm voi koostua päivästä, kuukaudesta ja

vuodesta– olion tila on ”kapseloitu” olion sisälle: sitä voi kysellä oliolta ja sitä voi muuttaa kutsumalla

olion metodeita• Oliolla on rajapinta

– joukko toimintoja, joilla oliota hallitaan, operaatiot, julkiset jäsenfunktiot, palvelut, metodit...

• Oliokeskeinen ohjelma koostuu joukosta keskenään kommunikoivia oliota. Oliot kommunikoivat lähettämällä toisilleen sanomia, ts. kutsumalla toistensa rajapintojen määrittelemiä funktioita

• Luokka: oliot, joilla on sama käyttäytyminen (metodit) ja samat attribuutit, ovat instansseja eli ilmentymiä samasta olioluokasta.

Page 7: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Elementit Suhteet

LuokkaNimi

Tila

Pakkaus

Kommentti Teksti

jne.

Riippuvuus

Assosiaatio

Kooste

Yleistys(Periytyminen)

Toteutus

0..1*rooli

jne.

Nimi

Nimi

UML kaavioiden peruselementtejä ja suhteita

Page 8: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

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

• Luokkakaaviolla mallinnetaan eri ohjelmistokehityksen eri vaiheissa eri abstraktiotasolla olevia asioita:

– määrittelyvaiheessa luokkakaavio on käsitemalli (conceptual model) ko. sovellusalueesta

– arkkitehtuurisuunnitteluvaiheessa luokkakaavio kuvaa järjestelmän moduulirakennetta ja uudelleenkäytettävyyden rakenteita (esim. suunnittelumallit)

– moduulisuunnitteluvaiheessa (yksityiskohtainen suunnittelu) mukana jo toteutusluokkia

– ohjelmointivaiheessa toteutusluokkia

Page 9: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Esimerkki käsitetason luokkakaaviosta: lautapeli

käyttää omistaa

sijaitsee

kuuluu

koostuu

pelaa

{ordered}

peittää päättyy

0..1 0..1

0..1

2

*

*

*

**

*

seuraa

NappulaNappula

PeliPeli ErikoispaikkaErikoispaikka

AarreAarrePelaajaPelaaja

NoppaNoppa

KarttaKartta LappuLappuPaikkaPaikka LentoreittiLentoreitti

1

1

11

1

0..10..1

1

Page 10: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokka (käsite,kohde) ja yhteys

tilaus

asiakasnimiosoiteuusi

tilaaTuote()

• 0..*• 1 • 0..*• 1• tekee

luokka

attribuutit

operaatiot

yhteys

lukumääräsuhde

Page 11: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Yhteyksistä

• 1:n ”Yhden suhde moneen”– ”Opintojaksolla on monta toteutuskertaa”

• 1:1 ”Yhden suhde yhteen”– ”Osastolla on yksi osastopäällikkö. Osastopällikkö

voi olla vain yhden osaston päällikkö.”

• n:m ”Monen suhde moneen”– ”Urheilija voi osallistua moneen lajiin. Jokaisessa

lajissa on useita osallistujia.”

Page 12: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Pakollisuus

• Valinnainen: Asteen alaraja on 0– 0..1 (nolla tai yksi)– 0..n (nolla tai useampi)

• Pakollinen: Yhteyden asteen alaraja on 1– 1 (1..1)– 1..n (n)

Page 13: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokkien suhteista

suoritus

arvosanaov-määräpvm

opettajanimiosoitehenkilöNro

opintojakso

kuvaus

kurssikurssitunnusperioditlukukausi

0..1

0..*

0..1

0..*luennoi

10..* 10..*

<kuvaa

tentti

1

0..*

1

0..*kuuluu

Opiskelijanimiop.nroosoite

ilmoittaudu()

0..*1..* 0..*1..*

osallistuu

0..*

0..*

0..*

0..*

suorittaa

navigointisuunta

assosiatioluokka

lukusuunta

Page 14: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Periyttäminen, yleistäminen, erikoistaminen

luotollinen tili

luottoraja

otto()

tili

tiliNrosaldo

otto()pano()saldoKysely()

1

0..1

1

0..1

käyttötili

1

0..1

1

0..1

{xor}

luotollinen tili

luottoraja

otto()

tilitiliNrosaldo

otto()pano()saldoKysely()

käyttötili

rajoite

Page 15: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Periytyminen

• ”on”-suhde (”is-a”)– ”Auto on kulkuneuvo”

• Erikoistaminen Aliluokka– ”Kulkuneuvo on auto tai helikopteri”

• Yleistäminen Yliluokka– ”Auto ja helikopteri ovat kulkuneuvoja”

Page 16: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokka ALuokka A

ab

Luokka BLuokka B

c

Luokka CLuokka C

de

Luokka DLuokka D

f

piirteet:: a, b, c

piirteet:: a, b, d, e, f

piirteet:: a, b, d, e

piirteet:: a, b

Aliluokka perii piirteet

Page 17: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

käsipakka

sekoita()

käsikorttejaAluksi

lajittele()

korttikasasijaintiPöydällä

lisääPäälle()otaAlta()otaPäältä()

korttiarvomaakuvapuoliNäkyvissä

käännä()

0..*0..*

pöytäpakka

käännäPäältä()otaAlta()

Periyttäminen

erikoistaminenyleistäminen

Page 18: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Muodostuminen: Assosiaation erikoistapauksia

yritys henkilöosasto

0..*0..* 1..*1..*

muodoste (composition) kooste

(aggregation)

Page 19: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Koostuminen (aggregation) jamuodostuminen (composition)

• Koostuminen– ilmaistaan olion olevan toisen olion

komponentti

• Muodoste– elinikäriippuvuus: olio syntyy toisen olion

komponentiksi ja pysyyt sellaisena koko elinaikansa

– kun isäntäolio hävitetään, myös kaikki siihen muodostesuhteessa olevat oliot katoavat

Page 20: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Navigointi

Kvalifiointi

Roolien nimet

AccessRight

PersonCompany

ClientBank accountnr *

Person has*

1..**employer employee

Lisukkeet: Yhteyksien erityispiirteitä

Page 21: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Rajapinnat, toteutus-suhde ohjaus

kaynnista()sammuta()asetaNopeus()

<<Interface>>

höyrykone

kaynnista()sammuta()asetaNopeus()

<<thread>>

veturi

varoita()

varoitin

varoita()

<<Interface>>

<<uses>>

void kaynnista() { while (1) { .... if (kattilapaine > maxPaine) { vPtr->varoita("kohta pamahtaa") }....

realization

polttomoottori<<thread>>

Page 22: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Rajapinnat 2

veturi

varoitin

ohjaus

höyrykone<<thread>>

Page 23: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Yhteyksistä

• Assosiaatio yleisimmin käytetty yhteys• Jos yhteys heikko (esim. kohdeoliota tarvitaaan

vain parametreina, tai kohteena on tietty kirjasto, jonka on pakko olla olemassa toiminnan kannalta) käytetään riippuvuutta

• Jos luokka A tarvitsee tiukasti koko elinkaarensa ajan luokkaa B, kyseessä on kooste

Page 24: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokkakaavioiden käyttötavoista

• Kaavioita voidaan käyttää esitutkimuksessa, määrittelyssä ja suunnittelussa.

– Esitutkimus ja määrittely: sovellusalueen käsitteet (domain object model), järjestelmän rajaus, analysis object model, järjestelmän tietosisällön määrittely (käsitekaavio, conceptual model), usein myös tietokannan rakenne.

– Suunnittelu: ohjelman rakenne (design object model), tietokannan rakenne (esimerkiksi relaatiokannan graafinen esitys).

– Kaavio dokumentoi "sanaston", jolla asioista voi keskustella.

• Kaavio kertoo, millaiset tilanteet ovat mahdollisia.

• Kaavio ohjaa kysymään oikeita kysymyksiä.

Page 25: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Kaavioiden ilmaisuvoimasta

• Kaikkien sallittujen tilanteiden on oltava kaaviossa mukana.

• Kaikkia rajoituksia ei aina pysty ilmaisemaan => Lisätään rajoitteita ja kommentteja.

• Kaavioita voi testata hakemalla siita vastauksia kysymyksiin ja piirtelemällä kuvia esimerkkitilanteista

• Mahtavatkohan asiakkaat ymmärtää kaavioita?

Page 26: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

yritys

henkilö

nimiosoitepuhautonMerkkivuosimallirekisterinumero

0..*

0..*

0..*

0..*

työskenteleevakanssi

0..1

0..*

0..1

0..*

esimies

alainen

pomo

Henkilö ei saa olla oma esimiehensä

Kysymys 1: missä firmoissa A.S. on töissä?Kysymys 2: kuka on A.S.:n esimies, kun hän on Aikonilla hommissa?Kysymys 3: mikä on A.S.:n esimiehen titteli kohdan 2 kysymyksessä.

Esimerkki ilmaisuvoimasta

Page 27: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Ahto Simakuutio : henkilö

Teemu Teekkari : henkilö

Aikon Oyj : yritys

testaaja : vakanssi

konsultti : vakanssi $UNNA

MED$12

jaospäällikkö : vakanssi

pomo

alainen

Esimerkki ilmaisuvoimasta

Page 28: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

henkilö

nimiosoitepuhautonMerkkivuosimallirekisterinumero

yritys

0..*

0..*

0..*

0..*

työskentelee vakanssi

0..1

0..*

0..1

esimies

0..*

pomo

alainen

Esimerkki ilmaisuvoimasta

Page 29: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Ahto Simakuutio : henkilö

Teemu Teekkari : henkilö

Aikon Oyj : yritys

testaaja : vakanssi

konsultti : vakanssi

jaospäällikkö : vakanssi

pomo

alainen

Esimerkki ilmaisuvoimasta

Page 30: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Kaavioiden laatiminen: Luokat

• Luokan jäsenillä on samat attribuutit ja sama käyttäytyminen (metodit). • Tyypillisiä luokkia

– ”Konseptuaaliset” luokat: sovellusalueen käsitteet (toinen tapa sanoa lähes sama: käsitteet, jotka ovat mukana jokaisessa ajateltavissa olevassa ratkaisussa)

– itse keksityt metaforat yms, ”pure fabrication”: luokat, jotka keksitään ”tyhjästä” helpottamaan keskustelua sovelluksesta (määrittely- tai suunnittelutasolla)

– Suunnittelun MVC-malli (Model-View-Controller): Model-luokat sisältävät datan (usein konseptuaalinen luokka). View-luokka näkyy käyttöliittymässä. Controller-luokka sisältää käyttöliittymälogiikan.

– ...• Luokkajako perustuu pysyviin ominaisuuksiin ei esimerkiksi olion

väliaikaiseen tilaan. Esimerkki.• Toiminnallisuuden jakaminen: ei mahtiluokkia (God class), jotka "osaavat" ja

"tietävät" kaiken (muut luokat toimivat vain tiedon säilytyspaikkoina).

Page 31: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Kaavioiden laatiminen: Luokat

• Metodit– saantimetodit (accessors) palauttavat tietoa olion tilasta– muuttajametodit (mutators) muuttavat olion tilaa– perussääntö: laita metodit sinne, missä tietokin on

• Attribuutit– primitiivityypit esitetään attribuutteina– abstraktit tietotyypit ja joskus muutkin oliot voivat esiintyä myös

attribuutteina (vrt. muodoste ♦ )– assosiaatiot toteuttavia ”attribuutteja” ei yleensä esitetä

attribuutteina kaavioissa• Ei toistuvia kenttiä.• Ei tarpeetonta redundanssia • Ei puuttuvia kenttiä • Ei turhia luokkia.

Page 32: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Kaavioiden laatiminen: Yhteydet

• Olion A ja B voi yhdistää esimerkiksi seuraavanlainen suhde

– A on osa tai kuuluu B:n

– A sisältää tai omistaa B:n

– A kuvaa B:n

– A kommunikoi B:n kanssa

– A on tapahtuma, joka liittyy B:n

– A on fyysisesti B:n vieressä

– A käyttää B:tä

– A hallinnoi B:tä...

• Minimoi yhteydet luokkien välillä, ei redundantteja yhteyksiä

• ”need-to-know”-periaate: jos olio A tarvitsee toiminnassan oliota B, siihen on päästävä jotenkin käsiksi, eli A:lla on oltava ”näkyvyys” (visibility) olioon B

• Assosiaatiot kuvaavat yleensä tilannetta, jossa näkyvyys on pysyväisluontoista, siis koko ajan olemassa

• Muissa tapauksissa käytetään riippuvuusnuolia, esim.

– olio B välitetään parametrina olion A operaatiolle

– olio B on väliaikainen, A:n metodi luo olion, käyttää sitä ja tuhoaa sen lopuksi

Page 33: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Oliomallinnus

• Kokonaisvaltainen lähestymistapa– pyritään löytämään kerralla koko kohdealuetta kuvaava

malli– hankalaa, jos kohdealue on laaja– ensin karkea yleiskuva, sitten lisää yksityiskohtia

• Osista kokonaisuuteen– jaetaan kokonaisuus osiin ja tehdään osakohtaisia

malleja, jotka sitten yhdistetään kokonaismalliksi– osa voisi olla esimerkiksi käyttötapaus– yksityiskohdista yleiskuvaan

Page 34: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokkien löytäminen: yleisohje

• Kartoita luokkaehdokkaita• Karsi ehdokkaita• Tunnista olioiden väliset yhteydet• Määrittele attribuutit• Liitä luokkiin palvelut (luokkien välinen

vuorovaikutus)• Varmista palvelujen ja tietosisällön

yhteensopivuus (luokkien vastuut)

seuraavilla

luennoilla

Page 35: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Kartoita luokkaehdokkaita

– tarkasteltavan ilmiön kannalta keskeiset kohteet ja ilmiöt (osallistujat, toiminnan kohteet, toimintaan liittyvät tapahtumat, materiaalit, tuotteet, toiminnalle edellytyksiä luovat asiat)

– Kartoituksen pohjana voi käyttää vapaamuotoista tekstikuvausta tai sanallista käyttötapauskuvausta, josta luokkaehdokkaat löytyvät etsimällä substantiiveja

– Alleviivaa luokkaehdokkaat ja kerää ne luetteloon• luokkaehdokkaat esiintyvät kuvauksissa useina subjekteina tai

objekteina• verbit voivat ilmaista yhteyksiä, samoin genetiivit• alustavaa karsintaa voi tehdä sen perusteella, onko asia lainkaan

oleellinen mallinnettavan ilmiön kannalta

Page 36: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Karsi luokkaehdokkaita

• Arvioi löydetyt luokkaehdokkaat– liittykö luokan ilmentymiin järjestelmän kannalta

välttämätöntä tietosisältöä (yleensä oltava useita attribuutteja)?

– Tarvitaanko tietoa ilmentymien olemassaolosta?

– Onko asia riittävän tärkeä kohdealueen kannalta?

– Karsi synonyymit

– Karsintaa ja ehdokkaiden kartoitusta tehdään usein iteratiivisesti

Page 37: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Tunnista yhteydet

• Etsi yhteyksiä vapaamuotoisesta kuvauksesta– käy läpi verbit ja genetiivit

– muut ilmaukset jotka kuvaavat kytkentää

– Onko yhteys oleellinen tarkasteltavan ilmiön kannalta?

– Onko se rakenteellinen (vallitseva asiaintila)

• Esitä kukin asia vain kertaalleen– Karsi tai merkitse johdettavissa olevat yhteydet

Älä piilota yhteyksiä attribuuteiksi!

Page 38: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Määrittele attribuutit

• Attribuutteja saataa löytyä vapaamuotoisesta kuvauksesta

• Yleensä niiden löytäminen edellyttää lisäselvityksiä kohdealueesta esim. haastatteluja

• Attribuuttien kohdalla pitäisi myös selvittää, mihin niitä käytetään

Page 39: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Esimerkki puutarhatontut

Puutarhatontut vierailevat öisin ihmisten puutarhoissa. Kullakin puutarhatontulla on oma vastuualueensa jokaisessa puutarhassa, mutta tontut voivat auttaa myös toisten alueiden hoidossa. Kukin tonttu antaa raportin omien vastuualueidensa kasvuoloista: maaperän laadusta, kosteudesta, valaistuksesta ym.Lisäksi tontut raportoivat tekemistään uusista istutuksista. Kasveja voidaan joko istuttaa taimista tai kylvää niiden siemeniä. Istutus ja kylvöpäivämäärän lisäksi halutaan tallettaa tietoa istutuksen/kylvön onnistumisesta (itikö vai juurtuiko kasvi). Tonttuneuvosto haluaa tietää, kuka on istuttanut mitäkin, sillä taitavimmat puutarhatontut palkitan jokasyksyisillä puutarhajuhlilla. Järjestelmään talletetaan myös kasvien perustiedot: minkä tyyppinen kasvi on kyseessä (puu, pensas, kukka, vihannes), kasvuvaatimukset, mahdollisten kukkien väri ja kukinta-aika, sadonkorjuuaika jne.

Page 40: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Puutarhatontut:luokkaehdokkaiden etsintä

Puutarhatontut vierailevat öisin ihmisten puutarhoissa. Kullakin tontulla on oma vastuualueensa jokaisessa puutarhassa, mutta tontut voivat auttaa myös toisten alueiden hoidossa. Kukin tonttu antaa raportin omien vastuualueidensa kasvuoloista: maaperän laadusta, kosteudesta, valaistuksesta ym.Lisäksi tontut raportoivat tekemistään uusista istutuksista. Kasveja voidaan joko istuttaa taimista tai kylvää niiden siemeniä. Istutus ja kylvöpäivämäärän lisäksi halutaan tallettaa tietoa istutuksen/kylvön onnistumisesta (itikö vai juurtuiko kasvi). Tonttuneuvosto haluaa tietää, kuka on istuttanut mitäkin, sillä taitavimmat puutarhatontut palkitaan jokasyksyisillä puutarhajuhlilla. Järjestelmään talletetaan myös kasvien perustiedot: minkä tyyppinen kasvi on kyseessä (puu, pensas, kukka, vihannes), kasvuvaatimukset, mahdollisten kukkien väri ja kukinta-aika, sadonkorjuuaika jne.

Page 41: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Puutarhatontut: luokkaehdokkaiden arviointi

• Puutarhatonttu – Tontun synonyymi, karsitaan• Tonttu – oleellinen (tekijä)• Puutarha – oleellinen (toiminnan kohde)• Ihminen – mitä halutaan kuvata? epäoleellinen, puutarhan attribuutti• Vastuualue – oleellinen (toiminnan kohde, puutarhan osa) Nimen kuvaavuus?• Raportti – tuloste, tietosisällön kannalta ei mitään informaatiota• Istutus – oleellinen, tapahtuma, runsaasti attribuutteja• Kasvi – oleellinen, attribuuttien perusteella kasvilaji parempi nimitys• Taimi – kasvin tila, ei olio• Siemen – kasvin tila, ei olio• Tonttuneuvosto – epäoleellinen, ei attribuutteja• Puutarhajuhla – epäoleellinen? palkintojenjakotilaisuus• Palkinto (palkitaan) – oleellinen, ei suoraan tekstissä

Page 42: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Puutarhatontut: yhteyksien etsintä

• Puutarhatontut vierailevat öisin ihmisten puutarhoissa. Kullakin tontulla on oma vastuualueensa jokaisessa puutarhassa, mutta tontut voivat auttaa myös toisten alueiden hoidossa. Kukin tonttu antaa raportin omien vastuualueidensa kasvuoloista: maaperän laadusta, kosteudesta, valaistuksesta ym.Lisäksi tontut raportoivat tekemistään uusista istutuksista. Kasveja voidaan joko istuttaa taimista tai kylvää niiden siemeniä. Istutus ja kylvöpäivämäärän lisäksi halutaan tallettaa tietoa istutuksen/kylvön onnistumisesta (itikö vai juurtuiko kasvi). Tonttuneuvosto haluaa tietää, kuka on istuttanut mitäkin, sillä taitavimmat puutarhatontut palkitaan jokasyksyisillä puutarhajuhlilla. Järjestelmään talletetaan myös kasvien perustiedot: minkä tyyppinen kasvi on kyseessä (puu, pensas, kukka, vihannes), kasvuvaatimukset, mahdollisten kukkien väri ja kukinta-aika, sadonkorjuuaika jne.

Page 43: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Puutarhatontut:attribuuttien etsintä

• Puutarhatontut vierailevat öisin ihmisten puutarhoissa. Kullakin tontulla on oma vastuualueensa jokaisessa puutarhassa, mutta tontut voivat auttaa myös toisten alueiden hoidossa. Kukin tonttu antaa raportin omien vastuualueidensa kasvuoloista: maaperän laadusta, kosteudesta, valaistuksesta ym.Lisäksi tontut raportoivat tekemistään uusista istutuksista. Kasveja voidaan joko istuttaa taimista tai kylvää niiden siemeniä. Istutus- ja kylvöpäivämäärän lisäksi halutaan tallettaa tietoa istutuksen/kylvön onnistumisesta (itikö vai juurtuiko kasvi). Tonttuneuvosto haluaa tietää, kuka on istuttanut mitäkin, sillä taitavimmat puutarhatontut palkitaan jokasyksyisillä puutarhajuhlilla. Järjestelmään talletetaan myös kasvien perustiedot: minkä tyyppinen kasvi on kyseessä (puu, pensas, kukka, vihannes), kasvuvaatimukset, mahdollisten kukkien väri ja kukinta-aika, sadonkorjuuaika jne.

Page 44: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Puutarhatontut: Luokat ja attribuutit

• Tonttu– tonttutunnus– nimi

• Puutarha– puutarhatunnus– omistaja – sijainti

• Vastuualue– kosteus – valaistus

• Palkinto– vuosi– järjestysnumero– saaja (olioviite)

• Istutus– istutuspäivä– kasvi (olioviite)– vastuualue (olioviite)– paikka– istutusmuoto– onnistuminen– istuttaja (olioviite)

• Kasvilaji– nimi– tyyppi– vaatimukset– kukat – sadonkorjuu

Page 45: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Puutarhatontut:luokkakaavio

Page 46: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Luokkien etsiminen käyttötapauksista

• Etsitään käyttötapaus kerrallaan (käyttötapausten sanallinen kuvaus) luokat, niiden väliset yhteydet ja attribuutit

• Yhdistetään nämä luokkamallit yhdeksi luokkamalliksi

Page 47: Ohjelmistotuotannon menetelmät Syksy 2003  Luokka- ja käsitekaaviot, oliomallinnus

Hyviä tenttikysymyksiä

• Annetaan jokin sovellusalueen kuvaus, esim. Afrikan tähti –peli. Mallinna sovellusalueen luokat, niiden väliset yhteydet ja attribuutit. Esitä sekä välivaiheet että lopullinen UML luokkakaavio perustelujen kera.


Top Related