Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Employee and ProductionWorkder Classes Design a class named Employee. The class should keep the following information in fields: Employee name Employee number Hire date Write

Employee and ProductionWorkder Classes

Design a class named Employee. The class should keep the following information in fields:

Employee name

Employee number

Hire date

Write one or more constructors and the appropriate accessor and mutator methods for the class.

Next, write a class named ProductionWorker that extends the Employee class. The ProductionWorker class should have fields to hold the following formation:

Shift (an integer)

Hourly pay rate (a double)

The workday is divided into two shifts: day and night. The shift field will be an integer value representing the shift that the employee works. The day shift is shift 1 and the night shift is shift 2. Write one or more constructors and the appropriate accessor and mutator methods for the class.

2. Modify the Employee and ProductionWorker classes so they throw exceptions when the following errors occur:

The Employee class should throw an exception named InvalidEmployeeNumber when it receives an invalid employee number

The ProductionWorker class should throw an exception named InvalidShift when it receives an invalid shift

The ProductionWorker class should throw an exception named InvalidPayRate when it receives a negative number for the hourly pay rate.

For the employee number, I want the exception to be for a 6 digit number

For the InvaildShift, I want it to throw the exception if the user inputs an invalid number ( not 1 or 2)

For the InvalidPayRate it should be used when the user puts a negative number

I have the following:

Employee.java

import java.util.Scanner; // Needed for the Scanner class import java.io.*; // Needed for file classes public class Employee{

private String employeeName; private String employeeNumber; private String hireDate; // default constructor implementation public Employee() { employeeName = ""; employeeNumber = ""; hireDate = ""; } // parameterized constructor implementation public Employee(String empName, String empNumber, String date) { setEmployeeName(empName); setEmployeeNumber(empNumber); setHireDate(date); }

// accessor methods // getEmployeeName method implementation public String getEmployeeName() { return employeeName; }

// getEmployeeNumber method implementation public String getEmployeeNumber() { return employeeNumber; } // getHireDate method implementation public String getHireDate() { return hireDate; } // mutator methods // setEmployeeName method implementation public void setEmployeeName(String empName) { employeeName = empName; }

// setEmployeeNumber method implementation public void setEmployeeNumber(String empNumber) { if(empNumber.length() == 5 && Character.isDigit(empNumber.charAt(0)) && Character.isDigit(empNumber.charAt(1)) && Character.isDigit(empNumber.charAt(2)) && Character.isDigit(empNumber.charAt(3)) && Character.isDigit(empNumber.charAt(4)) && Character.isDigit(empNumber.charAt(5)) && Character.isDigit(empNumber.charAt(6)) ) { employeeNumber = empNumber; } else { employeeNumber = "Invalid number must be 6 digits no more, no less"; } }

// setHireDate method implementation public void setHireDate(String date) { hireDate = date; } // toString method implementation public String toString() { String result = ""; result = "Employee name: " + employeeName + " " + "Employee number: " + employeeNumber + " " + "Employee hire date: " + hireDate; return result; } }

ProductionWorker.java

import java.util.Scanner; // Needed for the Scanner class import java.io.*; // Needed for file classes public class ProductionWorker extends Employee { //set int values to types of shifts public final int NoShift = 0; public final int DShift = 1; public final int NShift = 2; //data fields private int shift; private double hourlyPayRate; // default constructor implementation public ProductionWorker() { super(); shift = NoShift; hourlyPayRate = 0.0; } // parameterized constructor implementation public ProductionWorker(String empName, String empNumber, String date, int sh, double rate) { super(empName, empNumber, date); setShift(sh); setHourlyPayRate(rate); }

// accessor methods // getShift method implementation public int getShift() { return shift; } // getHourlyPayRate method implementation public double getHourlyPayRate() { return hourlyPayRate; }

// mutator methods // setShift method implementation public void setShift(int sh) { if(sh == DShift || sh == NShift) shift = sh; else shift = NoShift; }

// setHourlyPayRate method implementation public void setHourlyPayRate(double rate) { hourlyPayRate = rate; } // toString method implementation public String toString() { String result = ""; result = super.toString() + " "; if(shift == DShift) result += "Shift: Day "; else if(shift == NShift) result += "Shift: Night "; else result += "Shift: Invalid "; result += "Hourly pay rate: " + String.format("$%.2f", hourlyPayRate); return result; } }

ProductionWorkerDemo.java

import java.util.Scanner; public class ProductionWorkerDemo { // start main method public static void main(String[] args) { // create an object for Scanner class Scanner input = new Scanner(System.in); char choice; // repeat the loop until the user wants to exit do { // prompt the user to enter the employee name System.out.print("Enter the employee name: "); String empName = input.nextLine(); // prompt the user to enter the employee number System.out.print("Enter the 6 digit: "); String empNumber = input.nextLine(); // prompt the user to enter the employee hire date System.out.print("Enter the employee hire date: "); String date = input.nextLine(); // prompt the user to enter the employee shift System.out.print("Enter the employee shift (1 for day shift and 2 for night shift): "); int sh = Integer.parseInt(input.nextLine()); // prompt the user to enter the employee hourly pay rate System.out.print("Enter the hourly pay rate: $"); double rate = Double.parseDouble(input.nextLine()); // create an object for ProductionWorker class ProductionWorker worker = new ProductionWorker(empName, empNumber, date, sh, rate); // display the details of the employee System.out.println(" Details of the employee: "); System.out.println(worker); // prompt the user to enter the repetition choice System.out.print(" Do you want to demonstrate another ProductionWorker object? (Y/N): "); choice = input.nextLine().charAt(0); System.out.println(); }while(choice == 'Y' || choice == 'y'); } }

My difficulty is using the custom exceptions in the Demo. Any help will be appreciated :)

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

Database Machine Performance Modeling Methodologies And Evaluation Strategies Lncs 257

Authors: Francesca Cesarini ,Silvio Salza

1st Edition

3540179429, 978-3540179429

More Books

Students also viewed these Databases questions