# 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. Skriv svar (stikkord/få, korte setninger) på spørsmål 1-4 (fra del 1 nedenfor) som kommentarer i koden din. __Oppgaver__: - [Digit-oppgave](../oving1/Digit.md) (Lett) - [UpOrDownCounter-oppgave](../oving1/UpOrDownCounter.md) (Lett) - [Location-oppgave](../oving1/Location.md) (Lett) - [StopWatch-oppgave](../oving1/Stopwatch.md) (Medium) - [Rectangle-oppgave](../oving1/Rectangle.md) (Vanskelig) - [LineEditor-oppgave med fri peker](LineEditor.md) (Vanskelig) Merk at spesifikasjonen for [LineEditor](../oving1/LineEditor.md) er litt utvidet for denne oppgaven. Se [LineEditor-oppgave med fri peker](LineEditor.md). ## 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. Testkoder for denne oppgaven finner du her: - [encapsulation/DigitTest.java](../../src/test/java/encapsulation/DigitTest.java) - [encapsulation/LineEditorTest.java](../../src/test/java/encapsulation/LineEditorTest.java) - [encapsulation/RectangleTest.java](../../src/test/java/encapsulation/RectangleTest.java) - [encapsulation/UpOrDownCounterTest.java](../../src/test/java/encapsulation/UpOrDownCounterTest.java) - [encapsulation/StopWatchTest.java](../../src/test/java/encapsulation/StopWatchTest.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?