In: Computer Science
Chapter 7, Problem 3PE from Introduction to Programming using Python by Y. Daniel Liang.
Problem
(The Account class) Design a class named Account that contains:
■ A private int data field named id for the account.
■ A private float data field named balance for the account.
■ A private float data field named annualInterestRate that stores the current interest rate.
■ A constructor that creates an account with the specified id (default 0), initial balance (default 100), and annual interest rate (default 0).
■ The accessor and mutator methods for id, balance, and annualInterestRate.
■ A method named getMonthlyInterestRate() that returns the monthly interest rate.
■ A method named getMonthlyInterest() that returns the monthly interest.
■ A method named withdraw that withdraws a specified amount from the account.
■ A method named deposit that deposits a specified amount to the account.
Draw the UML diagram for the class, and then implement the class. (Hint: The method getMonthlyInterest() is to return the monthly interest amount, not the interest rate. Use this formula to calculate the monthly interest: balance * monthlyInterestRate. monthlyInterestRate is annualInterestRate / 12. Note that annualInterestRate is a percent (like 4.5%). You need to divide it by 100.)
Write a test program that creates an Account object with an account id of 1122, a balance of $20,000, and an annual interest rate of 4.5%. Use the withdraw method to withdraw $2,500, use the deposit method to deposit $3,000, and print the id, balance, monthly interest rate, and monthly interest.
#CODE FOR THE PROBLEM
class Account:
__id=None
__balance=None
__annualInterestRate=None
def __init__(self, id=0, balance=100, interest=0):
self.__id=id
self.__balance=balance
self.__annualInterestRate=interest
def getID(self):
return self.__id
def setID(self, id):
self.__id=id
def getBalance(self):
return self.__balance
def setBalance(self, balance):
self.__balance=balance
def getAnnualInterestRate(self):
return self.__annualInterestRate
def setAnnualInterestRate(self, interest):
self.__annualInterestRate=interest
def getMonthlyInterestRate(self):
return self.__annualInterestRate/12
def getMonthlyInterest(self):
return (self.__balance*self.__annualInterestRate)/1200
def withdraw(self, amount):
if(self.__balance>=amount):
self.__balance-=amount
print("Successfully Withdrawn")
else:
print("Insufficient Balance")
def deposit(self, amount):
self.__balance+=amount
#following codes are to test the working of the class
account = Account(1122, 20000, 4.5)
x = account.getID()
print("ID is "+str(x))
account.setID(1155)
x = account.getID()
print("Updated ID is "+ str(x))
x = account.getBalance()
print("Balance is $"+ str(x))
x = account.setBalance(15000)
x = account.getBalance()
print("Updated Balance is $"+ str(x))
x = account.getAnnualInterestRate()
print("Annual Interest Rate is "+ str(x))
x = account.setAnnualInterestRate(6)
x = account.getAnnualInterestRate()
print("Updated Annual Interest Rate is "+ str(x))
x = account.getMonthlyInterestRate()
print("Monthly Interest Rate is "+str(x))
x = account.getMonthlyInterest()
print("Monthly Interest is "+str(x))
account.withdraw(5000)
x=account.getBalance()
print("New balance after withdrawing 5000 is "+str(x))
account.deposit(2000)
x=account.getBalance()
print("New balance after depositing 2000 is "+str(x))
# IF YOU GET INDENTATION ERROR, CHECK THE ATTACHED IMAGE