Taso ja pistearvo: | C 90 |
---|---|
Lyhyesti: | Luodaan futistilastointiohjelmasta monipuolisempi versio, joka pitää kirjaa myös pelaajista. |
Mitä opitaan: | Metodien kirjoittamista, listojen käsittelyä. |
Toteuttamisen vapaus: | Kohtalainen. Toimintatapaa ei ole määritelty pilkuntarkasti, joskin ratkaistavaksi annettu ongelma on laajuudeltaan sen verran pieni ettei keskenään täysin erilaisia ratkaisutapoja juuri ole. |
Realistisuus: | Työskentelytavan osalta korkea. Tässä muokataan aiemmin kohdattua ohjelmakokonaisuutta uusien vaatimusten mukaiseksi, mikä on tyypillinen oikeankin elämän ohjelmointitehtävä. |
Haastavuus: | Keskitasoa. Listojen käyttö vaatii paneutumista ja ajattelua. |
Työläys: | Melko kevyt. Useimmilla aloittelijoilla mennee tähän parisen tuntia. |
The only constant is change, continuing change, inevitable change. -- Isaac Asimov
Ohjelmankehitystyölle on tyypillistä iteratiivisuus: laaditaan ensin yksinkertainen varsio tai prototyyppi, kokeillaan ja arvioidaan sitä ja jatketaan sitten kehitystyötä eteenpäin. On myös tyypillistä, että ohjelman kehitystyön aikana myös ohjelmalle asetetut vaatimukset muuttuvat ja ne täytyy huomioida seuraavaa versiota kehitettäessä. Näin käy nyt edellisessä tehtävässä pohjustetulle jalkapallotilastoja käsittelevälle luokallemme.
Hakekaa projekti Football2 itsellenne. Tutustukaa oheiseen Epydoc-dokumentaatioon, joka kuvaa millaiseksi luokka Match
tulee jatkokehittää.
Tämä spesifikaatio eroaa aiemmassa Football1-projektissa olleesta yksinkertaisemmasta spesifikaatiosta.
Uuden Match
-luokan tulee pitää kirjaa ei ainoastaan maaleista vaan myös siitä, ketkä nuo maalit ovat tehneet.
Vanhat add_home_goal
- ja add_away_goal
-metodit on korvattu yhdellä add_goal
-metodilla,
jonka olisi tarkoitus osata päätellä maalintekijän mukaan, kummalle joukkueelle maali kirjataan.
Toivelistalla myös uusia metodeja, mm. ottelun voittomaalin(katso dokumentaatiosta, miten voittomaali määritellään) tekijän määrittämiseen. Tämä kaikki edellyttää melko suurta remonttia
luokan Match
toteutuksessa. Avuksi tarvitaan listoja ja pelaajia kuvaavia
Player
-olioita.
Tiedostosta match.py
löytyy vaillinainen versio luokasta Match
, johon on lisätty
jo ihan hyvä alku uudelle toteutukselle: ilmentymämuuttujissa on kaksi listaa, joihin voi tallentaa maalien tekijöitä,
alustusmetodi on pistetty remonttiin ja uusi tapa lisätä maaleja on luonnosteltu metodiin add_goal
.
Myös uusi get_winner
-metodi on valmiiksi tehty. Tehtävänne on täydentää luokka Match
toimivaksi viimeistelemällä add_goal
-metodi ja lisäämällä puuttuvat metodit.
Luokat Club
ja
Player
on annettu valmiina; niihin ei tarvitse eikä pidä tehdä muutoksia.
Laatikaa moduuli match_test.py
, jonka avulla testaatte luokkaanne.
Tämäkin moduuli tulee sijoittaa pakkaukseen football2
. Pohjana voi käyttää edellisen tehtävän vastaavaa
moduulia.
Viimeistään tätä kierrosta tehdessä on erittäin kannattavaa tutustua Eclipsen debuggerityökaluun, jolla voi käydä omien(kin) ohjelmien suoritusta läpi rivi riviltä. Debuggerin käytön opettelu vie hetken, mutta säästää paljon aikaa virheitä etsiessa kurssin mittaan ja sen jälkeen!
Kurssilla on opetusmateriaalia debuggerin hyödyntämisestä. Erityisesti videoiden kautta debuggerin käyttö selvinnee konkreettisella tavalla.
Palauttakaa Gobliniin muokattu luokka Match
sekä moduuli match_test
,
jossa on testaukseen käyttämänne pääohjelma.
Match
-toteutuksesta
ovat sellaisenaan hyödynnettävissä uuteen versioon ja mihin tarvitaan muokkausta.