Versions Compared

Key

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

Denne oppgaven handler om å lage en felles abstrakt superklasse Account for CreditAccount, DebitAccount- og SavingsAccount-klassene.

Denne oppgaven bygger videre på Account-oppgavene under Gyldig tilstand, Innkapsling og Tilstand og oppførseler en annen variant SavingsAccount-oppgaven, med fokus på bruk av abstrakte klasser og arv.

Del 1 -

...

Abstrakt klasse Account

En bank består av mange ulike type kontoer: sparekontoer, brukskontoer, depositumskontoer, støttekontoer etc. Felles for alle kontoer er den abstrakt Account-grensesnittetklassen, som er definert under:

Code Block
package inheritance;
 
public interface Account {

	public void deposit(double amount);

	public void withdraw(double amount);

	public double getBalance();
}

en utvidelse grensesnittet fra SavingsAccount-oppgaven

Account-klassen har tre metoderVi skal i denne oppgaven fokusere på sparekontoer og du skal nå lage en SavingsAccount-superklasse, som implementerer Account-grensesnittet. Funksjonaliteten som hver av metodene definert i grensesnittet over skal støtte er:

  • void deposit(double) - øker kontobalansen med innskutt beløp. Merk at det innskutte beløpet må være positivt. Ved ulovlig innskudd skal en IllegalArgumentException utløses.
  • abstract void withdraw(double) - minsker kontobalansen med beløpet som blir tatt ut. Merk at uttaksbeløpet må være positivt, ellers skal et unntak av typen IllegalArgumentException utløses. Dersom det ikke er dekning på kontoen (en SavingsAccount kan ikke ha negativ balanse) skal et unntak av typen IllegalStateException utløsesreglene for for uttak er ulik for klassene som implementerer Account.
  • double getbalance() - returnerer kontobalansen.

I tillegg til å støtte Account-grensesnittet over, som er felles for alle kontoer, skal sparekontoer ha en rentefot og en metode som forrenter kontoen. Denne kalles av bankene for hver sparekonto på slutten av året slik at alle dets kunder opptjener renter (ikke tenk på at banker egentlig holder styr på hvor stor balansen har vært gjennom hele året eller forrenter kontoen kontinuerlig - her skal vi bare anta at innestående kontobalanse ved årsslutt forrentes i sin helhet) - derfor heter metoden endYearUpdate(). I tillegg skal SavingsAccount-klassen ha en konstruktør som tvinger alle objekter av denne typen til å bli instansiert med en rentefot. Dette er oppsummert her:

...

SavingsAccount(double) - konstruktør som tar inn rentefoten på kontoen (et desimaltall, f.eks. 0.05 tilsvarer en rente på 5%). Åpningsbalansen skal være 0.

...

må Account ha en tilstand balance for saldo på kontoen. Saldoen skal settes til 0 i konstruktøren.

Vær oppmerksom på at du i Del 2 og 3 skal lage subklasser av SavingsAccount Account og at du ved å bruke rett innkapsling (hintprotected-modifikatoren) kan la subklassene nyttiggjøre seg superklassen i størst mulig grad.

...