Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Add a consultant to the Firm example. The consultant does not get paid hourly. Instead, the consultant gets a sum of $5000.00 per a session.

Add a consultant to the Firm example. The consultant does not get paid hourly. Instead, the consultant gets a sum of $5000.00 per a session. I will include the Employee.java, StaffMember.java, Staff.java, Firm.java, Volunteer.java, Hourly.java, and Executive.java.

Employee.java

public class Employee extends StaffMember

{

protected String socialSecurityNumber;

protected double payRate;

//-----------------------------------------------------------------

// Constructor: Sets up this employee with the specified

// information.

//-----------------------------------------------------------------

public Employee (String eName, String eAddress, String ePhone,

String socSecNumber, double rate)

{

super (eName, eAddress, ePhone);

socialSecurityNumber = socSecNumber;

payRate = rate;

}

//-----------------------------------------------------------------

// Returns information about an employee as a string.

//-----------------------------------------------------------------

public String toString()

{

String result = super.toString();

result += " Social Security Number: " + socialSecurityNumber;

return result; }

//-----------------------------------------------------------------

// Returns the pay rate for this employee.

//-----------------------------------------------------------------

public double pay()

{

return payRate;

}

}

Executive.java

public class Executive extends Employee

{ private double bonus;

//-----------------------------------------------------------------

// Constructor: Sets up this executive with the specified

// information.

//-----------------------------------------------------------------

public Executive (String eName, String eAddress, String ePhone,

String socSecNumber, double rate)

{

super (eName, eAddress, ePhone, socSecNumber, rate);

bonus = 0;

// bonus has yet to be awarded

}

//-----------------------------------------------------------------

// Awards the specified bonus to this executive.

//-----------------------------------------------------------------

public void awardBonus (double execBonus)

{

bonus = execBonus;

}

//-----------------------------------------------------------------

// Computes and returns the pay for an executive, which is the

// regular employee payment plus a one-time bonus.

//-----------------------------------------------------------------

public double pay()

{

double payment = super.pay() + bonus;

bonus = 0;

return payment;

}

}

Firm.java

public class Firm {

//-----------------------------------------------------------------

// Creates a staff of employees for a firm and pays them.

//-----------------------------------------------------------------

public static void main (String[] args)

{

Staff personnel = new Staff();

personnel.payday();

}

}

Hourly.java

public class Hourly extends Employee

{

private int hoursWorked;

//-----------------------------------------------------------------

// Constructor: Sets up this hourly employee using the specified

// information.

//-----------------------------------------------------------------

public Hourly (String eName, String eAddress, String ePhone,

String socSecNumber, double rate)

{

super (eName, eAddress, ePhone, socSecNumber, rate);

hoursWorked = 0;

}

// Adds the specified number of hours to this employee's

// accumulated hours.

//-----------------------------------------------------------------

public void addHours (int moreHours)

{

hoursWorked += moreHours;

}

//-----------------------------------------------------------------

// Computes and returns the pay for this hourly employee.

//-----------------------------------------------------------------

public double pay()

{

double payment = payRate * hoursWorked;

hoursWorked = 0;

return payment;

}

//-----------------------------------------------------------------

// Returns information about this hourly employee as a string.

//-----------------------------------------------------------------

public String toString()

{

String result = super.toString();

result += " Current hours: " + hoursWorked;

return result;

}

}

Staff.java

public class Staff

{

private StaffMember[] staffList;

//-----------------------------------------------------------------

// Constructor: Sets up the list of staff members.

//-----------------------------------------------------------------

public Staff ()

{

staffList = new StaffMember[6];

staffList[0] = new Executive ("Tony", "123 Main Line",

"555-0469", "123-45-6789", 2423.07);

staffList[1] = new Employee ("Paulie", "456 Off Line",

"555-0101", "987-65-4321", 1246.15);

staffList[2] = new Employee ("Vito", "789 Off Rocker",

"555-0000", "010-20-3040", 1169.23);

staffList[3] = new Hourly ("Michael", "678 Fifth Ave.",

"555-0690", "958-47-3625", 10.55);

staffList[4] = new Volunteer ("Adrianna", "987 Babe Blvd.",

"555-8374");

staffList[5] = new Volunteer ("Benny", "321 Dud Lane",

"555-7282");

((Executive)staffList[0]).awardBonus (500.00);

((Hourly)staffList[3]).addHours (40);

}

public void payday ()

{

double amount;

for (int count=0; count < staffList.length; count++)

{

System.out.println (staffList[count]);

amount = staffList[count].pay(); // polymorphic

if (amount == 0.0)

System.out.println ("Thanks!");

else

System.out.println ("Paid: " + amount);

System.out.println ("-----------------------------------");

}

}

}

StaffMember.java

abstract public class StaffMember

{

protected String name;

protected String address;

protected String phone;

//-----------------------------------------------------------------

// Constructor: Sets up this staff member using the specified

// information.

//-----------------------------------------------------------------

public StaffMember (String eName, String eAddress, String ePhone)

{

name = eName;

address = eAddress;

phone = ePhone;

}

//-----------------------------------------------------------------

// Returns a string including the basic employee information.

//-----------------------------------------------------------------

public String toString()

{

String result = "Name: " + name + " ";

result += "Address: " + address + " ";

result += "Phone: " + phone;

return result;

}

//-----------------------------------------------------------------

// Derived classes must define the pay method for each type of

// employee.

//-----------------------------------------------------------------

public abstract double pay();

}

Volunteer.java

public class Volunteer extends StaffMember

{

//-----------------------------------------------------------------

// Constructor: Sets up this volunteer using the specified

// information.

//-----------------------------------------------------------------

public Volunteer (String eName, String eAddress, String ePhone)

{

super (eName, eAddress, ePhone);

}

//-----------------------------------------------------------------

// Returns a zero pay value for this volunteer.

//-----------------------------------------------------------------

public double pay()

{

return 0.0;

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Big Data Fundamentals Concepts, Drivers & Techniques

Authors: Thomas Erl, Wajid Khattak, Paul Buhler

1st Edition

0134291204, 9780134291208

More Books

Students also viewed these Databases questions