$29
Purpose: The purpose for this project is to reinforce the knowledge learned in Chapter 12.
Objectives:
Write your own exception classes
Apply exception handling in program
Problem description:
Modify bank Account family classes from Project Eleven. You may modify the following class diagram if it is needed. This time, handle exceptions in bank business. Two new class shall be added: IllegalAmountException and
NoSufficientFundsException. You may add the class diagram by yourself to help you understand.
Account
-‐‑id: int
-‐‑balance: double
+Account()
+Account(id: int, balance: double)
+setBalance(balance:double):void
+getBalance():double
+setId(id:int):void
+getId():int
+deposit(amount:doube): void
+withdraw(amount:double):void
+toString():String
CheckingAccount
+withdraw(amount:double):void
+toString():string
SavingAccount
-‐‑interestRate: double
+setInterestRate(rate:double):void
+getInterestRate():double
+withdraw(amount:double):void
+addInterest():void
+toString():string
Requirement:
The class design could be better. However, we are limited with the knowledge we have now. So the above class diagram is reasonable. All methods are explained by their names. Please pay attention to withdraw and deposit methods.
The Account class withdraw method is implemented by doing nothing. The CheckingAccount withdraw method must fulfill the policy that the withdraw amount must greater than 0 and less than or equal to current account balance. The SavingsAccount withdraw method must fulfill the policy that the minimum balance of the account must be 500 all the time. Also the withdraw amount must greater than 0. If the condition cannot be fulfilled, withdraw method will throw corresponding exceptions.
The deposit methods also need to make sure that the amount to deposit is positive. If not, the method will throw IllegalAmountException
When addInterest method in SavingsAccount class, the account balance updated to current_balance * (1 + interestRate) where interestRate is in decimal form. For instane, 6% is 0.06.
The students must write a main function to test these accounts. In main function, polymorphism must be used to handle a collection of accounts.
Sample pseudo code for main function
Declare an array of Account, named accounts, of size 4
Initialize every element in accounts array. Make accounts[0] and accounts[1] be CheckingAccount and accounts[2] and accounts[3] be SavingsAccount
Make deposit and withdraw for each account and print out the account information to see the result. Note: You may use Exception Handling here.
Put those code in try block and write corresponding catch blocks
If the account is SavingsAccount, call addInterest function to update the account balance. Then print out the account information
Submission:
Submit the YourProj12.java file via blackboard link. The due date will be announce on blackboard