You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 23 Next »

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 tilstandTilstanden til et objekt er verdien av alle attributtene. En viktig del av oppførselen til et objekt er å sikre at tilstanden til objektet alltid er gyldig, dvs. at alle attributtene har gyldige/konsistente verdier.
InnkapslingInnkapsling er en programmeringsteknikk som har som formål å hindre direkte tilgang til tilstanden til et objekt fra objekter av andre klasser.
Koding av valideringsmetoderEn valideringsmetode har som formål å sjekke om en eller flere verdier er gyldige, slik at dette kan sjekkes av f.eks. setter-metoder før tilsvarende attributter evt. settes.

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.

Del 3 - JavaFX

Kjør den tilhørende JavaFX-applikasjonen (kjør Account.fxml som FXML Application) og observer hva som skjer. Åpne AccountController.java og finn ut hvor Account-klassen din blir brukt, og kommenter hva som skjer med den. Det er ikke et krav at du forstår resten av koden i AccountController, du skal kun forklare hvordan klassen din blir brukt.

Hjelp til kjøring av JavaFX og generelt om øvinger finner du i Hjelp til øvinger.

 

Testkode for denne oppgaven finner du her: encapsulation/AccountTest.java

 

 

 

  • No labels