Assignment 3 – Enhanced Employee Hierarchy

For this assignment, you are going to enhance the Employee Hierarchy that you created in Programming Assignment 2 by adding an interface called Compensation with the following two methods:

  • earnings() – receives no parameters and returns a double.
  • raise(double percent) – receives one parameter which is the percentage of the raise and returns a void.

Create the abstract class CompensationModel which implements the Compensation interface. Create the following classes as subclasses of CompensationModel:

  • SalariedCompensationModel – For Employees who are paid a fixed weekly salary, this class should contain a weeklySalary instance variable, and should implement methods earnings() to return the weekly salary, and raise(double percent) which increases the weekly salary by the percent specified.
  • HourlyCompensationModel – For Employees who are paid by the hour and receive overtime pay for all hours worked in excess of 40 hours per week. This class should contain instance variables of wage and hours and should implement method earnings() based on the number of hours worked. For any hours worked over 40, they should be paid at an hourly wage of 1 and a half times their wage. So if their normal wage is $10 per hour normally, they would get $15 per hour for overtime. It should also implement the method raise(double percent) by increasing the wage by the percent specified.
  • CommissionCompensationModel – This class is the same as in Asssignment 2 except that this class is now a subclass of CompensationModel. It should also implement the method raise(double percent) by increasing the commission rate by the percent specified.
  • BasePlusCommissionCompensationModel – This class is the same as in Assignment 2, a subclass of CommissionCompensationModel . It should also implement the method raise(double percent) by increasing the base salary and commission rate by the percent specified.

Each of these classes will also have a toString() method to display their compensation information as illustrated in the sample output below.

Modify the Employee class of Assignment 2 to have an instance variable of type CompensationModel instead of CommissionCompensationModel, Make any other necessary changes in the Employee class because of this. Also add the raise (double percent) method to the Employee class which simply calls the raise method of the CompensationModel.

Use the following code in your main function to test your classes, just copy and paste it into your main method:

// Create the four employees with their compensation models.

CommissionCompensationModel commissionModel = new CommissionCompensationModel(2000.00, 0.04);
BasePlusCommissionCompensationModel basePlusCommissionModel = new BasePlusCommissionCompensationModel(2000.00, 0.05, 600.00);
SalariedCompensationModel salariedCompensationModel = new SalariedCompensationModel(2500.00);
HourlyCompensationModel hourlyCommissionModel = new HourlyCompensationModel(10.00, 35.0);

Employee employee1 = new Employee(“John”, “Smith”, “111-11-1111”, commissionModel);
Employee employee2 = new Employee(“Sue”, “Jones”, “222-22-2222”, basePlusCommissionModel);
Employee employee3 = new Employee(“Jim”, “Williams”, “333-33-3333”, salariedCompensationModel);
Employee employee4 = new Employee(“Nancy”, “Johnson”, “444-44-4444”, hourlyCommissionModel);

// Print the information about the four employees.
System.out.println(“The employee information initially.”);
System.out.printf(“%s%n%s%n%s%n%s%n”, employee1, employee2, employee3, employee4);
System.out.printf(“%s%s%s%s%s%8.2f%n%n”, “Earnings for “, employee1.getFirstName(), ” “, employee1.getLastName(), “: “, employee1.earnings());

// Change the compensation model for the four employees.

CommissionCompensationModel commissionModelNew = new CommissionCompensationModel(5000.00, 0.04);
BasePlusCommissionCompensationModel basePlusCommissionModelNew = new BasePlusCommissionCompensationModel(4000.00, 0.05, 800.00);
SalariedCompensationModel salariedCompensationModelNew = new SalariedCompensationModel(3500.00);
HourlyCompensationModel hourlyCommissionModeNewl = new HourlyCompensationModel(10.00, 50);

