Question: Answer The Questions and refractor this code Refactor the code to do the following using the following code: A. Intern class will extend the Employee

Answer The Questions and refractor this code

Refactor the code to do the following using the following code:

A. Intern class will extend the Employee class.

B. Manager class will extend the Employee class.

2. Fix the code in the Intern and Manager class to remove duplicate code.

3. Update the toString methods in the Intern and Manager class to call their super class' toString to reduce duplicate text.

4. In the Company class, refactor the code to have 1 ArrayList of the superclass instead of 3 different ArrayLists.

5. Update the add and remove methods in the Company class.

6. Add an additional field to the Employee class. A variable to store their email address.

7. Update all of the constructors based on the previous changes.

8. Update the main method based on the previous changes.

___________________________________________

Using this code

company code:

import java.util.ArrayList; /** * * */ public class Company { private String name; private ArrayList employees; private ArrayList managers; private ArrayList interns; Company(String name) { this.name = name; employees = new ArrayList<>(); managers = new ArrayList<>(); interns = new ArrayList<>(); } public ArrayList getEmployees() { return employees; } public void setEmployees(ArrayList employees) { this.employees = employees; } public void addIntern(Intern intern) { this.interns.add(intern); } public void removeIntern(int index) { this.interns.remove(index); } public void addEmployee(Employee employee) { this.employees.add(employee); } public void removeEmployee(int index) { this.employees.remove(index); } public void addManager(Manager manager) { this.managers.add(manager); } public void removeManager(int index) { this.managers.remove(index); } public void removeManager(Manager manager) { this.managers.remove(manager); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Company{name=").append(name); sb.append(", employees=["); for (Employee employee : employees) { sb.append(employee).append(" "); } sb.append("], managers=["); for (Manager mngr : managers) { sb.append(mngr).append(" "); } sb.append("], interns=["); for (Intern intern : interns) { sb.append(intern).append(" "); } sb.append("]}"); return sb.toString(); } public static void main(String[] args) { Employee emp1 = new Employee("Employee 1", "emp001", 1.23); Manager mngr1 = new Manager("Manager 1", "emp002", 3.45); Intern intern1 = new Intern("Intern 1", "empy003", 0, mngr1); Manager mngr2 = new Manager("Manager 2", "emp004", 4.56); Intern intern2 = new Intern("Intern 2", "emp005", 0.50, mngr1); Intern intern3 = new Intern("Intern 3", "emp006", 1, mngr2); Company apple = new Company("Apple"); mngr1.addIntern(intern1); mngr1.addIntern(intern2); mngr2.addIntern(intern3); apple.addEmployee(emp1); apple.addIntern(intern1); apple.addIntern(intern2); apple.addIntern(intern3); apple.addManager(mngr1); apple.addManager(mngr2); System.out.println(apple); } 

Employee Code:

/** * * */ public class Employee { private String fullName; private String empNum; private double salary; public String companyName; Employee(String name, String numb, double salary) { fullName = name; empNum = numb; this.salary = salary; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getEmpNum() { return empNum; } public void setEmpNum(String empNum) { this.empNum = empNum; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } @Override public String toString() { return "Employee{" + "fullName=" + fullName + ", empNum=" + empNum + ", salary=" + salary + '}'; } } 
/** * * */ public class Intern { private String fullName; private String empNum; private double salary; private Manager manager; Intern(String name, String numb) { fullName = name; empNum = numb; salary = 0; manager = null; } Intern(String name, String numb, double salary, Manager mngr) { fullName = name; empNum = numb; this.salary = salary; manager = mngr; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getEmpNum() { return empNum; } public void setEmpNum(String empNum) { this.empNum = empNum; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Manager getManager() { return manager; } public void setManager(Manager manager) { this.manager = manager; } @Override public String toString() { setFullName("Seth VOlpe"); String name = getFullName(); return "Intern{" + "fullName=" + name + ", empNum=" + empNum + ", salary=" + salary + ", manager=" + manager.getFullName() + '}'; } } 

Intern Code:

 /** * * */ public class Intern { private String fullName; private String empNum; private double salary; private Manager manager; Intern(String name, String numb) { fullName = name; empNum = numb; salary = 0; manager = null; } Intern(String name, String numb, double salary, Manager mngr) { fullName = name; empNum = numb; this.salary = salary; manager = mngr; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getEmpNum() { return empNum; } public void setEmpNum(String empNum) { this.empNum = empNum; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Manager getManager() { return manager; } public void setManager(Manager manager) { this.manager = manager; } @Override public String toString() { setFullName("Seth VOlpe"); String name = getFullName(); return "Intern{" + "fullName=" + name + ", empNum=" + empNum + ", salary=" + salary + ", manager=" + manager.getFullName() + '}'; } }

Manager Code:

import java.util.ArrayList; /** * * */ public class Manager { private String fullName; private String empNum; private double salary; private ArrayList interns; Manager(String name, String numb, double salary) { fullName = name; empNum = numb; this.salary = salary; interns = new ArrayList<>(); } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getEmpNum() { return empNum; } public void setEmpNum(String empNum) { this.empNum = empNum; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public void addIntern(Intern intern) { this.interns.add(intern); } public void removeIntern(int index) { this.interns.remove(index); } /** * * @return */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Manager{fullName=").append(fullName); sb.append(", empNum=").append(empNum); sb.append(", salary=").append(salary); sb.append(", interns=["); for (Intern intern : interns) { sb.append(intern.getFullName()).append(" "); } sb.append("]}"); return sb.toString(); } } 

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!