From 2556a8f5ebe413a96cc3b2e1ce3940150c7fa46b Mon Sep 17 00:00:00 2001 From: Andreas Omholt Olsen Date: Fri, 9 Jan 2026 11:53:16 +0100 Subject: [PATCH] Add oving 1 --- README.md | 1 + oppgavetekster/oving0/README.md | 2 +- oppgavetekster/oving1/Account.md | 24 ++ oppgavetekster/oving1/Digit.md | 28 ++ oppgavetekster/oving1/LineEditor.md | 35 +++ oppgavetekster/oving1/Location.md | 24 ++ oppgavetekster/oving1/README.md | 57 ++++ oppgavetekster/oving1/Rectangle.md | 51 ++++ oppgavetekster/oving1/StopWatch.md | 47 +++ oppgavetekster/oving1/UpOrDownCounter.md | 13 + oppgavetekster/oving1/img/coordinate.png | Bin 0 -> 14378 bytes oppgavetekster/oving1/img/stopwatch.gif | Bin 0 -> 57773 bytes src/main/java/oving1/.gitkeep | 0 src/test/java/oving1/AccountTest.java | 55 ++++ src/test/java/oving1/DigitTest.java | 69 +++++ src/test/java/oving1/LineEditorTest.java | 137 +++++++++ src/test/java/oving1/LocationTest.java | 101 +++++++ src/test/java/oving1/RectangleExtraTest.java | 31 ++ src/test/java/oving1/RectangleTest.java | 271 ++++++++++++++++++ src/test/java/oving1/StopWatchTest.java | 153 ++++++++++ src/test/java/oving1/UpOrDownCounterTest.java | 57 ++++ 21 files changed, 1155 insertions(+), 1 deletion(-) create mode 100644 oppgavetekster/oving1/Account.md create mode 100644 oppgavetekster/oving1/Digit.md create mode 100644 oppgavetekster/oving1/LineEditor.md create mode 100644 oppgavetekster/oving1/Location.md create mode 100644 oppgavetekster/oving1/README.md create mode 100644 oppgavetekster/oving1/Rectangle.md create mode 100644 oppgavetekster/oving1/StopWatch.md create mode 100644 oppgavetekster/oving1/UpOrDownCounter.md create mode 100644 oppgavetekster/oving1/img/coordinate.png create mode 100644 oppgavetekster/oving1/img/stopwatch.gif create mode 100644 src/main/java/oving1/.gitkeep create mode 100644 src/test/java/oving1/AccountTest.java create mode 100644 src/test/java/oving1/DigitTest.java create mode 100644 src/test/java/oving1/LineEditorTest.java create mode 100644 src/test/java/oving1/LocationTest.java create mode 100644 src/test/java/oving1/RectangleExtraTest.java create mode 100644 src/test/java/oving1/RectangleTest.java create mode 100644 src/test/java/oving1/StopWatchTest.java create mode 100644 src/test/java/oving1/UpOrDownCounterTest.java diff --git a/README.md b/README.md index c9af80a..4cce06a 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,4 @@ Denne mappen inneholder øvingstekster for TDT4100 - Objektorientert programmeri | Øving | Tema | | -------------------------------------------- | ----------------------------------------- | | [Øving 0](./oppgavetekster/oving0/README.md) | Introduksjon og oppsett av Java | +| [Øving 1](./oppgavetekster/oving1/README.md) | Java-syntaks og objektorientert tankegang | diff --git a/oppgavetekster/oving0/README.md b/oppgavetekster/oving0/README.md index e96af31..1074332 100644 --- a/oppgavetekster/oving0/README.md +++ b/oppgavetekster/oving0/README.md @@ -18,7 +18,7 @@ For å kunne programmere i Java må du installere Java Development Kit (JDK). Vi ### Del 2: Sette opp øvingsprosjektet -For å kunne gjøre øvingene i TDT4100 må du sette opp et prosjekt i VS Code. Dette gjør du ved å følge instruksjonene på [denne siden](https://www.ntnu.no/wiki/x/Ggb6DQ). Husk å følge instruksjonene for ditt operativsystem. **På grunn av samme feil som nevnt i forrige del vil også denne siden være litt utdatert. Dere vil ikke klone fra "", men fra [https://git.ntnu.no/tdt4100/tdt4100-ovinger-25](https://git.ntnu.no/tdt4100/tdt4100-ovinger-25).** +For å kunne gjøre øvingene i TDT4100 må du sette opp et prosjekt i VS Code. Dette gjør du ved å følge instruksjonene på [denne siden](https://www.ntnu.no/wiki/x/Ggb6DQ). Husk å følge instruksjonene for ditt operativsystem. **På grunn av samme feil som nevnt i forrige del vil også denne siden være litt utdatert. Dere vil ikke klone fra "", men fra [https://git.ntnu.no/tdt4100/tdt4100_ovinger-26](https://git.ntnu.no/tdt4100/tdt4100_ovinger-26).** ### Del 3: Hello world diff --git a/oppgavetekster/oving1/Account.md b/oppgavetekster/oving1/Account.md new file mode 100644 index 0000000..4672cd9 --- /dev/null +++ b/oppgavetekster/oving1/Account.md @@ -0,0 +1,24 @@ +# Tilstand og oppførsel – Account + +Oppgaven handler om en `Account`-klasse, som håndterer data i en bankkonto. Tilstanden i `Account`-objekter er som følger: + +- `balance` - et desimaltall som angir beløpet som er på kontoen +- `interestRate` - et desimaltall som angir rentefot som prosentpoeng. + +Begge verdiene skal være satt til `0.0` når klassen opprettes. + +`Account`-klassen har fem metoder, med følgende oppførsel: + +- `deposit(double)` - øker konto-beløpet med den angitte argument-verdien (et desimaltall), men kun dersom det er positivt. Dersom det er negativt skal ingen endring skje. +- `addInterest()` - beregner rente og legger det til konto-beløpet +- `getBalance()` - returnerer beløpet som er på kontoen. +- `getInterestRate()` - returnerer rentefoten +- `setInterestRate(double)` - oppdaterer renten til å være den nye verdien + +## Java-kode + +Skriv Java-kode for `Account`-klassen med oppførsel som er beskrevet over. + +Lag en passende `toString()`-metode og en `main`-metode, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme start-tilstand og sekvens av kall) + +Testkode for denne oppgaven finner du her: [src/test/java/oving1/AccountTest.java](../../src/test/java/oving1/AccountTest.java). diff --git a/oppgavetekster/oving1/Digit.md b/oppgavetekster/oving1/Digit.md new file mode 100644 index 0000000..65bdd84 --- /dev/null +++ b/oppgavetekster/oving1/Digit.md @@ -0,0 +1,28 @@ +# Tilstand og oppførsel – Digit + +Oppgaven handler om en `Digit`-klasse, som representerer ett siffer i et gitt tallsystem. + +Tilstanden i `Digit`-objekter er todelt: + +- en `int` som angir tallsystemet, f.eks. 10 for titallssystemet, som oppgis i konstruktøren. Denne verdien vil ikke bli satt over 36. +- en `int`-verdi, som representerer siffer-verdien i det angitt tallsystem og må være fra og med 0 til (men ikke med) tallsystem-verdien + +Konstruktøren tar inn en `int`, som initialiserer tallsystem-verdien, mens siffer-verdien settes til 0. + +`Digit`-tilstanden leses og oppdateres med følgende metoder: + +- `int getValue()` - returnerer siffer-verdien +- `boolean increment()` - øker siffer-verdien med én. Dersom den da når tallsystem-verdien, så (re)settes den til 0 og metoden returnerer `true`, ellers returnerer den `false`. +- `int getBase()` - returnerer tallsystemet. + +## Java-kode + +Skriv Java-kode for `Digit`-klassen med oppførsel som er beskrevet over. Lag også en `toString()`-metode som returnerer siffer-verdien som en `String`, hvor sifrene 0-9 etterfølges av A-Z. F.eks. skal siffer-verdien 10 i sekstentallssystemet gi "A" som returverdi. + +Lag en `main`-metode, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme sekvens av kall). + +Testkode for denne oppgaven finner du her: [src/test/java/oving1/DigitTest.java](../../src/test/java/oving1/DigitTest.java). + +## Ekstraoppgave + +La hovedprogrammet opprette tre `Digit`-objekter, som fungerer som sifre i et tre-sifret tall. Lag en løkke som teller fra 0 til høyest mulig verdi som kan representeres i tallsystemet. Legg så til 1 så verdien av det tre-sifrede tallet igjen blir 0. Velg selv hvilket tallsystem du vil bruke. diff --git a/oppgavetekster/oving1/LineEditor.md b/oppgavetekster/oving1/LineEditor.md new file mode 100644 index 0000000..13ee18c --- /dev/null +++ b/oppgavetekster/oving1/LineEditor.md @@ -0,0 +1,35 @@ +# Tilstand og oppførsel – LineEditor + +Oppgaven handler om en `LineEditor`-klasse, som håndterer data for redigering av en linje med tekst (altså tekst uten linjeskift). + +`LineEditor`-klassen holder rede på en `String`-verdi og en tekstinnsettingsposisjon og har metoder for å redigere teksten. Tekstinnsettingsposisjonen er et heltall som angir hvor endringer skjer, tilsvarende en (blinkende) cursor som står mellom tegn. Verdien `0` tilsvarer foran første tegn, og høyeste mulige verdi er lengden på teksten, som tilsvarer at cursoren står bak siste tegn. Tilstanden er altså som følger: + +- `text` (en `String`-verdi) - teksten +- `insertionIndex` - heltall som angir hvor i teksten redigeringer vil skje + +Klassen har metoder med følgende oppførsel: + +- `void left()` - flytter tekstinnsettingsposisjonen ett tegn til venstre (tilsvarende bruk av venstre piltast) +- `void right()` - flytter tekstinnsettingsposisjonen ett tegn til høyre (tilsvarende bruk av høyre piltast) +- `void insertString(String s)` - skyter teksten angitt av argumentet `s` inn i teksten på tekstinnsettingsposisjonen og forskyver tekstinnsettingsposisjonen mot høyre tilsvarende +- `void deleteLeft()` - fjerner tegnet til venstre for tekstinnsettingsposisjonen +- `void deleteRight()` - fjerner tegnet til høyre for tekstinnsettingsposisjonen +- `String getText()` - Returnerer teksten +- `void setText(String)` - oppdaterer teksten til å være den nye teksten +- `int getInsertionIndex` - returnerer hvor i teksten redigeringer nå skjer +- `void setInsertionIndex(int)` - oppdaterer hvor i teksten redigeringer skal skje + +## Java-kode + +Skriv Java-kode for `LineEditor`-klassen med oppførsel som beskrevet over. + +Lag en `toString()`-metode som viser teksten med tegnet `'|'` skutt inn på tekstinnsettingsposisjonen. Lag så en `main`-metode, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme start-tilstand og sekvens av kall). + +Testkode for oppgaven finner du her: [src/test/java/oving1/LineEditorTest.java](../../src/test/java/oving1/LineEditorTest.java). + +## Ekstraoppgave - frivillige utvidelser + +- Legg til metoden `void insert(Object o)`, som skyter inn en tekstlig representasjon av objektet `o` som gis som argument. +- Legg til metoden `void left(int n)`, som flytter tekstinnsettingsposisjonen `n` tegn til venstre, og skriv om `left()` til å bruke denne. Hva bør skje dersom tekstinnsettingsposisjonen er mindre enn `n`? +- Legg til metoden `right(int n)`, som flytter tekstinnsettingsposisjonen `n` tegn til høyre, og skriv om `right()` til å bruke denne. Hva bør skje dersom det er færre enn `n` tegn til høyre for tekstinnsettingsposisjonen? +- Utvid tilstanden og legg til metoder for å håndtere markering av region, tilsvarende bruk av shift og piltaster i en vanlig teksteditor. Husk at også de eksisterende metodene må endres til å håndtere dette riktig. diff --git a/oppgavetekster/oving1/Location.md b/oppgavetekster/oving1/Location.md new file mode 100644 index 0000000..1ebee5c --- /dev/null +++ b/oppgavetekster/oving1/Location.md @@ -0,0 +1,24 @@ +# Tilstand og oppførsel – Location + +Oppgaven handler om en `Location`-klasse, som holder rede på `(x,y)`-posisjonen til en figur som beveger seg i et rutenett. + +`Location`-klassen har følgende metoder: + +- `up()` - beveger figuren en rute opp +- `down()` - beveger figuren en rute ned +- `left()` - beveger figuren en rute til venstre +- `right()` - beveger figuren en rute til høyre +- `getX()` - returnerer x-posisjonen til figuren +- `getY()` - returnerer y-posisjonen til figuren + +Merk at konvensjonen innen datagrafikk og rutenettbaserte spill er at `x` øker mot høyre (som i matte) og `y` nedover (altså motsatt av i matte). + +![Koordinatsystem](./img/coordinate.png) + +## Java-kode + +Skriv Java-kode for `Location`-klassen med oppførsel som beskrevet over. + +Lag en passende `toString()`-metode og en `main`-metode, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme start-tilstand og sekvens av kall). + +Testkode for oppgaven finner du her: [src/test/java/oving1/LocationTest.java](../../src/test/java/oving1/LocationTest.java). diff --git a/oppgavetekster/oving1/README.md b/oppgavetekster/oving1/README.md new file mode 100644 index 0000000..5d45df8 --- /dev/null +++ b/oppgavetekster/oving1/README.md @@ -0,0 +1,57 @@ +# Øving 1: Objekter og klasser, tilstand og oppførsel + +## Øvingsmål + +- Bli kjent med Java-syntaks og bruk av VS Code +- Lære (enkel) objektorientert tankegang +- Lære å lage enkle Java-klasser og -programmer + +## Øvingskrav + +- Kunne tegne enkle tilstandsdiagrammer +- Kunne deklarere klasser, med data og kode, iht. oppgavespesifikasjon +- Kunne skrive main-metoder for å teste objekter +- Kunne bruke standardtyper og -metoder (e.g. `toString()`-metoden) + +## NB: Viktig beskjed + +For å få testene og eventuell kode til øvingene lokalt brukes systemet git. Det er flere måter å hente nye øvinger: + +- I VS Code kan du klikke på Source Control (Venstresiden av programmet) -> Tre prikker øverst -> Pull for å hente den nye øvingen ved hjelp av dette. +- Du kan også bruke terminalen til å skrive `git pull` i mappen til øvingen for å hente den nye øvingen. + +## Dette må du gjøre + +Oppgavene for denne øvingen skal lagres i [`src/main/java/oving1`](../../src/main/java/oving1). Test-filene som kjøres for å teste koden ligger i [`src/test/java/oving1`](../../src/test/java/oving1). + +Hvis du ikke allerede har gjort det, må du installere VS Code med det forhåndskonfigurerte oppsettet for TDT4100. Se [denne](https://www.ntnu.no/wiki/display/tdt4100/VS+Code) wikisiden for en guide. Dersom du opplever problemer med oppsett/installasjon send oss gjerne en melding på Teams i "Teknisk Hjelp" kanalen, still et spørsmål på Piazza eller spør din læringsassistent! + +### Del 1 - Tilstandsdiagram + +For én av oppgavene du gjør i del 2: Tegn et [objekttilstandsdiagram](https://www.ntnu.no/wiki/x/gSfuAw) for en tenkt bruk av klassen. Velg selv en passende start-tilstand og en sekvens av kall. Lag dette diagrammet før du begynner med koden. + +### Del 2 - Java-kode + +Du skal velge og gjennomføre minst tre av de følgende oppgavene angående [Tilstand og oppførsel](https://www.ntnu.no/wiki/pages/viewpage.action?pageId=65937373). + +- [Account (Lett)](./Account.md) +- [Location (Lett)](./Location.md) +- [Digit (Lett)](./Digit.md) +- [UpOrDownCounter (Medium)](./UpOrDownCounter.md) +- [LineEditor (Vanskelig)](./LineEditor.md) +- [Rectangle (Vanskelig)](./Rectangle.md) +- [StopWatch (Vanskelig)](./StopWatch.md) + +Oppgavene er merket med en vanskelighetsgrad relativt til hverandre. Det er en god idé å begynne med de lettere oppgavene dersom du ikke er komfortabel med pensum så langt, men det er anbefalt å prøve seg på de vanskeligere oppgavene om du synes de første oppgavene er uproblematiske. Dersom du allerede føler deg trygg på punktene i øvingskravene kan du forsøke å gå rett på de vanskeligere oppgavene. Du er selvfølgelig velkommen til å løse flere oppgaver enn minstekravet, hvilket lurt gjøres med tanke på eksamen og et langt liv som programmerende. + +Før du setter i gang kan det vært lurt å lese wiki-siden om [Tilstand og oppførsel](https://www.ntnu.no/wiki/pages/viewpage.action?pageId=65937373) nøye, samt ta en titt på det tilhørende `Counter`-eksempelet. Forelesningene og tilhørende øvingsforelesning er selvsagt også lure å få med seg + +Det finnes masse ressurser på [wikien](https://www.ntnu.no/wiki/display/tdt4100/Faginnhold) om hvordan ulike metoder skal fungere, f.eks `toString()`-metoden og ulike metoder for teksthåndtering. Naviger deg litt rundt om du lurer på noe. + +## Hjelp/Mistanke om bugs + +Ved spørsmål eller behov for hjelp konsulter studassen din i saltiden hans / hennes. Du kan også oppsøke andre studasser på sal eller legge ut et innlegg på [Piazza](https://piazza.com/ntnu.no/spring2025/tdt4100). + +## Godkjenning + +Last opp kildekode på Blackboard innen den angitte innleveringsfristen. Innlevert kode skal demonstreres for læringsassistent innen én uke etter innleveringsfrist. Se Blackboard-sidene for mer informasjon rundt organisering av øvingsopplegget og det tilhørende øvingsreglementet. diff --git a/oppgavetekster/oving1/Rectangle.md b/oppgavetekster/oving1/Rectangle.md new file mode 100644 index 0000000..1793780 --- /dev/null +++ b/oppgavetekster/oving1/Rectangle.md @@ -0,0 +1,51 @@ +# Tilstand og oppførsel – Rectangle + +Oppgaven handler om en `Rectangle`-klasse, som håndterer et firkantet område i et koordinatsystem, med sider parallelle med koordinataksene. + +Tilstanden i `Rectangle`-objekter er ikke spesifisert eksplisitt, men må velges slik at metodene nedenfor kan implementerers. Merk at alle metodene jobber med heltallsstørrelser. + +`Rectangle`-klassen har metoder for å spørre om tilstanden og endre tilstanden. Spørremetodene dekker høyde og bredde og koordinatene til øverste venstre og nederste høyre hjørne og om rektanglet inneholder spesifikke punkt(er). Endringsmetodene dekker utviding ved å legge til punkter. + +Logikken til metodene må tilfredsstille følgende krav: + +- Når en utvider et `Rectangle`-objekt med en av `add`-metodene, så skal ikke rektanglet bli større enn nødvendig, dvs. at dersom man må utvide rektangelet skal det bare utvides slik at det akkurat inneholder det nye punktet. +- Et rektangel er tomt dersom enten bredden eller høyden er 0. + +Konstruktører: + +- `Rectangle(int x1, int y1, int x2, int y2)` - Lager et minst mulig rektangel som inneholder både punktene `(x1, y1)` og `(x2, y2)` + +Spørremetoder: + +- `int getMinX()` og `int getMinY()` - returnerer henholdsvis `x`- og `y`-koordinatene til punktet med lavest `(x,y)`-verdier som er inneholdt i dette rektanglet. +- `int getMaxX()` og `int getMaxY()` - returnerer henholdsvis `x`- og `y`-koordinatene til punktet med høyest `(x,y)`-verdier som er inneholdt i dette rektanglet. +- `int getWidth()` og `int getHeight()` - returnerer henholdsvis bredden og høyden til rektanglet. Begge skal returnere `0`, dersom dette rektanglet er tomt. +- `boolean isEmpty()` - returnerer `true` om rektanglet er tomt, dvs. om bredden og/eller høyden er `0`. +- `boolean contains(int x, int y)` - returnerer `true` om punktet `(x,y)` er inneholdt i dette rektanglet, og `false` ellers. +- `boolean contains(Rectangle rect)` - returnerer `true` om hele `rect`, dvs. alle hjørnepunktene i `rect`, er inneholdt i dette rektanglet, og false ellers. + +Endringsmetoder: + +- `boolean add(int x, int y)` - utvider (om nødvendig) dette rektanglet slik at det (akkurat) inneholder punktet `(x,y)`. Returnerer `true` om dette rektanglet faktisk ble endret, ellers `false`. +- `boolean add(Rectangle rect)` - utvider (om nødvendig) dette rektanglet slik at det (akkurat) inneholder hele `rect`-argumentet. Returnerer `true` om dette rektanglet faktisk ble endret, ellers `false`. Dersom `rect` er tomt, så skal dette rektanglet ikke endres. + +Andre metoder: + +- `Rectangle union(Rectangle rect)` - returnerer et nytt `Rectangle`-objekt som tilsvarer kombisjonen av dette rektanglet og `rect`-argumentet. Alle punktene som finnes i ett av rektanglene skal altså være inneholdt i rektanglet som returneres. + +## Java-kode + +Skriv Java-kode for `Rectangle`-klassen med oppførsel som er beskrevet over. + +Lag en passende `toString()`-metode og et hovedprogram, slik at du kan sjekke at oppførselen stemmer med tilstandsdiagrammet (bruk samme sekvens av kall). + +Testkode for denne oppgaven finner du her: [src/test/java/oving1/RectangleTest.java](../../src/test/java/oving1/RectangleTest.java). + +## Ekstraoppgave + +Implementer følgende metoder: + +- `Rectangle intersection(Rectangle rect)` - returnerer et nytt `Rectangle`-objekt som tilsvarer overlappet mellom dette rektanglet og `rect`-argumentet. Alle punktene som finnes i begge rektanglene skal altså være inneholdt i rektanglet som returneres. Dersom rektanglene ikke overlapper skal `null` returneres. +- `boolean intersects(Rectangle rect)` - returnerer `true` om dette rektanglet og `rect`-argumentet overlapper, dvs. om det finnes ett eller flere punkter som er inneholdt i begge disse rektanglene. + +Testkode for ekstraoppgaven finner du her: [src/test/java/oving1/RectangleExtraTest.java](../../src/test/java/oving1/RectangleExtraTest.java). diff --git a/oppgavetekster/oving1/StopWatch.md b/oppgavetekster/oving1/StopWatch.md new file mode 100644 index 0000000..fbaa10e --- /dev/null +++ b/oppgavetekster/oving1/StopWatch.md @@ -0,0 +1,47 @@ +# Tilstand og oppførsel – StopWatch + +Oppgaven handler om en `StopWatch`-klasse, som implementerer en stoppeklokke med funksjoner for å starte, ta rundetider og stoppe. + +Klassen skal implementere logikken ofte funnet på stoppeklokker på smarttelefoner. + +![StopWatch](./img/stopwatch.gif) + +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. + +> Spesielt i denne oppgaven kan det være fordelaktig å lese testene for å forstå hva som forventes av koden. Dette er en god øvelse for videre øvinger og eksamen. + +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. + +`StopWatch`-klassen må ha metoder for å spørre om tilstanden og metoder for å endre tilstanden. + +Klassen skal ha følgende spørremetoder: + +- `boolean isStarted()` - returnerer `true` om klokken har blitt startet eller `false` om den ikke har blitt startet. +- `boolean isStopped()` - returnerer `true` om klokken har blitt stoppet eller `false` om den ikke har blitt stoppet. Merk at her snakker vi om at klokken har blitt stoppet minst én gang, ikke om klokken går eller ikke. +- `int getTicks()` - returnerer det totale antall tikk (millisekunder) som har gått i levetiden til klokken uavhengig om klokken har vært startet eller stoppet. +- `int getTime()` - returnerer antall tikk som har gått under tidtakningen. Hvis tidtakningen ikke har startet returner `-1`. Merk at hvis klokken er startet, men ikke stoppet, skal metoden returnere antall tikk som har gått siden klokken ble startet til nå. Hvis klokken er stoppet skal metoden returnere antall tikk som har gått fra klokken ble startet til klokken ble stoppet. +- `int getLapTime()` - returnerer antall tikk som har gått under nåværende rundetid til nå. Hvis tidtakningen ikke har startet returner `-1`. +- `int getLastLapTime()` - returnerer lengden på forrige avsluttede rundetid. Hvis det ikke er noen tidligere rundetider returner `-1`. + +Klassen skal ha følgende metoder for å endre tilstanden: + +- `void tick(int ticks)` - forteller klokken at `ticks` antall tikk har gått. +- `void start()` - starter klokken. +- `void lap()` - avslutter nåværende rundetid og starter en ny. +- `void stop()` - stopper klokken. + +## Java-kode + +Skriv Java-kode for `StopWatch`-klassen med oppførsel som er beskrevet over. + +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). + +Testkode for denne oppgaven finner du her: [src/test/java/oving1/StopWatchTest.java](../../src/test/java/oving1/StopWatchTest.java). diff --git a/oppgavetekster/oving1/UpOrDownCounter.md b/oppgavetekster/oving1/UpOrDownCounter.md new file mode 100644 index 0000000..67a71a0 --- /dev/null +++ b/oppgavetekster/oving1/UpOrDownCounter.md @@ -0,0 +1,13 @@ +# Tilstand og oppførsel – UpOrDownCounter + +I denne oppgaven skal du programmere en teller, ikke ulik den som er beskrevet i [Tilstand og oppførsel](https://www.ntnu.no/wiki/pages/viewpage.action?pageId=65937373) og kodet i [Tilstand og oppførsel - Java-kode for Counter-eksempel](https://www.ntnu.no/wiki/pages/viewpage.action?pageId=65937823), som også skal håndtere tilfellet hvor slutt-verdien er lavere enn start-verdien ved å telle nedover. + +## Java-kode + +`UpOrDownCounter`-klassen skal altså ha de samme konstruktørene/metodene: + +- `UpOrDownCounter(int start, int end)` - initialiserer objektet med angitte start- og slutt-verdier, hvor altså slutt kan være større eller mindre enn start, slik at telleren teller henholdsvis opp eller ned. Lik start og slutt-verdi skal utløse unntak av typen `IllegalArgumentException` (se [Koding av valideringsmetoder](https://www.ntnu.no/wiki/display/tdt4100/Koding+av+valideringsmetoder)). +- `int getCounter()` - returnerer telleren +- `boolean count()` - beveger telleren i retning av slutt-verdien og returnerer true så lenge den ikke har nådd den, altså om telleren har mer igjen, og false ellers. + +Testkode for oppgaven finner du her: [src/test/java/oving1/UpOrDownCounterTest.java](../../src/test/java/oving1/UpOrDownCounterTest.java) diff --git a/oppgavetekster/oving1/img/coordinate.png b/oppgavetekster/oving1/img/coordinate.png new file mode 100644 index 0000000000000000000000000000000000000000..cb750855cf48899617e231b78fb7a6786c86bbd0 GIT binary patch literal 14378 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 J);T3K0RV=PvC#kk literal 0 HcmV?d00001 diff --git a/oppgavetekster/oving1/img/stopwatch.gif b/oppgavetekster/oving1/img/stopwatch.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5c39dda787741c1f953d15e4779e24a5edd994d GIT binary patch literal 57773 zcmZ?wbhEHbRA7!^x@ymGG1vd|jg3EleEv8)^6J%nucoHGetJp4KmE(1s9#@SzU~cs zJ1HVyVdvLJN4R9PAKX6r?7`_jFE4&xo^tE@!5_<`-z+WO9qBG&;{R)V-v4vu?{~L; zKDXe*nvy?{x6L`c;?vtFulnQO9G~{@)1A+U`kuA~A3VMJ|L;%#uC;$(pZRBh@sR|t z3m13&zccA}YqCvU<(qjq?>5z*I=B61dGP;>)ql=4{r_OPK=D7fpKD04vtxj(k)8oFBLf42;(zW4-v9-d#FE4a-vAr?ih{)C z?9>v4q}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i=|m z 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

TH@h%CccG>HZys7V^)lEcyzRVYB6s2S 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 -5; i--) { + boolean result = counter.count(); + assertEquals(i, counter.getCounter(), "Wrong counter value"); + assertTrue(result, "#count() should return true while within legal values"); + } + + boolean result = counter.count(); + assertEquals(-5, counter.getCounter(), "Wrong counter value"); + assertFalse(result, "#count() should return false when we cannot count further"); + + result = counter.count(); + assertEquals(-5, counter.getCounter(), + "Counter value should not change when counting beyond legal values"); + assertFalse(result, "#count() should return false when we cannot count further"); + } +}