Versions Compared

Key

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

...

I denne oppgaven skal du implementere en StopWatchManager-klasse som kan holde styr på flere stoppeklokker. Ved hjelp av StopWatchManager skal man enkelt kunne holde styr på flere stoppeklokker og sørge for at alle stoppeklokker får beskjed om tiden som går. Dette kan være nyttig hvis man f.eks. ønsker å holde styr på flere løpere i et skirenn der ikke alle starter og fullfører samtidig, men hvor allikevel klokken må gå for alle.

Det skal være mulig å opprette nye stoppeklokker med et tilhørende navn (streng). Navnet skal man senere kunne bruke til å hente stoppeklokken igjen eller fjerne stoppeklokken fra StopWatchManager. For å få til dette kan det være lurt å se litt på Map fra Collection-rammeverket.

StopWatchManager skal ha følgende endringsmetoder:

  • StopWatch newStopWatch(String name) - Oppretter en ny stoppeklokke knyttet til strengen navnet name. Returnerer den nye stoppeklokken.
  • void removeStopWatch(String name) - Fjerner stoppeklokken tilknyttet strengen navnet name.
  • void tick(int ticks) - Informerer alle stoppeklokkene om at ticks tikk har gått.

...

  • StopWatch getStopWatch(String name) - returnerer stoppeklokken tilknyttet strengen navnet name.
  • Collection<StopWatch> getAllWatches() - returnerer alle stoppeklokkene.
  • Collection<StopWatch> getStartedWatches() - returnerer alle stoppeklokkene som er startet.
  • Collection<StopWatch> getStoppedWatches() - returnerer alle stoppeklokkene som er stoppet.

Merk: Det er viktig at de metodene som returnerer en samling av stoppeklokker returnerer nye samlinger. De som får en samling må kunne endre på den (f.eks. fjerne elementer) uten at dette forstyrrer StopWatchManager eller andre som har fått samlinger tidligere.

JExercise-testkode for denne oppgaven finner du her: objectstructures/StopWatchManagerTest.javaJextest-koden finner du her: objectstructures/StopWatchManager.jextest.

...