- Include required library files.
- Define a class named “NegativeAmount” and “InsufficientFunds”.
- Inside the “Account” class,
- Add the negative amount exception in the “deposit()” function.
- Add the negative amount and insufficient funds exception in the “withdraw()” function.
- Define a “main()” function to test the program to deposit and withdraw amounts.
- Create an object and test the deposit and withdraw using the appropriate function.
- Then print the result.
- Add the negative amount exception in the “deposit()” function.
- Add the negative amount and insufficient funds exception in the “withdraw()” function.
- Create an object and test the deposit and withdraw using the appropriate function.
- Then print the result.
Program to rewrite the given class “Account” that throws an appropriate exceptions and test the program to deposit and withdraw amounts are as follows,
Explanation of Solution
// Include required library files
#include <iostream>
using namespace std;
// Definition of class NegativeAmount
class NegativeAmount
{
};
// Definition of class insufficientFunds
class InsufficientFunds
{
};
// Definition of class Account
class Account
{
// Access specifier
private:
// Declaration of double variable
double balance;
// Access specifier
public:
// Definition of default constructor
Account()
{
// Assign 0 to balance
balance = 0;
}
// Definition of constructor to assign value
Account(double initialDeposit)
{
// Assign initialDeposit to balance
balance = initialDeposit;
}
// Definition of getBalance() function to return balance
double getBalance()
{
// Return balance
return balance;
}
// Definition of deposit() function to return new balance
// or throw NegativeAmount exception
double deposit(double amount) throw (NegativeAmount)
{
// Check amount is greater than 0
if (amount > 0)
// Condition is trur, compute balance
balance += amount;
// Otherwise
else
// Throw exception
throw NegativeAmount();
// Return balance
return balance;
}
// Definition of withdraw function to return new balance
// or throw NegativeAmount or InsufficientFunds
double withdraw(double amount) throw (NegativeAmount,
InsufficientFunds)
{
// Check amount is greater than balance
if (amount > balance)
// Throw insufficient exception
throw InsufficientFunds();
// Otherwise check amount is lesser than 0
else if (amount < 0)
// Throw negative amount execption
throw NegativeAmount();
// Otherwise
else
// Compute balance
balance -= amount;
// Return balance
return balance;
}
};
// Definition of main() function
int main()
{
// Creation of object and passing 100 to the constructor
Account a(100);
// Try block
try
{
// Call deposit() function to deposit 50
a.deposit(50);
// Call deposit() function to deposit 10
a.deposit(10);
// Call withdraw() function to deposit 220
a.withdraw(220);
// Call getBalance() function to get print balance amount
cout << a.getBalance() << endl;
}
// Catch block for negative amount
catch (NegativeAmount)
{
// Print the message regarding negative amount
cout << "You can't deposit or withdraw a negative amount."
<< endl;
}
// Catch block for insufficient funds
catch (InsufficientFunds)
{
// Print the message for insufficient funds
cout << "Insufficient funds for withdrawal." << endl;
}
// Declaration of character variable
char ch;
// Get an character
cin >> ch;
// Return 0
return 0;
}
Output:
Insufficient funds for withdrawal.
Want to see more full solutions like this?
Chapter 16 Solutions
Problem Solving with C++ (10th Edition)
- Cpp program Write a Garage class that has a Car that is having troubles with its Motor. Use a function-level try block in the Garage class constructor to catch an exception (thrown from the Motor class) when its Car object is initialized. Throw a different exception from the body of the Garage constructor s handler and catch it in main().arrow_forwardWrite a program to create a class” Fan “to represents features of a fan as follows: “Fan “should contain following details fanType, manufacturer, model, isOn. Use constructor to initialize data members of the Fan class. Create function on() and off() to switch on and off the fan respectively. Create a function speedup() is to increase the speed of the fan by 1 if speed of the Fan greater than 5 it should throw a custom exception. Create another function speeddown() is to decrease the speed of the fan by 1 if speed of the Fan less than 0 it should throw a custom exception. Make a menu driven program.arrow_forwardC++ Programing NOTE: The important method has been ATTRIBUTES given to you. userld:int //generates unique id from 10001 upwards INSTRUCTION 1 username:string firstname:string lastname:string dob:string The program should generate unique userld whenever new object is created. Notice that idGenerator is static variable, so assign the current value of idGenerator to userld, so that each user will have unique user id (Starting from 10001). age: int idGenerator: static int; totalUsers : static int МЕТHODS User() User(string, string, string, int) User(const User&) "User() Then increment idGenerator by 1. INSTRUCTION 2 The totalusers is also a static variable. This should keep track of the total users in the class. With the Above UML for CLASS USER, answer the following questions Complete or Create the default constructor method. a. The default constructor should accept just the firstname, lastname, dob (date of birth) and age from the keyboard. wwww w b. Write a setter method that sets the…arrow_forward
- 2. Create one user object that invokes the default constructor.arrow_forwardclockType.h file provided //clockType.h, the specification file for the class clockType#ifndef H_ClockType#define H_ClockType class clockType {public: void setTime(int hours, int minutes, int seconds); //Function to set the time. //The time is set according to the parameters. //Postcondition: hr = hours; min = minutes; // sec = seconds // The function checks whether the values of // hours, minutes, and seconds are valid. If a // value is invalid, the default value 0 is // assigned. void getTime(int& hours, int& minutes, int& seconds) const; //Function to return the time. //Postcondition: hours = hr; minutes = min; // seconds = sec void printTime() const; //Function to print the time. //Postcondition: The time is printed in the form // hh:mm:ss. void incrementSeconds(); //Function to increment the time by one…arrow_forwardDescription: Implement function getPercentage that takes two inputs: grade and total Grade and outputs the grade percentage as follows: percentage = (grade/total grade)*100 . (Assume a student can not get a grade above 100%) Define your own exception classes: 1. DivideByZeroException as a derived class of Standard Library class runtime_error, that is used to detect division by zero run time error. NegativeNumberException as a derived class of Standard Library class logic_error, that is used to detect if the user entered a negative number as a grade. 3. InvalidGradeException as a derived class of Standard Library class logic_ error, that is used to detect if a user entered an invalid input (grade greater than total grade). Use the above exception classes after implementing them to apply exception handling for your getPercentage function. Sample Input/Output:arrow_forward
- oop using c++ please give me full answer thanks Write a Program that implements Base class calculator and a Derived class scientific calculator, The Derived class should take the basic operations i.e. add, divide, subtract from calculator. However it should have its own methods such as square root.arrow_forward3-3 Please tell if each line of code compiles and run, compiles with rumtime exception, or if it does not compile for #1-#4 based on the heirarchy of code in the first pictrure.arrow_forward1.class Nothing {public static void main(String args[]){int x = 0;int y = 20;int fraction = y/x;System.out.println("End Of Main");}}1. If there will occur exception, write the code that will handle the exception.arrow_forward
- Arithmetic Exception Arman has a shop where he provides stuff on rent. The whole payment system is computerised. A customer has to enter the item name, item type, cost, and the number of days they have taken the item for rent. The system then tells them the cost per day. But there is a problem with the machine that if the number of days entered is not an integer value then the system would crash. To handle this, Arman decided to upgrade the software and use exception handling in case the customer entered any invalid input it should display " Number of days x is invalid".Write a C++ program to find the item cost per day with the cost for n days given. The arithmetic exception has to be thrown if the n is less than or equal to zero.Strictly adhere to the Object-Oriented specifications given in the problem statement. All class names, member variable names, and function names should be the same as specified in the problem statement.The class Item has the following private data members.…arrow_forwardC++ #include <string>#include <cmath> class DollarAmount {public:// initialize amount from an int64_t valueexplicit DollarAmount(int64_t value) : amount{value} { } // add right's amount to this object's amountvoid add(DollarAmount right) {// can access private data of other objects of the same classamount += right.amount; } // subtract right's amount from this object's amountvoid subtract(DollarAmount right) {// can access private data of other objects of the same classamount -= right.amount;} // uses integer arithmetic to calculate interest amount, // then calls add with the interest amountvoid addInterest(int rate, int divisor) {// create DollarAmount representing the interestDollarAmount interest{(amount * rate + divisor / 2) / divisor}; add(interest); // add interest to this object's amount} // return a string representation of a DollarAmount objectstd::string toString() const {std::string dollars{std::to_string(amount / 100)};std::string…arrow_forwardPLZ help with the following: True/False In java it is possible to throw an exception, catch it, then re-throw that same exception if it is desired GUIs are windowing interfaces that handle user input and output. An interface can contain defined constants as well as method headings or instead of method headings. When a recursive call is encountered, computation is temporarily suspended; all of the information needed to continue the computation is saved and the recursive call is evaluated. Can you have a static method in a nonstatic inner class?arrow_forward
- C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrMicrosoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,Programming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:Cengage
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT