Instructions Files you need to submit: Department.java, Employee.java, Consultan
ID: 3911125 • Letter: I
Question
Instructions
Files you need to submit: Department.java, Employee.java, Consultant.java, and SalariedEmployee.java.
Use the UML EmployeeUML to implement the four classes: Department, Employee, Consultant, and SalariedEmployee. Use the provided EmployeeTest to test your implementation.
If implemented correctly, the output of your program should look exactly like the following:
Executive 100
Research 112
Engineering 115
Production 120
Accounting 122
100 Steve Jobs Executive 100 1.0E8
200 Bill Joy Research 112 3.0E7
300 James Gosling Engineering 115 3.0E7
1100 Craig McClanahan Production 120 25000.0
400 Kevin Malone Accounting 122 5156700.0
Research 112
===========================================================
Provided files
depts text file
Executive 100
Research 112
Engineering 115
Production 120
Accounting 122
==================================
Provided EmployeeTest.java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class EmployeeTest {
public static void main(String[] args) {
ArrayList<Department> depts = readDepartmentsFromFile("depts.txt");
displayDepartments(depts);
ArrayList<Employee> company = new ArrayList<>();
populateEmployeeArray(company, depts);
// Display everyone's pay w/o referring to the subclasses (i.e., using Employee only)
for (Employee e : company) {
System.out.println(e);
}
// Display all departments that are equal to this one:
Department d1 = new Department("Research", 112);
for (Department d : depts) {
if (d1.equals(d)) {
System.out.println(d);
}
}
// Display all departments that are equal to this one:
Department d2 = new Department("Accounting", 50);
for (Department d : depts) {
if (d2.equals(d)) {
System.out.println(d);
}
}
}
private static void displayDepartments(ArrayList<Department> list) {
// Display the list to standard error (NOT standard output)
for (Department d : list) {
System.err.println(d);
}
}
private static ArrayList<Department> readDepartmentsFromFile(String filename) {
ArrayList<Department> list = new ArrayList<>();
File file = new File(filename);
Scanner sc = null;
try {
sc = new Scanner(file);
while (sc.hasNext()) {
String dept = sc.next();
int building = sc.nextInt();
list.add(new Department(dept, building));
}
} catch (FileNotFoundException e) {
System.err.println("Department file not found: " + e.getMessage());
} finally {
if (sc != null) {
sc.close();
}
}
return list;
}
public static void populateEmployeeArray(ArrayList<Employee> array,
ArrayList<Department> departments) {
SalariedEmployee exec = new SalariedEmployee(100, "Steve", "Jobs",
departments.get(0), 100000000);
SalariedEmployee architect = new SalariedEmployee(200, "Bill", "Joy",
departments.get(1), 30000000);
SalariedEmployee engineer = new SalariedEmployee(300, "James",
"Gosling", departments.get(2), 30000000);
Consultant consultant = new Consultant(1100, "Craig", "McClanahan",
departments.get(3), 25000);
SalariedEmployee accountant = new SalariedEmployee(400, "Kevin",
"Malone", departments.get(4), 5156700);
array.add(exec);
array.add(architect);
array.add(engineer);
array.add(consultant);
array.add(accountant);
}
}
Executive 100
Research 112
Engineering 115
Production 120
Accounting 122
100 Steve Jobs Executive 100 1.0E8
200 Bill Joy Research 112 3.0E7
300 James Gosling Engineering 115 3.0E7
1100 Craig McClanahan Production 120 25000.0
400 Kevin Malone Accounting 122 5156700.0
Research 112
Explanation / Answer
Below are your classes.
Department.java
public class Department {
private String name;
private int buildingNumber;
public Department(String dept, int id) {
this.name = dept;
this.buildingNumber = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBuildingNumber() {
return buildingNumber;
}
public void setBuildingNumber(int buildingNumber) {
this.buildingNumber = buildingNumber;
}
public String toString() {
return this.name + " " + this.buildingNumber;
}
}
Employee.java
public class Employee {
private int badgeNumber;
private String firstName;
private String lastName;
private Department department;
public Employee(int bNo, String fName, String lName, Department dept) {
this.badgeNumber = bNo;
this.firstName = fName;
this.lastName = lName;
this.department = dept;
}
public int getBadgeNumber() {
return badgeNumber;
}
public void setBadgeNumber(int badgeNumber) {
this.badgeNumber = badgeNumber;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public String toString() {
return this.badgeNumber + " " + this.firstName + " " + this.lastName + " " + this.department;
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + badgeNumber;
result = prime * result + ((department == null) ? 0 : department.hashCode());
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
return result;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Employee)) {
return false;
}
Employee other = (Employee) obj;
if (badgeNumber != other.badgeNumber) {
return false;
}
if (department == null) {
if (other.department != null) {
return false;
}
} else if (!department.equals(other.department)) {
return false;
}
if (firstName == null) {
if (other.firstName != null) {
return false;
}
} else if (!firstName.equals(other.firstName)) {
return false;
}
if (lastName == null) {
if (other.lastName != null) {
return false;
}
} else if (!lastName.equals(other.lastName)) {
return false;
}
return true;
}
}
Consultant.java
public class Consultant extends Employee {
private double hourlyRate;
public Consultant(int bNo, String fName, String lName, Department dept) {
super(bNo, fName, lName, dept);
}
public Consultant(int bNo, String fName, String lName, Department dept, double rate) {
super(bNo, fName, lName, dept);
this.hourlyRate = rate;
}
public double getHourlyRate() {
return hourlyRate;
}
public String toString() {
return super.toString()+ " "+hourlyRate;
}
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
long temp;
temp = Double.doubleToLongBits(hourlyRate);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof Consultant)) {
return false;
}
Consultant other = (Consultant) obj;
if (Double.doubleToLongBits(hourlyRate) != Double.doubleToLongBits(other.hourlyRate)) {
return false;
}
return true;
}
}
SalariedEmployee.java
public class SalariedEmployee extends Employee{
private double annualSalary;
public SalariedEmployee(int bNo, String fName, String lName, Department dept) {
super(bNo, fName, lName, dept);
}
public SalariedEmployee(int bNo, String fName, String lName, Department dept, double rate) {
super(bNo, fName, lName, dept);
this.annualSalary = rate;
}
public double getAnnualSalary() {
return annualSalary;
}
public String toString() {
return super.toString()+ " "+annualSalary;
}
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
long temp;
temp = Double.doubleToLongBits(annualSalary);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof SalariedEmployee)) {
return false;
}
SalariedEmployee other = (SalariedEmployee) obj;
if (Double.doubleToLongBits(annualSalary) != Double.doubleToLongBits(other.annualSalary)) {
return false;
}
return true;
}
}