Extend the SalariedEmployee class in the slides to define a new class, SalariedC
ID: 3692906 • Letter: E
Question
Extend the SalariedEmployee class in the slides to define a new class, SalariedComissionTravelEmployee class, the earnings are calculated based on salary, commission and weekly travel reimbursement. Override the toString method and earnings method.
employee.java
public abstract class Employee {
private final String firstName;
private final String lastName;
private final String socialSecurityNumber;
// constructor
public Employee(String firstName, String lastName,
String socialSecurityNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
}
// return first name
public String getFirstName() {
return firstName;
}
// return last name
public String getLastName() {
return lastName;
}
// return social security number
public String getSocialSecurityNumber() {
return socialSecurityNumber;
}
// return String representation of Employee object
@Override
public String toString() {
return String.format("%s %s%nsocial security number: %s",
getFirstName(), getLastName(), getSocialSecurityNumber());
}
// abstract method must be overridden by concrete subclasses
public abstract double earnings(); // no implementation here
}
SalariedEmployee.java
public class SalariedEmployee extends Employee
{
private double weeklySalary;
// constructor
public SalariedEmployee(String firstName, String lastName,
String socialSecurityNumber, double weeklySalary)
{
super(firstName, lastName, socialSecurityNumber);
if (weeklySalary < 0.0)
throw new IllegalArgumentException(
"Weekly salary must be >= 0.0");
this.weeklySalary = weeklySalary;
}
// set salary
public void setWeeklySalary(double weeklySalary)
{
if (weeklySalary < 0.0)
throw new IllegalArgumentException(
"Weekly salary must be >= 0.0");
this.weeklySalary = weeklySalary;
}
// return salary
public double getWeeklySalary()
{
return weeklySalary;
}
// calculate earnings; override abstract method earnings in Employee
@Override
public double earnings()
{
return getWeeklySalary();
}
// return String representation of SalariedEmployee object
@Override
public String toString()
{
return String.format("salaried employee: %s%n%s: $%,.2f",
super.toString(), "weekly salary", getWeeklySalary());
}
}
Explanation / Answer
Hi, As per your requirement SalariedComissionTravelEmployee class implemented and overrided earnings and toString methods. Highlighted below these methods.
SalariedComissionTravelEmployee.java
public class SalariedComissionTravelEmployee extends SalariedEmployee {
private double salary;
private double commission;
public SalariedComissionTravelEmployee(String firstName, String lastName,
String socialSecurityNumber, double weeklySalary, double salary, double commission) {
super(firstName, lastName, socialSecurityNumber, weeklySalary);
this.salary = salary;
this.commission = commission;
// TODO Auto-generated constructor stub
}
// calculate earnings; override abstract method earnings in Employee
@Override
public double earnings()
{
return salary + commission+ getWeeklySalary();
}
// return String representation of SalariedComissionTravelEmployee object
@Override
public String toString()
{
return String.format("SalariedComissionTravelEmployee: %s%n%s: $%,.2f",
super.toString(), "Salary", earnings());
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.