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

Compare with Current View Page History

Version 1 Next »

Denne oppgaven handler om en StopWatchManager-klasse som inneholder flere StopWatch-objekter. Oppgaven bygger på klassen lagd i StopWatch-oppgaven fra "tilstand og oppførsel" og "innkapsling".

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 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.

StopWatchManager skal ha følgende endringsmetoder:

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

StopWatchManager skal ha følgende lesemetoder:

  • StopWatch getStopWatch(String name) - returnerer stoppeklokken tilknyttet strengen 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.


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


JExercise lar deg sjekke din egen kode vha. forhåndslagde JUnit-tester og JExercise-panelet

Bruk av JExercise:

  1. Sørg for at jexercise-standalone.jar er lagt til i ditt prosjekts Build Path. Dette må gjøres hver gang du oppretter et nytt prosjekt, og det er derfor lurt å gjenbruke samme prosjekt til alle oppgaver.
  2. JExercise-tillegget må være installert. Installer tillegget fra følgende oppdateringsadresse: http://folk.ntnu.no/hal/dev/updatesite.
  3. Åpne JExercise-panelet via Window -> Show View -> Other, og navigere deg fram til JExercise i vinduet som kommer opp, velge det og klikke OK.
  4. Klikke og dra oppgavens testklasse, <oppgavenavn>Test.java fra pakkeoversikten og slippe den i JExercise panelet. 
  5. Testene kan så kjøres ved å dobbeltklikke på testen som ønskes kjørt.

Ved trøbbel, se først om du finner løsningen i Løsninger på trøbbel med JExercise.

Unknown macro: {html}

Twitre gjerne om oppgaven når du er ferdig: <a href="https://twitter.com/share" class="twitter-share-button" data-hashtags="jexercise">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>


  • No labels