Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Klassen skal implementere logikken ofte funnet på stoppeklokker på smarttelefoner.

For å holde styr på tiden som går vil StopWatch-klassen bli kalt utenfra (altså noe du slipper å implementere i denne oppgaven) på en tick(int)-metode. I dataverdenen er et tick (tikk på norsk) minste målbare diskret tidsenhet. I denne oppgaven er 1 tikk = 1 millisekund. F.eks. vil et kall tick(3) fortelle en StopWatch-instans at 3 tikk har gått siden sist gang tick() ble kalt.

StopWatch skal fungere på følgende måte:

  • Klokken startes når man ønsker å starte tidtakningen.
  • Alle tikk etter at klokken har blitt startet skal medregnes i tidtakningen.
  • Klokken stoppes når man ønsker å stoppe tidtakningen. Da er tidtakningen helt ferdig. Det er ikke en pause i tidtakningen - klokken skal ikke startes igjen.
  • Det skal være mulig å ta rundetider.
  • Første rundetid startes når klokken starter.
  • Under tidtakningen kan man starte en ny rundetid, og dermed implisitt avslutte den nåværende.
  • Siste rundetid avsluttes når klokken stoppes.

Image Modified

StopWatch-klassen må ha metoder for å spørre om tilstanden og metoder for å endre tilstanden.

...

  • void tick(int ticks) - forteller klokken at ticks antall tikk har gått siden sist gang metoden ble kjørt.
  • void start() - starter klokken.
  • void lap() - avslutter nåværende rundetid og starter en ny.
  • void stop() - stopper klokken.

Del 1 -

...

Tilstandsdiagram

Tegn et objekttilstandsdiagram for en tenkt bruk av StopWatch-klassen. Velg en sekvens av kall som både starter klokken, tar rundetider og stopper klokken.

...

Lag en passende toString()-metode og en main-metode, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme sekvens av kall).

Del 3 - JavaFX

Dersom Eclipse har blitt installert som forklart på installasjon av eclipse har du mulighet til å høyreklikke på prosjektmappen (ovinger) -> Team -> Pull for å laste nødvendige filer for denne øvingen. Da skal det ligge StopWatchController.java og StopWatch.fxml i prosjektmappen din, i pakken "stateandbehavior". Disse utgjør en JavaFX-applikasjon, og bruker StopWatch-klassen du har laget. Kjør applikasjonen ved å høyreklikke på StopWatch.fxml -> Run As -> FXML application, og observer hva som skjer.Åpne StopWatchController og finn ut hvor StopWatch-klassen din blir brukt, og kommenter kort hva som skjer med den. Det er ikke et krav at du forstår resten av koden i StopWatchController, du skal kun forklare hvordan klassen din blir brukt.

 

Testkode for denne oppgaven finner du her: stateandbehavior/StopWatchTest.javaOriginal-koden (jextest) finner du her: stateandbehavior/StopWatch.jextest.

...