public class PersonDriver02 { public static void main(String[] args) { } } class Person { private String name; private int age; private String address; //methods for the class public Person(String n, int a, String addr) { setName(n); setAge(a); setAddress(addr); } public void setName(String n) { if (n == null || n.isEmpty()) { throw new IllegalArgumentException("name cannot be empty (or null)"); } name = n; } public String getName() { return name; } public void setAge(int yearsOld) { if (yearsOld < 0) { throw new IllegalArgumentException("age cannot be negative"); } age = yearsOld; } public int getAge() { return age; } public void setAddress(String addr) { if (addr == null || addr.isEmpty()) { throw new IllegalArgumentException("address cannot be empty (or null)"); } address = addr; } public String getAddress() { return address; } public String getTitle() { return name; } public String toString() { return name+" ("+age+" years old), at address: "+address; } } class HourlyEmployee extends Person { private int employeeNum; private double payRate; private double hoursWorked; //methods for the class public HourlyEmployee(String n, int a, String addr, int employeeNumber, double payRate) { super(n, a, addr); setEmployeeNumber(employeeNumber); setPayRate(payRate); setHoursWorked(0); } public void setEmployeeNumber(int num) { employeeNum = num; } public int getEmployeeNumber() { return employeeNum; } public void setPayRate(double rate) { if (rate <= 0) { throw new IllegalArgumentException("pay rate cannot be less than or equal to 0"); } payRate = rate; } public double getPayRate() { return payRate; } protected void setHoursWorked(double hours) { if (hours < 0) { throw new IllegalArgumentException("hours worked cannot be less than 0"); } hoursWorked = hours; } public double getHoursWorked() { return hoursWorked; } public void incrementHoursWorked(double change) { if (hoursWorked + change <= 0) { throw new IllegalArgumentException("total hours worked cannot be less than 0"); } hoursWorked += change; } public String getTitle() { return name + ", hourly employee"; } public String toString() { return super.toString()+"\n"+" Hourly Employee (#"+employeeNum+")"; } } class SalariedEmployee extends Person { private int employeeNum; private double payAmount; //methods for the class public SalariedEmployee(String n, int a, String addr, int employeeNumber, double payAmount) { super(n, a, addr); setEmployeeNumber(employeeNumber); setPayAmount(payAmount); } public void setEmployeeNumber(int num) { employeeNum = num; } public int getEmployeeNumber() { return employeeNum; } public void setPayAmount(double amount) { if (amount <= 0) { throw new IllegalArgumentException("pay cannot be less than or equal to 0"); } payAmount = amount; } public double getPayAmount() { return payAmount; } public String getTitle() { return name + ", salaried employee"; } public String toString() { return super.toString()+"\n"+" Salaried Employee (#"+employeeNum+")"; } }