У меня есть вопрос относительно программы, которую я делаю для школы. Я должен сделать следующее:
Написать программу Java, которая использует классы декоратора для расширения возможностей сотрудников. В типичной компании сотруднику будет предложено выполнить ряд обязанностей, таких как руководитель департамента, координатор по безопасности, рекрутер или сотрудник сообщества Liason. У вас должны быть дополнительные, кроме тех. Ваша Java программа создаст Employees, а затем украсит этих сотрудников во время выполнения.
Создайте абстрактный класс с именем Employee, с полями фамилии и описания и методом getDescription (). Создайте конкретный класс с именем SalariedEmployee, который расширяет Employee. Создайте абстрактный класс с именем ResponsibilityDecorator, который может украшать сотрудника и возвращать ответственность сотрудника в виде строки. У него будет абстрактный метод getDescription. Создайте несколько классов категорий заданий, которые расширяют класс ResponsibilityDecorator и реализуют метод getDescription ().
В основной тестовой программе создайте не менее 5 объектов Employee и передайте их конструкторам каждого из ваших классов декораторов. Первым сотрудником должен быть вы, поэтому используйте свою фамилию. Затем распечатайте каждого сотрудника, вызвав его метод getDescription (). Все сотрудники не должны иметь одинаковое количество обязанностей. Вывод программы должен выглядеть примерно так для каждого:
[LastName]: менеджер, рекрутер, CommunityLiaison, ProductionDesigner
Вот что я сделал до сих пор:
Сотрудник. java:
import java.util.*;
public abstract class Employee
{
String lastName, description;
public String getDescription()
{
return description;
}
}
SalariedEmployee. java:
import java.util.*;
public abstract class SalariedEmployee extends Employee
{
String lastName, description;
public abstract String getDescription();
}
ResponsibilityDecorator. java:
import java.util.*;
public abstract class ResponsibilityDecorator
{
public String getDescription()
{
return employee.getDescription();
}
Employee employee;
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public boolean equals(Object obj) {
return employee.equals(obj);
}
public int hashCode() {
return employee.hashCode();
}
public String toString() {
return employee.toString();
}
public ResponsibilityDecorator(Employee employee) {
super();
this.employee = employee;
}
public ResponsibilityDecorator() {
super();
// TODO Auto-generated constructor stub
}
}
Родригес. java (первый класс сотрудника)
import java.util.*;
public abstract class Rodriguez extends ResponsibilityDecorator
{
Employee employee1;
String lastName = "Rodriguez";
String description = "Tech Support";
public Rodriguez (Employee employee1)
{
this.employee = employee;
}
public String getDescription()
{
return description;
}
}
Доу. java (второй класс сотрудника):
import java.util.*;
public abstract class Doe extends ResponsibilityDecorator
{
Employee employee2;
String lastName = "Doe";
String description = "Security Guard, Police Officer";
public Doe (Employee employee2)
{
this.employee = employee;
}
public String getDescription()
{
return description;
}
}
Джилл. java (третий объект сотрудника):
import java.util.*;
public abstract class Doe extends ResponsibilityDecorator
{
Employee employee2;
String lastName = "Doe";
String description = "Security Guard, Police Officer";
public Doe (Employee employee2)
{
this.employee = employee;
}
public String getDescription()
{
return description;
}
}
Мария. java (четвертый класс сотрудника):
import java.util.*;
public abstract class Maria extends ResponsibilityDecorator
{
Employee employee4;
String lastName = "Maria";
String description = "Receptionist, Valet, Cashier, Restock";
public Maria (Employee employee4)
{
this.employee = employee;
}
public String getDescription()
{
return description;
}
}
Джеймс. java (пятый класс сотрудника):
import java.util.*;
public abstract class James extends ResponsibilityDecorator
{
Employee employee5;
String lastName = "James";
String description = "Manager, CEO, Economy, President, Analytics";
public James (Employee employee5)
{
this.employee = employee;
}
public String getDescription()
{
return description;
}
}
Тест. java:
import java.util.*;
public class Test
{
public static void main(String[] args)
{
Employee employee1 = new Rodriguez();
System.out.println("Rodriguez:" +
employee1.getDescription());
Employee employee2 = new Doe();
System.out.println("Doe" +
employee2.getDescription());
Employee employee3 = new Jill();
System.out.println("Jill:" +
employee3.getDescription());
Employee employee4 = new Maria();
System.out.println("Maria:" +
employee4.getDescription());
Employee employee5 = new James();
System.out.println("James:" +
employee5.getDescription());
}
}
По какой-то причине он показывает ошибку несоответствия типов. Я искал по Inte rnet и даже спросил некоторых людей. Я перепробовал много исправлений, но они просто создают другую ошибку. Я не знаю, как решить эту проблему.