2.3 KiB
Innkapsling og gyldig tilstand - Oppgave om innkapsling og validering av klasser
I denne oppgaven skal du velge tre oppgaver som du har gjort i øving 1 fra listen nedenfor, og innkapsle og validere disse klassene. Dersom du ikke har gjort tre oppgaver, bør du gjøre dette først. Løsningsforslag til øving 1 kommer til å befinne seg her etter siste demonstrasjonsfrist for øving 1.
Skriv svar (stikkord/få, korte setninger) på spørsmål 1-4 (fra del 1 nedenfor) som kommentarer i koden din.
Oppgaver:
- Digit-oppgave (Lett)
- UpOrDownCounter-oppgave (Lett)
- Location-oppgave (Lett)
- StopWatch-oppgave (Medium)
- LineEditor-oppgave med fri peker (Vanskelig)
Merk at spesifikasjonen for LineEditor er litt utvidet for denne oppgaven. Se LineEditor-oppgave med fri peker.
Del 1: Innkapsling og validering - Teori
Ta utgangspunkt i (koden for) den originale klassen og besvar følgende spørsmål:
- Hvordan skal private og public brukes for at denne klassen skal være korrekt innkapslet?
- Hva slags validering bør legges til for å sikre gyldig tilstand?
- Hvilke metoder må evt. legges til?
- Vil du karakterisere denne klassen som data-orientert eller tjeneste-orientert. Begrunn svaret!
Del 2: Java-kode
Implementer endringene foreslått i punktene 1-3 og prøv ut klassene. Husk å kopiere koden din fra mappen i øving 1 til src/main/java/oving2!
Testkoder for denne oppgaven finner du her:
- oving2/DigitTest.java.
- oving2/UpOrDownCounterTest.java.
- oving2/LocationTest.java.
- oving2/StopWatchTest.java.
- oving2/LineEditorTest.java.
Testkodene viser om du har innkapslet på samme måte som fagstaben har gjort. Din kode kan fungere selv om testene feiler, dersom du har valgt en løsere/strammere innkapsling iht. argumentasjonen i 1-3. Er du enig med hvordan fagstaben har gjort det?