Java Programming: Using the Employee classes ,create an InvalidNameException tha
ID: 664189 • Letter: J
Question
Java Programming:
Using the Employee classes ,create an InvalidNameException that is thrown from anywhere a name can be set if the name string is empty.
Test the new versions, catching any InvalidNameExceptions thrown.
public abstract class Employee {
private String name;
private double payRate;
public Employee(String name, double payRate) {
this.name = name;
this.payRate = payRate;
}
public Employee(String name) {
this.name = name;
this.payRate = 0;
}
public String getName() {return name;}
public void setName(String s) {name = s;}
public double getRate() {return payRate;}
public void setRate(double rate) {payRate = rate;}
public abstract double calculatePay();
public boolean equals(Object o) {
if (o == null) return false;
if(o.getClass() != this.getClass()) {return false;}
Employee temp = (Employee)o;
return (payRate == temp.payRate);
}
}
class HourlyEmployee extends Employee {
private double hours;
public HourlyEmployee(String name, double rate) {
super(name, rate);
if (rate < 15) setRate(15);
}
public HourlyEmployee(String name) {
super(name, 15);
}
public void addHours(double d) {
hours += d;
}
public double getHours() {return hours;}
public double calculatePay() {
double pay = hours * getRate();
hours = 0;
return pay;
}
public void setRate(double r) {
if (r < 15) super.setRate(15);
else super.setRate(r);
}
public boolean equals(Object o) {
if (o == null) return false;
if(o.getClass() != this.getClass()) {return false;}
HourlyEmployee temp = (HourlyEmployee)o;
return super.equals(temp) && this.hours == temp.hours;
}
}
class SalariedEmployee extends Employee {
public SalariedEmployee(String name, double rate) {
super(name, rate < 0 ? 0 : rate);
}
public SalariedEmployee(String name) {
super(name);
}
public double calculatePay(){
return getRate() / 12;
}
}
class EmployeeTest {
public static void main(String args[]) {
Employee [] ems = new Employee[6];
ems[0] = new HourlyEmployee("Bill", 12);
ems[1] = new HourlyEmployee("Mary", 23);
ems[2] = new HourlyEmployee("Greg", 19);
ems[3] = new SalariedEmployee("Sara", 43000);
ems[4] = new SalariedEmployee("Pat", 62000);
ems[5] = new SalariedEmployee("Paul", -2);
for(int i = 0; i < 6; i ++) {
if(ems[i] instanceof HourlyEmployee) {
((HourlyEmployee)ems[i]).addHours((int)(Math.random() * 20 +30));
}
}
for (int i = 0; i < 6; i ++) {
System.out.println("Name: " + ems[i].getName() + ", pay rate: "
+ ems[i].getRate() + ", Pay: " + ems[i].calculatePay());
}
}
}
Explanation / Answer
Answer:
Here the modified code that create InvalidNameException and Catches the exception
import java.io.*;
import java.util.*;
import java.lang.*;
import javax.naming.NamingException;
import javax.naming.InvalidNameException;
import java.lang.Exception;
abstract class Employee
{
private String name;
private double payRate;
public Employee(String name, double payRate) throws InvalidNameException
{
if(name==null)
throw new InvalidNameException();
else
{
this.name = name;
this.payRate = payRate;
}
}
public Employee(String name) throws InvalidNameException
{
if(name==null)
throw new InvalidNameException();
else
{
this.name = name;
this.payRate = 0;
}
}
public String getName() {return name;}
public void setName(String s) {name = s;}
public double getRate() {return payRate;}
public void setRate(double rate) {payRate = rate;}
public abstract double calculatePay();
public boolean equals(Object o) {
if (o == null) return false;
if(o.getClass() != this.getClass()) {return false;}
Employee temp = (Employee)o;
return (payRate == temp.payRate);
}
}
class HourlyEmployee extends Employee
{
private double hours;
public HourlyEmployee(String name, double rate)throws InvalidNameException
{
super(name, rate);
if (rate < 15) setRate(15);
}
public HourlyEmployee(String name) throws InvalidNameException{
super(name, 15);
}
public void addHours(double d) {
hours += d;
}
public double getHours() {return hours;}
public double calculatePay() {
double pay = hours * getRate();
hours = 0;
return pay;
}
public void setRate(double r) {
if (r < 15) super.setRate(15);
else super.setRate(r);
}
public boolean equals(Object o) {
if (o == null) return false;
if(o.getClass() != this.getClass()) {return false;}
HourlyEmployee temp = (HourlyEmployee)o;
return super.equals(temp) && this.hours == temp.hours;
}
}
class SalariedEmployee extends Employee
{
public SalariedEmployee(String name, double rate) throws InvalidNameException
{
super(name, rate < 0 ? 0 : rate);
}
public SalariedEmployee(String name) throws InvalidNameException {
super(name);
}
public double calculatePay(){
return getRate() / 12;
}
}
public class EmployeeTest
{
public static void main(String args[]) {
Employee [] ems = new Employee[6];
try{
ems[0] = new HourlyEmployee("Bill", 12);
ems[1] = new HourlyEmployee("Mary", 23);
ems[2] = new HourlyEmployee("Greg", 19);
ems[3] = new SalariedEmployee("Sara", 43000);
ems[4] = new SalariedEmployee("Pat", 62000);
ems[5] = new SalariedEmployee(" ", -2);
}
catch(InvalidNameException exe1)
{
System.out.println("Invalid Name:");
}
for(int i = 0; i < 6; i ++) {
if(ems[i] instanceof HourlyEmployee) {
((HourlyEmployee)ems[i]).addHours((int)(Math.random() * 20 +30));
}
}
for (int i = 0; i < 6; i ++)
{
System.out.println("Name: " + ems[i].getName() + ", pay rate: "
+ ems[i].getRate() + ", Pay: " + ems[i].calculatePay());
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.