|
SavingsAccount |
|
1 // joi/7/bank/SavingsAccount.java
2 //
3 //
4 // Copyright 2003 Bill Campbell and Ethan Bolker
5
6 /**
7 * A SavingsAccount is a BankAccount that bears interest.
8 * A fee is charged for too many transactions in a month.
9 *
10 * @see BankAccount
11 *
12 * @version 7
13 */
14
15 public class SavingsAccount extends BankAccount
16 {
17 private int transactionsThisMonth;
18
19 /**
20 * Override getTransactionFee() to return a non-zero fee
21 * after the appropriate number of free monthly transactions.
22 *
23 * @return the fee for current transaction.
24 */
25
26 protected int getTransactionFee()
27 {
28 if (transactionsThisMonth >
29 getIssuingBank().getMaxFreeTransactions()) {
30 return getIssuingBank().getTransactionFee();
31 }
32 else {
33 return 0;
34 }
35 }
36
37 /**
38 * Increment count of transactions, for this account for
39 * this Month and in total and for the issuing Bank, by one.
40 *
41 * @exception InsufficientFundsException when appropriate.
42 */
43
44 public void countTransaction()
45 throws InsufficientFundsException
46 {
47 transactionsThisMonth++;
48 super.countTransaction();
49 }
50
51 /**
52 * Constructor, accepting an initial balance.
53 * @param initialBalance the opening balance.
54 *
55 * @param issuingBank the bank that issued this account.
56 *
57 * @exception InsufficientFundsException when appropriate.
58 */
59
60 public SavingsAccount( int initialBalance, Bank issuingBank )
61 throws InsufficientFundsException
62 {
63 super( initialBalance, issuingBank);
64 transactionsThisMonth = 1;
65 }
66
67 /**
68 * A SavingsAccount earns interest each month.
69 *
70 * @exception InsufficientFundsException when appropriate.
71 */
72
73 public void newMonth()
74 throws InsufficientFundsException
75 {
76 double monthlyRate = getIssuingBank().getInterestRate()/12;
77 incrementBalance( (int)(monthlyRate * getBalance()));
78 transactionsThisMonth = 0;
79 }
80 }
81
|
SavingsAccount |
|