Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

Oppgaven er en innkapslet og litt utvidet variant av Account-oppgaven under temaet Tilstand og oppførsel, og stiller bl.a. større krav til validering.

Et Account-objekt inneholder data om beløpet som står på kontoen og rentefoten (prosentpoeng).   

Begge verdiene skal oppgis og settes når objektet opprettes og ingen av verdiene kan være negative. 

Account-klassen har metoder for å sette inn og ta ut beløp, og legge til påløpte renter, i tillegg til en konstruktør for å initialisere en ny konto. Alle disse skal utløse unntak av typen IllegalArgumentException, dersom et argument ikke tilfredstiller kravene som angis.

  • Account(double, double) - Konstruktøren skal ta inn startbeløpet og rentefoten (prosentpoeng). Ingen av disse kan være negative.
  • double getBalance() - Returnerer beløpet som står på kontoen.
  • double getInterestRate() - Returnerer renten på kontoen.
  • void setInterestRate(double) - Denne metoden tar inn en ikke-negativ verdi og setter renten til denne verdien.
  • void deposit(double) - Denne metoden tar inn et ikke-negativt beløp og øker konto-beløpet tilsvarende.
  • void withdraw(double) - Denne metoden tar inn et ikke-negativt beløp og minsker konto-beløpet tilsvarende. Dersom det nye konto-beløpet er negativt, så skal tilstanden ikke endre, og det skal utløses et unntak av typen IllegalStateException.

Leseliste

Gyldig tilstand
Excerpt Include
Gyldig tilstand
nopaneltrue
Gyldig tilstand
Innkapsling
Excerpt Include
Innkapsling
nopaneltrue
Innkapsling
Koding av valideringsmetoder
Excerpt Include
Koding av valideringsmetoder
nopaneltrue
Koding av valideringsmetoder

Del 1 – Innkapsling og validering: teori

Ta utgangspunkt i koden fra Account-klassen og besvar følgende spørsmål:

  1. Forklar hvorfor metodene over kan sies å være en komplett innkapsling av tilstanden?
  2. Er denne klassen data-orientert eller tjeneste-orientert? Begrunn svaret!

Del 2 - Java-kode

Implementer endringene fra Account-klassen i den nye Account-klassen med oppførsel som er beskrevet over.

JExercise-testkode for denne oppgaven finner du her: encapsulation/AccountTest.java

Merk at din implementasjon må ligge i en pakke med samme navn som testkodens pakke. Pass derfor på at Account-klassen ligger i pakken "encapsulation".

Include Page
Bunntekst for JExercise-oppgaver
Bunntekst for JExercise-oppgaver