package employeeType.employee; public abstract class Employee { private String firstName; private String lastName; private char middleInitial; private boolean fulltime; private char gender; private int employeeNum; public Employee(String firstName, String lastName, char middleInitial, char gender, int employeeNum, boolean fulltime) { super(); this.firstName = firstName; this.lastName = lastName; this.middleInitial = middleInitial; this.fulltime = fulltime; this.gender = gender; this.employeeNum = employeeNum; } public int getEmployeeNumber() { return this.employeeNum; } public void setEmployeeNumber(int empNum) { this.employeeNum = empNum; } public String getFirstName() { return firstName; } String getLastName() { return lastName; } char getMiddleInitial() { return middleInitial; } public char getGender() { return gender; } public void setFirstName(String fn) { this.firstName = fn; } public void setLastName(String ln) { this.lastName = ln; } public void setMiddleI(char m) { this.middleInitial = m; } public void setGender(char g) { this.gender = g; } public boolean equals(Object obj) { // TODO Auto-generated method stub if (obj instanceof Employee) { Employee employee = (Employee) obj; if (employee.getEmployeeNumber() == this.getEmployeeNumber()) return true; else return false; } else return false; } public String toString() { // TODO Auto-generated method stub return getEmployeeNumber() + \"\ \" + getFirstName() + \" \" + getLastName() + \"\ Gender:\" + getGender() + \"\ Status:\" + ((fulltime) ? \"Full Time\" : \"Part Time\"); } public abstract double calculateWeeklyPay(); public abstract void annualRaise(); public abstract double holidayBonus(); public abstract void resetWeek(); } package employeeType.subTypes; import java.text.DecimalFormat; import employeeType.employee.Employee; public class HourlyEmployee extends Employee { private double wage; private double hoursWorked; public HourlyEmployee(String firstName, String lastName, char middleInitial, char gender, int employeeNum, boolean fulltime, double wage) { super(firstName, lastName, middleInitial, gender, employeeNum, fulltime); // TODO Auto-generated constructor stub this.wage = wage; this.hoursWorked = 0.0d; } public void increaseHours(double hours) { if (hours > 0) this.hoursWorked += hours; else System.out.println(\"Error! Invalid hours\"); } public String toString() { // TODO Auto-generated method stub return super.toString() + \"\ Wage: \" + wage + \"\ Hours Worked: \" + hoursWorked; } public double calculateWeeklyPay() { double pay; if (hoursWorked > 40) { pay = (40 * wage) + (2 * (hoursWorked - 40) * wage); } else { pay = wage * hoursWorked; } return pay; } public void annualRaise() { DecimalFormat decimalFormat = new DecimalFormat(\"#.##\"); wage = Double.valueOf(decimalFormat.format(wage * 0.05)); } public double holidayBonus() { return 40 * wage; } public void resetWeek() { this.hoursWorked = 0; } } package employeeType.subTypes; import java.text.DecimalFormat; import emplo.