You are to create an efficient OO application to be used by the wait staff at the Mason Inn. You will process one waiter/waitress at a time. The user will provide information for him or her, to include: their name, number of hours worked and hourly wage. Additional information to be stored for each employee will be their total number of tables served and the total tips collected. To make your data definition class more robust, include the capability to provide either no information; the employee name; or the employee name and hourly wage at object creation time.

The hourly wage – must be between the minimum of $5/hour and the maximum ‐‐ $8/hour, and number of hours worked – must be between one and sixty.
When processing an employee, prompt for the amount of tip for as many tables as desired. The value of each tip should be between $.01 and $100.
The Restaurant application should request the necessary input from the user (name, hourly wage, number of hours worked and each tip amount received) and produce readable output for each waiter/waitress to include the total salary for the week – based on hourly pay, total received in tips, total amount earned (salary and tips) and the average tip amount. Then allow the user to enter another employee. In addition to the summary presented for each member of the wait staff, a final summary that includes the total salary paid out, the total in tips collected and the largest tip received by any wait person.

To create an efficient OO application for the wait staff at the Mason Inn, we will need to define and implement several classes.

1. Create a class called "Employee" to represent each wait staff member. This class will have the following attributes: name, hourly wage, number of hours worked, total number of tables served, and total tips collected. The hourly wage attribute should have a validation check to ensure that it is within the range of $5/hour to $8/hour, and the number of hours worked attribute should be between one and sixty. The class should provide methods to set and get these attributes.

2. Create a class called "Restaurant" to handle the input and output operations. This class will have a list to store instances of the "Employee" class. It should have a method to prompt the user for the employee's information (name, hourly wage, number of hours worked) and create a new instance of the "Employee" class. After creating an instance, the class should prompt the user for the tip amount for each table served, and update the employee's total tips collected. The class should provide methods to calculate the total salary for the week, total tips collected, total amount earned, and average tip amount for each employee.

3. Implement a main program that instantiates an object of the "Restaurant" class. The main program should have a loop to allow the user to enter information for multiple employees. After entering information for each employee, the program should display a summary of the employee's total salary for the week, total tips collected, total amount earned, and average tip amount. The program should also keep track of the largest tip received by any wait person. Finally, the program should display a final summary including the total salary paid out, the total in tips collected, and the largest tip received.

By using these classes and implementing the necessary input and output operations, you can create an efficient OO application for the wait staff at the Mason Inn.