TDT4100/oppgavetekster/oving3/CoffeeCup.md

3.2 KiB

Debugging - CoffeeCup-oppgave

Oppgaven handler om feilsøking i en CoffeeCup- og en CoffeeCupProgram-klasse ved bruk av debuggeren i Eclipse.

Et CoffeeCup-objekt inneholder kapasitet og nåværende volum av kaffe.

  • Kapasitet må være et ikke-negativt flyttall, som til enhver tid må være større enn nåværende volum av kaffe.
  • Nåværende volum av kaffe er et ikke-negativt flyttall som til enhver tid må være mindre enn kapasiteten til koppen.

CoffeeCup-klassen har følgende metoder og konstruktører:

  • void drinkCoffee(double) og void fillCoffee(double), hvor man henholdsvis drikker og fyller koppen med kaffe. Om man prøver å drikke mer enn det finnes i koppen, eller fyller for mye i koppen blir en IllegalArgumentException utløst.
  • void increaseCupSize(double), som øker størrelsen på koppen. Om man prøver å gjøre koppen mindre skjer ingenting.
  • CoffeeCup(), en konstruktør som setter standard initialverdier til 0.0 kapasitet og 0.0 nåværende kaffe i koppen.
  • CoffeeCup(double, double), en konstruktør som setter initialverdier til de oppgitte verdiene.
  • I tillegg har klassen noen private hjelpefunksjoner som man kan identifisere selv.

CoffeeCupProgram-klassen er en hovedprogramklasse som oppretter en instans av CoffeeCup, og utfører en sekvens av kall til koppens ulike metoder.

I denne oppgaven blir en implementasjon av CoffeeCup sammen med et hovedprogram utdelt, men i implementasjonen av hovedprogrammet har vi plantet noen feil. Det er to oppgaver som må løses.

CoffeeCup-koden finner du i debugging/CoffeeCup.Java. CoffeeCupProgram finner du i debugging/CoffeeCupProgram.java.

Leseliste

  • Debugging i Eclipse - Debuggeren er et verktøy som brukes til å analysere kjørende kode, noe som kan være svært nyttig når man vil forstå og evt. rette feil i et program.
  • Hovedprogramklasser - Hovedprogramklasser er klasser som aktiveres når programmer starter opp og som initialiserer og kontrollerer/koordinerer de andre objekter i applikasjonen.
  • java.util.Random - En pseudotilfeldig nummergenerator i Java.

Oppgave 1

Målet for oppgaven er å finne en feil i funksjonen part1() ved hjelp av debuggeren i Eclipse. Kjør hovedprogrammet i debug-modus, og bruk dette til å finne hva kapasiteten og nåværende volum av kaffe er like før programmet utløser et unntak.

Finn også ut hvilken metode i CoffeeCup som utløser unntaket.

Oppgave 2

Du fant feilen i oppgave 1, bra! Kommentér ut kallet til part1() i hovedprogrammet, så slipper vi å ha mer med det å gjøre.

Du skal nå finne ut hvordan nåverende volum av kaffe endrer seg i part2(), før programmet utløser et unntak. Lag en liste over hvilke verdier nivået har. Hvilken metode i CoffeeCup utløser et unntak denne gangen? Hvilken type unntak blir utløst?