Nivå och poängvärde: | C 90 |
---|---|
Kort beskrivning: | Vi skapar en mångsidigare version av fotbollsstatistikprogrammet, som också håller reda på spelarna. |
Vad vi lär oss: | Användning av listor. |
Frihet i implementationen: | Medel. Tillvägagångssättet är inte exakt definierat, men problemet är så pass begränsat att det inte finns många unika lösningssätt. |
Realism: | Hög. Här ändras en programhelhet som är bekant från förr enligt nya krav, vilket är typiskt också i riktiga livet. |
Utmaning: | Medel. Man måste sätta sig in i listanvändning vilket kräver tankearbete. |
Arbetsmängd: | Tämligen låg. De flesta nybörjare använder ett par timmar till denna uppgift. |
The only constant is change, continuing change, inevitable change. -- Isaac Asimov
Programutveckling är typiskt iterativ: först skapar man en enkel version eller prototyp, testar och utvärderar den och fortsätter sedan framåt med arbetet. Det är också typiskt att man under arbetets gång får nya krav på programmet som måste beaktas i nästa version. Så här går det för vår klass som hanterar fotbollsstatistik som vi utvecklade i den förra uppgiften.
Bekanta er med den givna Epydoc-dokumentationen, som beskriver hur man borde fortsätta utveckla Match
-klassen. Den här specifikationen skiljer sig från det tidigare Football1-projektet och dess simplare specifikation. Den nya Match
-klassen håller inte reda bara på målen utan också på vem som gjort dem. De gamla add_home_goal
- och add_away_goal
-metoderna är ersatta av en add_goal
-metod, i vilken det är meningen att man från målgöraren kan avgöra vilket lag som gjorde mål. På önskelistan finns också nya metoder, bl.a. för att ta reda på spelaren som gjorde det vinnande målet. Allt det här förutsätter en ganska så stor renovering av Match
-klassen. Som hjälp behöver vi listor och en Player
-klass som beskriver spelare.
I filen match.py
finns en ofärdig version av Match
-klassen, vari man har lagt en bra början för implementationen: bland instansvariablerna finns två listor där man kan spara målgörare, en ny konstruktor och ett nytt sätt att lägga till mål är skissad i metoden add_goal
. Också en ny metod get_winner
är färdigt gjord. Er uppgift är att komplettera Match
-klassen så att den fungerar genom att göra add_goal
-metoden färdigt och lägga till de saknade metoderna.
Klasserna Club
och Player
är färdigt givna, de behöver inte ändras.
Skapa modulen match_test.py
som innehåller ett huvudprogram med vilket ni testar er klass. Också denna modul bör placeras i paketet src.football2
. Som botten kan ni använda motsvarande klass i föregående uppgift.
Senast under denna rond är det väldigt lönsamt att lära sig använda debuggerverktyget i Eclipse, med vilken man kan gå igenom ett programs utförande rad för rad. Det tar en stund att lära sig använda den, men det sparar mycket tid vid felsökning.
Kursen har tills vidare ingen video på svenska för hur man använder debuggern, men här är länkarna till den finskspråkiga videon samt textguiden:
Lämna in den modifierade klassen Match
och modulen match_test
i Goblin.
Match
-implementationen som kan användas som sådana och vilka som måste anpassas.