Excerpt |
---|
Denne oppgaven handler om å lage en felles abstrakt superklasse Account AbstractAccount for CreditAccount, DebitAccount- og SavingsAccount-klassene. |
Denne oppgaven er en annen variant SavingsAccount-oppgaven, med fokus på bruk av abstrakte klasser og arv.
Del 1 - Abstrakt klasse
...
AbstractAccount
En bank består av mange ulike type kontoer: sparekontoer, brukskontoer, depositumskontoer, støttekontoer etc. Felles for alle kontoer er den abstrakt AccountAbstractAccount-klassen, som er en utvidelse grensesnittet fra SavingsAccount-oppgaven.
AccountAbstractAccount-klassen har tre metoder:
- 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.
- void withdraw(double) - Metoden kaller internalWithdraw(uttaksbeløp), som implementeres i hver subklasse. Hvis uttaksbeløpet er negativt skal metoden utløse en IllegalArgumentException.
- abstract void withdrawinternalWithdraw(double) - minsker minsker kontobalansen med beløpet som blir tatt ut. Merk at reglene for for uttak er ulik for klassene som implementerer AccountAbstractAccount, 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 utløse en IllegalStateException.
- double getbalance() - returnerer kontobalansen.
...
Vær oppmerksom på at du i Del 2 skal lage subklasser av Account AbstractAccount og at du ved å bruke rett innkapsling (hint: protected-modifikatoren) kan la subklassene nyttiggjøre seg superklassen i størst mulig grad.
Del 2 - DebitAccount extends
...
AbstractAccount
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 AbstractAccount og sikre at saldoen aldri går lavere enn 0.
JExercise-testkode for oppgavene finner du her: inheritance/DebitAccountTest.java. Originalkoden (jextest) for testen finner du her: DebitAccountTestDebitAccount.jextest.
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 utløses en IllegalStateException IllegalArgumentException.
Konstruktøren CreditAccount(double) skal sette kredittlinjen.
JExercise-testkode for oppgavene finner du her: inheritance/CreditAccountTest.java. Originalkoden (jextest) for testen finner du her: CreditAccountTestCreditAccount.jextest.
Del 4 - SavingsAccount
extends Accountextends AbstractAccount
En SavingsAccount kan kun ha positiv saldo. I tillegg har kontoen uttaksbegrensinger. En SavingsAccount har x antall withdrawals. Dersom man ønsker å ta ut penger etter alle uttak er brukt opp, skal saldoen belastes med en fee. Både withdrawals og fee settes i konstruktøren SavingsAccount(int, double).
JExercise-testkode for oppgavene finner du her: inheritance/SavingsAccountTest.java. Originalkoden (jextest) for testen finner du her: SavingsAccountTestSavingsAccount.jextest.
Include Page | ||||
---|---|---|---|---|
|