综合案例---完整的员工类

一、案例介绍

       某IT公司有多名员工,按照员工负责的工作不同,进行了部门的划分(研发部员工、维护部员工)。研发部根据所需研发的内容不同,又分为JavaEE工程师、Android工程师;维护部根据所需维护的内容不同,又分为网络维护工程师、硬件维护工程师。

       公司的每名员工都有他们自己的员工编号、姓名,并要做它们所负责的工作。

  1. 工作内容
    1. JavaEE工程师:员工号为xxx的 xxx员工,正在研发淘宝网站
    2. Android工程师:员工号为xxx的 xxx员工,正在研发淘宝手机客户端软件
    3. 网络维护工程师:员工号为xxx的 xxx员工,正在检查网络是否畅通
    4. 硬件维护工程师:员工号为xxx的 xxx员工,正在修复打印机

     请根据描述,完成员工体系中所有类的定义,并指定类之间的继承关系。进行XX工程师类的对象创建,完成工作方法的调用。

 

二、案例分析

根据上述部门的描述,得出如下的员工体系图

  1. 根据员工信息的描述,确定每个员工都有员工编号、姓名、要进行工作。则,把这些共同的属性与功能抽取到父类中(员工类),关于工作的内容由具体的工程师来进行指定。
    1. 工作内容
      1. JavaEE工程师:员工号为xxx的 xxx员工,正在研发淘宝网站
      2. Android工程师:员工号为xxx的 xxx员工,正在研发淘宝手机客户端软件
      3. 网络维护工程师:员工号为xxx的 xxx员工,正在检查网络是否畅通
      4. 硬件维护工程师:员工号为xxx的 xxx员工,正在修复打印机
  2. 创建JavaEE工程师对象,完成工作方法的调用

 

三、案例代码实现

根据员工体系图,完成类的定义

1、定义员工类(抽象类)

public abstract class Employee {

    private String id;// 员工编号

    private String name; // 员工姓名

   

    //空参数构造方法

    public Employee() {

        super();

    }

    //有参数构造方法

    public Employee(String id, String name) {

        super();

        this.id = id;

        this.name = name;

    }

    public String getId() {

        return id;

    }

    public void setId(String id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    //工作方法(抽象方法)

    public abstract void work();

}

 

2、定义研发部员工类Developer 继承 员工类Employee

public abstract class Developer extends Employee {

    //空参数构造方法

    public Developer() {

        super();

    }

    //有参数构造方法

    public Developer(String id, String name) {

        super(id, name);

    }

}

 

3、定义维护部员工类Maintainer 继承 员工类Employee

public abstract class Maintainer extends Employee {

    //空参数构造方法

    public Maintainer() {

        super();

    }

    //有参数构造方法

    public Maintainer(String id, String name) {

        super(id, name);

    }

}

 

4、定义JavaEE工程师 继承 研发部员工类,重写工作方法

public class JavaEE extends Developer {

    //空参数构造方法

    public JavaEE() {

        super();

    }

    //有参数构造方法

    public JavaEE(String id, String name) {

        super(id, name);

    }

 

    @Override

    public void work() {

        System.out.println("员工号为 " + getId() + " " + getName() + " 员工,正在研发淘宝网站");

    }

}

 

5、定义Android工程师 继承 研发部员工类,重写工作方法

public class Android extends Developer {

    //空参数构造方法

    public Android() {

        super();

    }

    //有参数构造方法

    public Android(String id, String name) {

        super(id, name);

    }

 

    @Override

    public void work() {

        System.out.println("员工号为 " + getId() + " " + getName() + " 员工,正在研发淘宝手机客户端软件");

    }

}

 

6、定义Network网络维护工程师 继承 维护部员工类,重写工作方法

public class Network extends Maintainer {

    //空参数构造方法

    public Network() {

        super();

    }

    //有参数构造方法

    public Network(String id, String name) {

        super(id, name);

    }

 

    @Override

    public void work() {

        System.out.println("员工号为 " + getId() + " " + getName() + " 员工,正在检查网络是否畅通");

    }

}

 

7、定义Hardware硬件维护工程师 继承 维护部员工类,重写工作方法

public class Hardware extends Maintainer {

    //空参数构造方法

    public Hardware() {

        super();

    }

    //有参数构造方法

    public Hardware(String id, String name) {

        super(id, name);

    }

 

    @Override

    public void work() {

        System.out.println("员工号为 " + getId() + " " + getName() + " 员工,正在修复打印机");

    }

}

 

8、在测试类中,创建JavaEE工程师对象,完成工作方法的调用

public class Test {

    public static void main(String[] args) {

        //创建JavaEE工程师员工对象,该员工的编号000015员工的姓名 小明

        JavaEE ee = new JavaEE("000015", "小明");

        //调用该员工的工作方法

        ee.work();

    }

}