Versions Compared

Key

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

...

Del 2 - BSU extends SavingsAccount

Anta at en ønsker å unngå at instanser av CardContainerImpl (eller av en av subklassene) inneholder for mange kort. Legg til et privat maxCardCount-felt i CardContainerImpl og en konstruktør som initialiserer feltet. Legg så til evt. endre kode i CardContainerImpl som sikrer at antall kort ikke kan overstige dette tallet og at subklassene ikke kan omgå denne valideringen. Subklassene skal imidlertid kunne sette maks-antallet som følger: CardDeck skal sette makstallet til 52 og CardHand skal ta inn maks-antallet i sin konstruktør.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 samtidig som støtte for den spesielle oppførselen til kontoer av typen BSU er tilfredstilt. 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). Årsskifte markeres ved at metoden accrueInterest() kalles. Følgelig må denne metoden, i tillegg til flere andre (som ikke nevnes med navn siden det er den av oppgaven å finne ut hvilke:-)), overskrives i BSU-subklassen. I tillegg til dette stilles følgende eksplisitte krav til klassen:

  • BSU(String, double, double, double) - konstruktør som tar inn navn på kontoinnehaver, åpningsbalanse og rentefoten på kontoen i tillegg til et desimaltall som angir hvor mye det er tillatt å sette inn på kontoen per år og setter klassens felter i henhold til disse.

...

  •  

  • double getTaxDeduction() - returnerer skattefradrag for inneværende år. Dette vil være 20% av innskutt(e) beløp siste år.

Implementasjonshint: legg til felter som holder styr på hvor mye balanse som er tilgjengelig (availableBalance) og innskuddsgrensen (depositLimit), sjekk at metodekall som deposit / withdraw tilfredsstiller disse og invoker superklassens metoder ved koden super.deposit(amount) og super.withdraw(amount), henholdsvis.

Del 3 - ForeldreSpar extends SavingsAccount

bla bla blaEn anne 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 for den spesielle oppførselen til kontoer av typen ForeldreSpar er tilfredstilt. Denne klassen skal holde styr på at kun det lovlige antallet uttak gjøres i løpet av et år. Årsskifte markeres igjen ved at metoden accrueInterest() kalles. Følgelig må denne metoden, i tillegg til flere andre (som ikke nevnes med navn siden det er den av oppgaven å finne ut hvilke:-)), overskrives i ForeldreSpar-subklassen. I tillegg til dette stilles følgende eksplisitte krav til klassen:

  • ForeldreSpar(String, double, double, int) - konstruktør som tar inn navn på kontoinnehaver, åpningsbalanse og rentefoten på kontoen i tillegg til et heltall som angir antall lovlige uttak per år og setter klassens felter i henhold til disse.

  •  

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

Implementasjonshint: legg til et felter som holder styr på hvor mange uttak som er gjort siste år (withdrawCount) og antall lovlige uttak (withdrawLimit), sjekk at metodekall som withdraw tilfredsstiller disse og invoker superklassens metoder ved koden super.withdraw(amount)Merk at målet er å la subklassen gjenbruke mest mulig kode i superklassen.

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