Versions Compared

Key

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

...

  • 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 reglene for for uttak er ulik for klassene som implementerer Account, og må derfor implementeres i hver klasse. Hvis uttaksbeløpet er negativt skal metoden kaste en IllegalArgumentException, og hvis det ikke er mulig å ta ut det angitte beløpet skal metoden kaste en IllegalStateException.
  • double getbalance() - returnerer kontobalansen.

...

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

Del 2 - DebitAccount extends Account

En debetkonto er den enkleste formen for konto, hvor det eneste kravet er at saldoen til enhver tid må være større eller lik 0. DebitAccount skal implementere Account og sikre at saldoen aldri går lavere enn 0.

JExercise-testkode for oppgavene finner du her: 

...

.

...

Originalkoden (jextest) for testen finner du her: 

...



Del

...

3 -

...

CreditAccount extends

...

I tillegg til generelle sparekontoer finnes det en spesiell type sparekonto som heter BSU. Du skal nå lage en BSU-klasse som arver fra SavingsAccount-superklassen. Her er målet at du skal gjenbruke mest mulig av superklassen og samtidig støtte BSU-spesifikk oppførsel. En BSU-konto er, i tillegg til å være en sparekonto, spesiell i den forstand at det kun er lovlig å sette inn inntil et forhåndsbestemt beløp per år (kr 25 000 for 2014 fastsatt av den nye regjeringen) og at det kun er lovlig å ta ut av det beløpet som er satt inn siste år. M.a.o. vil en ved årsskifte få mulighet til å sette inn nye innskudd innenfor innskuddsgrensen, men en har ikke lenger mulighet til å ta ut hele balansen (innskudd fra tidligere år låses). Dessuten gir en BSU-konto 20% skattefradrag for innskudd beløp.

Du må selv avgjøre hvilke felt som må legges til før å støtte den beskrevne oppførsel. I tillegg stilles følgende krav til klassen:

...

BSU(double, double) - konstruktør som tar inn rentefoten på kontoen og et desimaltall som angir hvor mye det er tillatt å sette inn på kontoen per år. 

Account

En CreditAccount har i tillegg til balance en tilstand for creditLine, altså tilgjengelig kreditt på kontoen. Denne kredittlinjen tillater at kontoen kan overtrekkes (at saldoen er negativ) innenfor kredittlinjen. Klassen må ha tilgangsmetoder (getters and setters) for creditLine. Merk at kredittlinjen alltid må være større eller lik 0, hvis ikke skal det kastes en IllegalStateException.

Konstruktøren CreditAccount(double) skal sette kredittlinjen

...

.

JExercise-testkode for oppgavene finner du her: inheritance/BSUTest. java. Originalkoden (jextest) for testen finner du her: inheritance/BSUTest.jextest.

Del

3

4 -

ForeldreSpar

SavingsAccount extends

SavingsAccount

En annen spesiell type sparekonto, her kalt ForeldreSpar, har et begrenset antall lovlige uttak per år (ofte i bytte mot en høyere rente). Du skal nå lage en slik ForeldreSpar-klasse som arver fra SavingsAccount-superklassen. Her er igjen målet at du skal gjenbruke mest mulig av superklassen samtidig som støtte ForeldreSpar-spesifikk oppførselen. Denne klassen skal sikre at kun det lovlige antallet uttak gjøres i løpet av et år.

Du må selv avgjøre hvilke felt som må legges til før å støtte den beskrevne oppførsel. I tillegg stilles følgende krav til klassen:

  • ForeldreSpar(double, int) - konstruktør som tar inn rentefoten på kontoen og et heltall som angir antall lovlige uttak per år.

  • int getRemainingWithdrawals() - returnerer antall gjenstående uttak fra sparekontoen.

Account

En SavingsAccount kan kun ha positiv saldo. I tillegg har kontoen uttaksbegrensinger. En SavingsAccount har antall uttak. Dersom man ønsker å ta ut penger etter alle uttak er brukt opp, skal saldoen belastes med en avgiftBåde antall uttak og avgift settes i konstruktøren SavingsAccount(int, double).

JExercise-testkode for oppgavene finner du her:

 inheritance/ForeldreSparTest.java. Originalkoden

  Originalkoden (jextest) for testen finner du her:

 inheritance/ForeldreSpar.jextest.

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