Files
Andreas Omholt Olsen 26163d3029 Add oving3
2026-01-22 22:01:08 +01:00

3.3 KiB

Innkapsling - Card-oppgave

Denne oppgaven handler om to klasser for kortspill: Card (kort) og CardDeck (kortstokk), der den siste inneholder ett eller flere Card-objekter.

I mange sammenhenger vil objekter av en klasse inneholde eller "eie" objekter av andre klasser. Når en klasse er assosiert med én instans av en (annen) klasse er dette en 1-1-assosiasjon og når en klasse er assosiert med flere instanser av en annen klasse er dette en 1-n-assosiasjon. I denne oppgaven skal du implementere logikk for en kortstokk som inneholder kort. Nedenfor beskrives begge klassene og metodene disse skal inneholde.

Filene i denne oppgaven skal lagres i oving3/card.

Card

Oppgavebeskrivelsen for denne deloppgaven er annerledes enn oppgavene dere har møtt tidligere. Istedenfor å få gitt oppgavene her i README-en, skal dere lese og forstå den såkalte Javadoc-dokumentasjonen som er skrevet i koden. Javadoc er en måte å skrive dokumentasjon på i Java, og er en standard måte å skrive dokumentasjon på i Java-verdenen. Dette er ofte slik oppgavene blir gitt på eksamen, så det er viktig å kunne lese og forstå Javadoc-dokumentasjonen. Her gjelder det å lese beskrivelsen nøye, og det er ofte fordelaktig å lese testkoden for å forstå hva som forventes av klassen.

Kjapt tips: Hold musen over metoden/klassen for å lese Javadoc-dokumentasjonen på et fint format.

Den påbegynte koden for Card-klassen finner du i oving3/card/Card.java.

CardDeck

Denne klassen må dere lage selv slik som på tidligere øvinger. 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 metode for å endre tilstand.

Konstruktør:

  • 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, spar 2 som andre, spar 3 som tredje, spar 4 som fjerde, ..., hjerter 1 som fjortende, hjerter 2 som femtende, osv. Med andre ord, først alle spar, så hjerter, så ruter og så kløver, alle i stigende rekkefølge.

Lesemetoder:

  • int getCardCount() - returnerer hvor mange Card-objekter som CardDeck-objektet inneholder.
  • Card 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.

Endringsmetode:

  • void 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).

Oppgave: Java-kode

Skriv Card- og CardDeck-klassene, slik at de har ønsket oppførsel og er skikkelig innkapslet. Det kan være lurt å skrive og teste Card-klassen først.

Testkode for denne oppgaven finner du i oving3/card/CardDeckTest.java og oving3/card/CardTest.java.