Reference no: EM13165455
Create a class Account that represents a banking account. The class has
attributes owner, accountNo and balance. The constructor for the class
requires the name of the owner of the account and the initial deposit for the
account, which will be stored in the balance attribute. A static int variable is
used for accountNo, which is initially set to 12345. Each object of the
class Account is assigned its accountNo by adding 1 to the current value in
the static variable. Therefore, the first account will be assigned 12346 as its
accountNo.
The business rules for objects of class Account are:
An owner name can be changed
No method should allow the balance value to become negative
Only deposits and withdrawals can alter the value stored in balance,
and their amounts must be positive, that is you cannot deposit -
$10.00
Interest is always 5% per annum.
Following the business rules, create methods of deposit, withdrawal,
addInterest and appropriate get and set methods for the class. The toString
should display the accountNo and the balance.
Note: To format the balance so that it prints out with a $ in front of the
amount and to two decimal places, you can use class NumberFormat to do
this. You will need to
a. Firstly make an import declaration
import java.text.NumberFormat;
b. Add the following to your code
NumberFormat formatter =
NumberFormat.getCurrencyInstance ();
c. Call up the method format on the balance
formatter.format (balance);
Write a method called equals that compares two Account objects and
returns true if the objects have the same owner, otherwise the method
returns false.
Write a class TestAccount which creates an array of five different Account
objects, with at least two objects having the same owner values.
Systematically check the functionality of all methods of class Account
including the equals method to find out how many different accounts are
owned by the same person.
3. Using the class Account in question 2, derive two additional account types:
OnLineAccount and SavingsAccount, where OnLineAccount and
SavingsAccount inherit from Account.
In Account, change the visibility of all data to protected. Change the
withdraw method so that it becomes an abstract method. This action will
necessitate you declaring the class as abstract. Deposits should work the
same way in OnLineAccount and SavingsAccount so make sure they cannot
override their parent's version.
The OnLineAccount class has one additional attribute to that of class
Account, minimumBalance. All instances of OnLineAccount are created
with the minimumBalance amount set to $500. If transactions of any
OnLineAccount cause the balance to go below minimumBalance, a $25 fee
is subtracted from the account balance. Override the toString method to
display everything the Account toString displays plus a message dependent
upon the balance. If the balance is below the minimumBalance, a
message stating that a $25 fee has been already been subtracted needs to alert
the customer. Use the parent class toString to do most of the work.
The SavingsAccount class has one additional attribute to that of class
Account, overdraft. All instances of SavingsAccount are created with the
overdraft amount set to -$1000. An overdraft amount is the amount an
object of SavingsAccount class may allow the balance to go to. Implement
the withdraw method so that overdrafts are allowed up to the amount stored
in overdraft. Any withdrawals that allow the balance to drop below zero
and up to the overdraft amount are allowed but the overdraft fee of $30 is
incurred each time a transaction causes the balance to be below zero.
Override the toString method to display everything the Account toString
displays plus a message dependent upon the balance. If the balance is
below zero, a message stating that the person is in overdraft and a $30 fee
has been already been incurred. Use the parent class toString to do most of
the work.
Create a driver class with an array of 5 objects of Account, being some
instances of the child classes OnLineAccount or SavingsAccount.
Systematically test the full functionality of both child classes.