ohjelmistotuotannon menetelmät syksy 2003 luokka- ja käsitekaaviot, oliomallinnus
DESCRIPTION
Ohjelmistotuotannon menetelmät Syksy 2003 Luokka- ja käsitekaaviot, oliomallinnus. Päivi Ovaska Tutkijaopettaja LTY/Tite. Sisältö. Luokkamallinnus, käsitemallinnus Taustaa oliopohjaisesta ajattelusta UML luokkakaaviot Kaavioiden ilmaisuvoimasta Kaavioiden laatiminen Oliomallinnus - PowerPoint PPT PresentationTRANSCRIPT
Ohjelmistotuotannon menetelmätSyksy 2003
Luokka- ja käsitekaaviot, oliomallinnus
Päivi Ovaska
Tutkijaopettaja
LTY/Tite
Sisältö
• Luokkamallinnus, käsitemallinnus• Taustaa oliopohjaisesta ajattelusta• UML luokkakaaviot• Kaavioiden ilmaisuvoimasta• Kaavioiden laatiminen• Oliomallinnus• Oliomallinnus esimerkki• Hyviä tenttikysymyksiä
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
Luokka- ja oliokaaviot
• Luokka- ja oliokaavioilla kuvataan– ohjelmiston/järjestelmän rakenne– olioiden tietosisältö– olioiden tarjoamat palvelut– olioiden ja luokkien väliset yhteydet
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.
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.
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
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
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
Luokka (käsite,kohde) ja yhteys
tilaus
asiakasnimiosoiteuusi
tilaaTuote()
• 0..*• 1 • 0..*• 1• tekee
luokka
attribuutit
operaatiot
yhteys
lukumääräsuhde
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.”
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)
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
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
Periytyminen
• ”on”-suhde (”is-a”)– ”Auto on kulkuneuvo”
• Erikoistaminen Aliluokka– ”Kulkuneuvo on auto tai helikopteri”
• Yleistäminen Yliluokka– ”Auto ja helikopteri ovat kulkuneuvoja”
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
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
Muodostuminen: Assosiaation erikoistapauksia
yritys henkilöosasto
0..*0..* 1..*1..*
muodoste (composition) kooste
(aggregation)
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
Navigointi
Kvalifiointi
Roolien nimet
AccessRight
PersonCompany
ClientBank accountnr *
Person has*
1..**employer employee
Lisukkeet: Yhteyksien erityispiirteitä
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>>
Rajapinnat 2
veturi
varoitin
ohjaus
höyrykone<<thread>>
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
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ä.
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?
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
Ahto Simakuutio : henkilö
Teemu Teekkari : henkilö
Aikon Oyj : yritys
testaaja : vakanssi
konsultti : vakanssi $UNNA
MED$12
jaospäällikkö : vakanssi
pomo
alainen
Esimerkki ilmaisuvoimasta
henkilö
nimiosoitepuhautonMerkkivuosimallirekisterinumero
yritys
0..*
0..*
0..*
0..*
työskentelee vakanssi
0..1
0..*
0..1
esimies
0..*
pomo
alainen
Esimerkki ilmaisuvoimasta
Ahto Simakuutio : henkilö
Teemu Teekkari : henkilö
Aikon Oyj : yritys
testaaja : vakanssi
konsultti : vakanssi
jaospäällikkö : vakanssi
pomo
alainen
Esimerkki ilmaisuvoimasta
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).
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.
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
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
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
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
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
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!
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
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.
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.
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ä
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.
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.
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
Puutarhatontut:luokkakaavio
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
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.