这个 UML 图的实现是否正确?

Is this implementation of the UML diagram correct?

Is this implementation of the UML diagram correct?

我正在准备考试,我们的教授没有给我们解决这些任务的方法,因为我们应该自己积极主动,但我仍然希望得到反馈。

我的代码:

public abstract class Employee {
   protected String name;
   protected int salery;
   public Employee(){
      name="";
      salery=0;
   }
   public String toString(){
       return "name: "+name+"salery: "+salery;
   }
}

import java.util.ArrayList;

public class EmployeeList {
    protected ArrayList<Employee> members;

    public EmployeeList(){
         members=new ArrayList<Employee>();
    }

    public String toString(){
        String ret="";
        for(int i=0;i<members.size();i++){
             ret+=members.get(i).toString()+" ";
        }
        return ret;
     }
}
public class Manager extends Employee{
     protected String department;
     public String toString(){
          return department;
     }
}

该代码似乎在实践中有效,因为我已经用以下方法对其进行了测试:

    EmployeeList employeeList=new EmployeeList();

    Manager m1=new Manager();
    Manager m2=new Manager();
    Manager m3=new Manager();

    m1.department="McDonalds";
    m2.department="BigHouse";
    m3.department="Heart";

    System.out.println(m1);

    employeeList.members.add(m1);
    employeeList.members.add(m2);
    employeeList.members.add(m3);

    System.out.println(employeeList);

通常,斜体文本用于表示 class 应该是抽象的。 Employee 是抽象的有什么原因吗?

否则,这似乎是一个公平的实施。

您(应该)因大量 Java 样式错误和 salary 拼写错误 salery 而失去一些分数。是的,这些事情很重要。

您是否应该将字段声明为 private 并提供 protected getter 和 setter 也值得商榷。将 getter 和 setter 放入 UML 图中不是正常的做法。他们有点假设。但是在 Java 中声明非 private 字段是(通常)不好的做法。

最后,Employee不应该是abstract。 (您只能创建 Manager 个对象而不能创建 Employee 个对象甚至没有意义。)


实际上,Java 类(或其他)不需要是 UML 的字面翻译。 UML 是一种设计符号...不是规范语言。