62 lines
2.9 KiB
Markdown
62 lines
2.9 KiB
Markdown
|
# Øving 4: Objektstrukturer
|
||
|
|
||
|
**Øvingsmål**
|
||
|
|
||
|
- Lære hva assosiasjoner er og hvordan dette brukes i OO
|
||
|
- Lære hvordan man sikrer konsistent oppførsel mellom assosierte objekter
|
||
|
|
||
|
**Øvingskrav**
|
||
|
|
||
|
- Kunne implementere klasser som har assosiasjoner til én eller flere andre klasser
|
||
|
- Kunne sikre at disse assosiasjon er konsistente i enkle objektstrukturer
|
||
|
- Kunne implementere metoder som oppretter, oppdaterer og fjerner slike assosiasjoner
|
||
|
|
||
|
## Dette må du gjøre
|
||
|
|
||
|
### Del 1: Programmering
|
||
|
|
||
|
I denne øvingen skal du velge og gjennomføre ENTEN både Partner- og Card del 2-oppgavene ELLER minst én av Twitter-, Stopwatch- og Person-oppgavene.
|
||
|
Merk at **noen av oppgavene i neste øving (øving 6), bygger videre på noen av oppgavene under**, disse er uthevet med **fet skrift**.
|
||
|
Det er ikke et krav at man gjør de uthevede oppgavene, men de gir flere oppgaver å velge mellom i øving 6.
|
||
|
|
||
|
**Gjør enten _begge_ disse:**
|
||
|
- [Partner](./Partner.md) (lett)
|
||
|
- **[Card del 2](./Card.md)** (lett)
|
||
|
|
||
|
**Eller _minst én_ av følgende oppgaver:**
|
||
|
- **[Twitter](./Twitter.md)** (medium, men lang)
|
||
|
- [Stopwatch](./Stopwatch.md) (medium)
|
||
|
- [Person](./Person.md) (medium/vanskelig)
|
||
|
|
||
|
Oppgavene for denne øvingen skal du lagre i `ovinger/src/main/java/objectstructures`. Test-filene ligger i `ovinger/src/test/java/objectstructures`.
|
||
|
|
||
|
Alle oppgavene ovenfor er høyst eksamensrelevante og det anbefales følgelig å ta en titt på alle sammen.
|
||
|
|
||
|
### Del 2: Klassediagram
|
||
|
|
||
|
- Lag et [klassediagram](https://www.ntnu.no/wiki/display/tdt4100/Klassediagrammer) for oppgaven(e) du velger.
|
||
|
|
||
|
Diagrammet kan for eksempel skrives på papir eller tegnes/lages i et valgfritt program. Du trenger ikke levere inn diagrammene, men de skal vises til studass under godkjenning av øvingen.
|
||
|
|
||
|
### Del 3: Testing
|
||
|
|
||
|
Skriv kode som tester oppførselen til `CoffeeCup`-klassen, dvs. at du skal teste om metodene i listen under har rett oppførsel og returnerer det de skal, i tillegg til at du skal teste konstruktørene. Det er ikke nødvendig å teste absolutt alle mulige tilfeller, men det kreves at du tester den grunnleggende funksjonaliteten.
|
||
|
|
||
|
* `getCapacity`
|
||
|
* `getCurrentVolume`
|
||
|
* `increaseCupSize`
|
||
|
* `drinkCoffee`
|
||
|
* `fillCoffee`
|
||
|
|
||
|
Du finner `CoffeeCup`-klassen under `ovinger/src/main/java/objectstructures`.
|
||
|
|
||
|
Her er det anbefalt å bruke [JUnit](https://www.ntnu.no/wiki/display/tdt4100/Enhetstesting+med+JUnit),
|
||
|
men det er lov å teste vha. main-metoden også.
|
||
|
|
||
|
### 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/).
|
||
|
|
||
|
### Godkjenning
|
||
|
|
||
|
Last opp kildekode på Blackboard innen den angitte innleveringsfristen. Innlevert kode skal demonstreres for en læringsassistent innen én uke etter innleveringsfrist. Se for øvrig Blackboard-sidene for informasjon rundt organisering av øvingsopplegget og det tilhørende øvingsreglementet.
|