|
BankAccount |
|
1 // joi/4/bank/BankAccount.java
2 //
3 //
4 // Copyright 2003 Bill Campbell and Ethan Bolker
5
6 /**
7 * A BankAccount object has private fields to keep track
8 * of its current balance, the number of transactions
9 * performed and the Bank in which it is an account, and
10 * and public methods to access those fields appropriately.
11 *
12 * @see Bank
13 * @version 4
14 */
15
16 public class BankAccount
17 {
18 private int balance = 0; // Account balance (whole dollars)
19 private int transactionCount = 0; // Number of transactions performed.
20 private Bank issuingBank; // Bank issuing this account
21
22 /**
23 * Construct a BankAccount with the given initial balance and
24 * issuing Bank. Construction counts as this BankAccount's
25 * first transaction.
26 *
27 * @param initialBalance the opening balance.
28 * @param issuingBank the bank that issued this account.
29 */
30
31 public BankAccount( int initialBalance, Bank issuingBank )
32 {
33 this.issuingBank = issuingBank;
34 deposit( initialBalance );
35 }
36
37 /**
38 * Withdraw the given amount, decreasing this BankAccount's
39 * balance and the issuing Bank's balance.
40 * Counts as a transaction.
41 *
42 * @param amount the amount to be withdrawn
43 * @return amount withdrawn
44 */
45
46 public int withdraw( int amount )
47 {
48 incrementBalance( -amount );
49 countTransaction();
50 return amount ;
51 }
52
53 /**
54 * Deposit the given amount, increasing this BankAccount's
55 * balance and the issuing Bank's balance.
56 * Counts as a transaction.
57 *
58 * @param amount the amount to be deposited
59 * @return amount deposited
60 */
61
62 public int deposit(int amount)
63 {
64 incrementBalance( amount);
65 countTransaction();
66 return amount ;
67 }
68
69 /**
70 * Request for balance. Counts as a transaction.
71 *
72 * @return current account balance
73 */
74
75 public int requestBalance()
76 {
77 countTransaction();
78 return getBalance() ;
79 }
80
81 /**
82 * Get the current balance.
83 * Does NOT count as a transaction.
84 *
85 * @return current account balance
86 */
87
88 public int getBalance()
89 {
90 return balance;
91 }
92
93 /**
94 * Increment account balance by given amount.
95 * Also increment issuing Bank's balance.
96 * Does NOT count as a transaction.
97 *
98 * @param amount the amount increment.
99 */
100
101 public void incrementBalance( int amount )
102 {
103 balance += amount;
104 this.getIssuingBank().incrementBalance( amount );
105 }
106
107 /**
108 * Get the number of transactions performed by this
109 * account. Does NOT count as a transaction.
110 *
111 * @return number of transactions performed.
112 */
113
114 public int getTransactionCount()
115 {
116 return transactionCount;
117 }
118
119 /**
120 * Increment by 1 the count of transactions, for this account
121 * and for the issuing Bank.
122 * Does NOT count as a transaction.
123 */
124
125 public void countTransaction()
126 {
127 transactionCount++;
128 this.getIssuingBank().countTransaction();
129 }
130
131 /**
132 * Get the bank that issued this account.
133 * Does NOT count as a transaction.
134 *
135 * @return issuing bank.
136 */
137
138 public Bank getIssuingBank()
139 {
140 return issuingBank;
141 }
142 }
143
|
BankAccount |
|