Viikko 4 ja 5 vastauksia kysymyksiin
Q: odotetaanko jotain vastaavaa projektisuunnitelmalta, kuin mitä oli UML-kierroksen tehtävässä
A: Sanoisin, että ihan niin kaikkia yksityiskohtia ei tarvitse projektin suunnitelmassa antaa, kuin mitä roboottimaailman mallinnuksessa haluttiin. Eli riittää, että kaaviossa on mukana luokat pääpiirteissään, eli ehkä muutama tärkein metodi listattuna, ei niinkään että mitä kaikkia kenttiä olioilla on.
Q: Graafisen UML-työkalun käyttö oli hankalaa, kun se ei hyväksynyt kaikkia yhteyksiä.
A: Joo, se on vähän hankala, mutta tietokoneet nyt on semmoisia, että asiat joko on tai ei ole, ja yhteys piti päättää tiettyihin kohtiin (jotka muuttui vihreäksi kun oli oikeassa kohtaa). Eli vaikka ihmissilmin havaitsisi tarkoituksen, kone ei lukiessaan kuvasta tehtyä XML-tiedostossa ole muodostanut tuota yhteyttä. Tämä on se mitä hävitään, kun halutaan antaa välitöntä palautetta (koska ihmisiltä kestäisi näiden tarkastaminen paljon kauemmin - tämä on muuten kurssilla viimeisenä konearvioitavaksi muokattu tehtävä).
Selitykset UML-tehtävän monivalinnoille
A+ on tehty niin, että se ei monivalinnoissa yhtään auta, ettei valintoja voisi arvata yksi kerrallaan. Tämä on käsittääkseni A+n kehittäjien toteuttama, muiden perusohjelmointikurssien opettajilta saadun tehtävänannon mukainen toive. A+a käyttävillä kursseilla monivalinnat eivät ole pääasiallinen tehtävätyyppi, vaan ne ovat lisä.
Siispä niistä oikeista vastauksista nyt erikseen. X on oikein, - on väärin, * on selitys.
Tehtävä 1)
X Luokan UML:iin ei ole pakko merkitä instanssimuuttujia tai metodeja
X Jos assosiaatiossa ei ole nuolenkärkiä, voi suhde osoittaa kumpaan tahansa suuntaan.
X Rooleilla voi selkiyttää mitä jokin assosiaatio käytännössä tarkoittaa.
- Multiplisiteetti on aina pakko merkitä kaavioon.
- Luokkakaaviossa on kaikki tarvittava informaatio luokan toteuttamiseen.
Luokkakaavio on korkean tason malli, eikä siihen tarvitse kaikkea merkitä. Näinollen sen avulla ei välttämättä voi toteuttaa ohjelmaa, eikä kaikkia tietoja ole merkitty. Luokkien välisiin yhteyksiin voi merkitä nuolen, mutta sekään ei ole välttämätöntä - silloin luokkien välillä on siis jokin yhteys, mutta siitä ei ole sen tarkempaa tietoa, esim. mihin suuntaan yhteys on seurattavissa.
Tehtävä 2)
Ylläoleva kaavio kuvaa bussia ja sen reittiä. Arvioi annettujen väittämien todenperäisyyttä tämän luvun tietojen valossa. Valitse paikkansa pitävät väittämät:
X Bussi-luokassa oleva metodi ei voi listata mihin muihin busseihin sen reitin varrelta voi vaihtaa.
* ei voi listat, koska reitistä pysäkkeihin on yksisuuntainen yhteys, ja bussista reittiin on yksisuuntainen yhteys. Pysäkin perusteella ei siis pysty päättelemään, mitä busseja sen kautta kulkee.
- Reitin poistaminen johtaa siihen että pysäkitkin olisi syytä purkaa.
* ei ole totta, koska kyseessä on aggregaatio, eli vaikka reitti koostuu pysäkeistä, pysäkit on itsenäisinä olioina olemassa. Jos kyseessä olisi kompositio (mustattu timantti), niin sitten pysäkit voisi poistaa
X On mahdollista että joillakin reiteillä ei ole lainkaan busseja.
* Reitin ja bussin välisen yhteyden bussi-päässä on tähti. Tähti merkitsee, että bussi-olioita on tällä reitillä 0-n, jossa n on joku luku. Näin ollen on väite on tosi.
- Kullakin reitillä voi olla vain yksi reittiä liikennöivä bussi.
* sama kuin yllä, eli ykkönen on reitin päässä, ei bussin päässä yhteyttä. Busseja on 0-n yhdellä reitillä.
X Bussi-luokassa oleva metodi voi listata kulkemansa reitin pysäkkien osoitteet.
* Tämä on totta, koska bussi-luokasta pääsee nuolien suuntaan kulkemaan pysäkki-luokkiin, eli bussi-luokassa on jokin muuttuja, jossa on bussin reitti, ja reittiluokassa on jokin muuttuja (jota ei kuvassa ole mukana), josta pääsee pysäkkeihin käsiksi.
X Pysäkki-luokasta ei välttämättä pääse käsiksi siihen, mihin reittiin se kuuluu.
* pysäkki ja reitti-luokan välisen yhteyksen nuoli on reitistä pysäkkiin, ei pysäksitä reittiin. Ainakin siis tämän mallin mukaan on niin, että pysäkki ei välttämättä tiedä, mille reitille se kuuluu
- Kukin Pysäkki voi kuulua vain yhteen reittiin.
* pysäkin ja reitin väliseen yhteyteen ei ole merkitty mitään määrätietoa, joten tätä ei voi päätellä kaaviosta.
Tehtävä 3)
Ylläoleva kaavio kuvaa bussia ja rekkaa. Arvioi annettujen väittämien todenperäisyyttä. Valitse paikkansa pitävät väittämät:
X Bussissa ei välttämättä ole istuimia.
* Bussin ja istuinten määrän välisen yhteyden istuinten päähän on laitettu *-merkki, joka tarkoittaa 0-n. Jos olisi ainakin yksi istuin, pitäisi merkinnän olla 1..n
- Kaikilla ajoneuvoilla on pyöriä ja istuimia.
* Sama kuin yllä eli pyörien ja istuinten määrä yhteyksillä on * eli 0-n.
- Kaikilla ajoneuvoilla on reitti
* Vain bussi-luokasta on yhteys reitti-luokkaan, joten rekalla ei ole reittiä.
X Kaaviosta voi nähdä että luokissa bussi ja rekka on ehkä toistettu koodia.
* Kyllä, koska sekä bussista että rekasta viitataan samankaltaisin yhteyksin pyöriin ja istuimiin. Eli voisi olla järkevämpi, että viittaus pyöriin ja istuimiin tulisi ajoneuvosta, jos ajoneuvo olisi olio, jolla on pyöriä ja istuimia (eikä siis sisällä esim. veneitä, joissa on harvemmin pyöriä)
X Luokkien Bussi ja Rekka yhteiset ominaisuudet (pyörät ja istuimet) pitäisi ehkä siirtää yliluokkaan.
* Kyllä, koska tällöin ei samaa koodia olisi kahdessa paikkaa (sama kuin yllä)
- Ajoneuvo-olio voi olla samanaikaisesti sekä bussi että rekka.
* Ei voi olla molempia, koska meillä on erikseen bussi- ja rekka-luokat.
Tehtävä 4)
* Tämä oli siis todella vaikea tehtävä! Perfektionisteille varoituksen sana elämästä: kaikkea ei voi tehdä täydellisesti, ja sitä kannattaa opetella sietämään. (Tähän olen törmännyt kanditöitä ja dippatöitä ohjatessani, eli työ ei valmistu ollenkaan, kun sen pitäisi olla täydellinen....)
Ylläoleva kaavio kuvaa erilaisia esineitä. Arvioi annettujen väittämien todenperäisyyttä tämän luvun ja syksyllä oppimasi valossa. Valitse paikkansa pitävät väittämät:
X Esine voi olla joko Umpinainen tai Ontto.
- esine on piirreluokka, eli abstrakti olio. Varsinaiset esine-olion instanssit on aina joko umpinainen- tai ontto-luokan olioita.
X Onton esineen sisällä tulisi olla ainakin yksi esine.
* ontosta on nuolena yhteys esineeseen, ja sen esine-päässä määritellään, että noita esineitä on joko yksi tai kaksi. Niinollen ontossa on aina jotain sisällä.
X Ontto esine voi sisältää vaikka itsensä
* Tää on ehkä se hankalin tässä monivalinnassa, koska ontto itsessäänkin on esine. Samaan tapaan kuin ihminen voi ylempänä olla vanhemman tai lapsen roolissa ihminen, niin kaaviosta
"piilotetaan" esineluokan alaluokat, niin samaan tapaan tällöin esine viittaisi itseensä.
- Umpinainen esine voi myös sisältää muita esineitä koska se perii piirreluokan Esine ja Ontot esineet ovat myös esineitä.
* Ainakaan tämän kaavion mukaan Umpinaisessa ei ole mitään viittausta muihin esineisiin, joten näin ei ole.
X Onton esineen painon laskeva metodi korvaa piirreluokassa määritellyn metodin (tai toteuttaa sen).
* Sekä Ontossa että Esineessä on metodi annaPaino, joten kun Onton metodia annaPaino-kutsutaan, niin se mitä oikeasti sillon kutsutaan, on nimeonmaan Ontto-luokassa annettu määritys annaPaino-funktiolle.
Viikko 5
Kukaan ei ole kysynyt mitään :/