// Set the new compensation models for the employees.
employee1.setCompensation(basePlusCommissionModelNew);
employee2.setCompensation(commissionModelNew);
employee3.setCompensation(hourlyCommissionModeNewl);
employee4.setCompensation(salariedCompensationModelNew);

// Print out the new information for the four employees.
System.out.println(“The employee information after changing compensation models.”);
System.out.printf(“%s%n%s%n%s%n%s%n”, employee1, employee2, employee3, employee4);

// Declare an array of employees and assign the four employees to it.
Employee[] employees = new Employee[4];
employees[0] = employee1;
employees[1] = employee2;
employees[2] = employee3;
employees[3] = employee4;

// Loop thru the array giving each employee a 2% raise polymorphically;
for (Employee employee : employees)
{
employee.raise(.02);
}

// Print out their new earnings.
System.out.println(“The employee information after raises of 2 percent.”);
System.out.printf(“%s%n%s%n%s%n%s%n”, employee1, employee2, employee3, employee4);

The output from your program should look like the following (there will be additional blank lines in the output which canvas removes for me, unwanted, in this display):

run:
The employee information initially.
John Smith
Social Security Number: 111-11-1111
Commission Compensation with:
Gross Sales of: 2000.00
Commission Rate of: 0.040
Earnings: 80.00

Sue Jones
Social Security Number: 222-22-2222
Base Plus Commission Compensation with:
Gross Sales of: 2000.00
Commission Rate of: 0.050
Base Salary of: 600.00
Earnings: 700.00

Jim Williams
Social Security Number: 333-33-3333
Salaried Compensation with:
Weekly Salary of: 2500.00
Earnings: 2500.00

Nancy Johnson
Social Security Number: 444-44-4444
Hourly Compensation with:
Wage of: 10.00
Hours Worked of:35.00
Earnings: 350.00

Earnings for John Smith: 80.00

The employee information after changing compensation models.
John Smith
Social Security Number: 111-11-1111
Base Plus Commission Compensation with:
Gross Sales of: 4000.00
Commission Rate of: 0.050
Base Salary of: 800.00
Earnings: 1000.00

Sue Jones
Social Security Number: 222-22-2222
Commission Compensation with:
Gross Sales of: 5000.00
Commission Rate of: 0.040
Earnings: 200.00

Jim Williams
Social Security Number: 333-33-3333
Hourly Compensation with:
Wage of: 10.00
Hours Worked of:50.00
Earnings: 550.00

Nancy Johnson
Social Security Number: 444-44-4444
Salaried Compensation with:
Weekly Salary of: 3500.00
Earnings: 3500.00

The employee information after raises of 2 percent.
John Smith
Social Security Number: 111-11-1111
Base Plus Commission Compensation with:
Gross Sales of: 4000.00
Commission Rate of: 0.051
Base Salary of: 816.00
Earnings: 1020.00

Sue Jones
Social Security Number: 222-22-2222
Commission Compensation with:
Gross Sales of: 5000.00
Commission Rate of: 0.041
Earnings: 204.00

Jim Williams
Social Security Number: 333-33-3333
Hourly Compensation with:
Wage of: 10.20
Hours Worked of:50.00
Earnings: 561.00

Nancy Johnson
Social Security Number: 444-44-4444
Salaried Compensation with:
Weekly Salary of: 3570.00
Earnings: 3570.00

Looking for solution of this Assignment?

WHY CHOOSE US?

We deliver quality original papers

Our experts write quality original papers using academic databases.We dont use AI in our work. We refund your money if AI is detected  

Free revisions

We offer our clients multiple free revisions just to ensure you get what you want.

Discounted prices

All our prices are discounted which makes it affordable to you. Use code FIRST15 to get your discount

100% originality

We deliver papers that are written from scratch to deliver 100% originality. Our papers are free from plagiarism and NO similarity.We have ZERO TOLERANCE TO USE OF AI

On-time delivery

We will deliver your paper on time even on short notice or  short deadline, overnight essay or even an urgent essay