T-106.1210 Ohjelmoinnin peruskurssi, osa1

Kierros 5, tehtävä 4

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.

Johdanto

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.

Tehtävänanto

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.

Debuggeri

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.

Video: Virheiden etsintä (Eclipsen debuggerilla)

Teksti: Debuggerin käyttö

Palauttaminen

Palauttakaa Gobliniin muokattu luokka Match sekä moduuli match_test, jossa on testaukseen käyttämänne pääohjelma.

Ohjeita ja vinkkejä