You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Denne oppgaven handler tar utgangspunkt i Card-oppgaven fra øving 3 med klassene Card og CardDeck. I testing-mappen ligger det en implementasjon av Card og CardDeck som har noen logiske feil. Din oppgave er å skrive testkode som synliggjør disse feilene.

Klassene Card og CardDeck som skal ha følgende oppførsel:

Card-klassen er en såkalt verdiklasse, som kodes slik at objektene ikke kan endres etter at de er opprettet. Klassen skal ha følgende metoder:

  • Card(char, int) - konstruktøren initialiserer kortfarge ('S', 'H', 'D' eller 'C') og tallverdi (heltall mellom 1 (ess) og 13 (konge)) med henholdsvis første og andre argument. Konstruktøren må utløse unntak av typen IllegalArgumentException hvis en (eller begge) av disse verdiene er ugyldige.
  • getSuit() - returnerer kortfargen som en char, en av 'S''H''D' eller 'C'.
  • getFace() - returnerer tallverdien som en int mellom 1 og 13 (inklusive).
  • toString() - returnerer en streng som består av <suit><face> e.g. for spar ess skal "S1" returneres.

CardDeck-objekter inneholder initielt et visst antall kort av de fire kortfargene 'S''H''D' og 'C'. Klassen inneholder standardmetoder for å lese hvor mange og hvilke kort og en metoder for endre tilstand.

  • CardDeck(int n) - fyller kortstokken med de n første kortene av hver kortfarge, totalt n * 4 kort, med spar 1 som første kort (indeks nr. 0), spar 2 som andre (nr. 1), spar 3 som tredje (nr. 2), spar 4 som fjerde (nr. 3), ..., hjerter 1 som fjortende (nr. 13), hjerter 2 som femtende (nr. 4) osv. i.e. først alle spar, så hjerter, så ruter og så kløver, alle i stigende rekkefølge. 
  • getCardCount() - returnerer hvor mange Card-objekter som CardDeck-objektet inneholder.
  • getCard(int n) - returnerer kort nr. n eller utløser et IllegalArgumentException hvis n ikke er gyldig. Kort nr 0 er det første kortet i kortstokken. 
  • shufflePerfectly() - stokker kortstokken ved å dele den i to like store deler og flette de to delene perfekt, slik at kortet på toppen forblir på toppen og kortet på bunnen forblir på bunnen (se http://en.wikipedia.org/wiki/Out_shuffle)

Gjøremål

De utdelte klassene Card og CardDeck inneholder til sammen 3 feil i forhold til oppgaveteksten. Du skal lage klassen CardTest som inneholder JUnit-testkode som avdekker disse feilene.
Card- og CardDeck-klassene du skal teste ligger i ovinger/src/testing.  CardTest-klassen skal også legges her. 

 

Hjelp / mistanke om bugs

Ved spørsmål eller behov for hjelp konsulter studassen din i saltiden hans / hennes. Du kan også oppsøke andre studasser på sal eller legge ut et innlegg på Piazza.

Godkjenning

Last opp kildekode og .ex-filene på Blackboard innen den angitte innleveringsfristen. Innlevert kode skal demonstreres for stud.ass innen én uke etter innleveringsfrist. Se for øvrig Blackboard-sidene for informasjon rundt organisering av øvingsopplegget og det tilhørende øvingsreglementet.

Exercise-panelet

For hver oppgave finnes det en tilsvarende .ex-fil, som beskriver hvilke aktiviteter, f.eks. koderedigering, kjøring av tester osv, som er en del av oppgaven. Når en jobber med en oppgave, så kan en åpne .ex-fila for oppgaven i Exercise-panelet. Dette gjøres enten ved å høyreklikke på fila og velge Exercise > Open Exercise View eller å åpne panelet med Window > Show View > Other... > Exercise View og så dra og slippe .ex-fila i panelet. Filen ligger i mappen tests, og videre i pakke med samme navn som klassen den hører til. Hver .ex-fil åpnes i en egen fane, så en kan jobbe med flere oppgaver samtidig. 
Disse .ex-filene, én for hver oppgave,  leveres inn sammen med kildekoden i øvinger hvor det er spesifisert.


 

  • No labels