1. 程式人生 > >Java 案例九 員工類系列定義

Java 案例九 員工類系列定義

1題目

某IT公司有多名員工,按照員工負責的工作不同,進行了部門的劃分(研發部員工、維護部員工)。研發部根據所需研發的內容不同,又分為JavaEE工程師、Android工程師;維護部根據所需維護的內容不同,又分為網路維護工程師、硬體維護工程師。

公司的每名員工都有他們自己的員工編號、姓名,並要做它們所負責的工作。

  1. 工作內容
    1. JavaEE工程師:員工號為xxx的 xxx員工,正在研發淘寶網站
    2. Android工程師:員工號為xxx的 xxx員工,正在研發淘寶手機客戶端軟體
    3. 網路維護工程師:員工號為xxx的 xxx員工,正在檢查網路是否暢通
    4. 硬體維護工程師:員工號為xxx的 xxx員工,正在修復印表機

請根據描述,完成員工體系中所有類的定義,並指定類之間的繼承關係。進行XX工程師類的物件建立,完成工作方法的呼叫。

 2案例分析

  1. 根據上述部門的描述,得出如下的員工體系圖

  1. 根據員工資訊的描述,確定每個員工都有員工編號、姓名、要進行工作。則,把這些共同的屬性與功能抽取到父類中(員工類),關於工作的內容由具體的工程師來進行指定。
    1. 工作內容
      1. JavaEE工程師:員工號為xxx的 xxx員工,正在研發淘寶網站
      2. Android工程師:員工號為xxx的 xxx員工,正在研發淘寶手機客戶端軟體
      3. 網路維護工程師:員工號為xxx的 xxx員工,正在檢查網路是否暢通
      4. 硬體維護工程師:員工號為xxx的 xxx員工,正在修復印表機
  2. 建立JavaEE工程師物件,完成工作方法的呼叫
  1. 根據員工體系圖,完成類的定義

       定義員工類(抽象類)

package cn.itcast.demo07;
/*
 * 員工類:
 * 姓名 ,工號 ,
 */
public abstract class Employee {
	private String name;
	private String id;
	
	public void setName(String name){
		this.name = name;
	}
	
	public void setId(String id){
		this.id = id;
	}
	
	public String getName(){
		return name;
	}
	
	public String getId(){
		return id;
	}
	
	public abstract void work();
}
  1. 定義研發部員工類Developer 繼承 員工類Employee
    package cn.itcast.demo07;
    /*
     * 研發類繼承員工類
     */
    public abstract class Develop extends Employee{
    	public abstract void work();
    }
    

     

  2. 定義維護部員工類Maintainer 繼承 員工類Employee
    package cn.itcast.demo07;
    /*
     * 維護類繼承員工類
     */
    public abstract class Maintainer extends Employee{
    	public abstract void work();
    
    }
    

     

  3. 定義JavaEE工程師 繼承 研發部員工類,重寫工作方法
    package cn.itcast.demo07;
    /*
     * JavaEE工程師 繼承 研發部員工類
     */
    public class JavaEE extends Develop {
    	public void work(){
    		System.out.println("員工號為"+getId()+"的"+getName()+"員工,正在研發淘寶網");
    	}
    }
    

     

  4. 定義Android工程師 繼承 研發部員工類,重寫工作方法
    package cn.itcast.demo07;
    /*
     * Android工程師繼承develop類
     */
    public class Android extends Develop{
    	public void work(){
    		System.out.println("員工號為"+getId()+"的"+getName()+"員工,正在研發安卓應用");
    	}
    
    }
    

     

  5. 定義Network網路維護工程師 繼承 維護部員工類,重寫工作方法
    package cn.itcast.demo07;
    /*
     * network工程師正在維護網路
     */
    public class Network extends Maintainer {
    	public void work(){
    		System.out.println("員工號為"+getId()+"的"+getName()+"員工,正在維護網路");
    	}
    }
    

     

  6. 定義Hardware硬體維護工程師 繼承 維護部員工類,重寫工作方法
    package cn.itcast.demo07;
    
    public class Hardware extends Maintainer{
    	public void work(){
    		System.out.println("員工號為"+getId()+"的 "+getName()+" 員工,正在修復印表機");
    	}
    }
    

     

  7. 在測試類中,建立JavaEE工程師物件,完成工作方法的呼叫
    package cn.itcast.demo07;
    
    public class Test {
    	public static void main(String[] args) {
    		//建立JavaEE工程師員工物件
    		JavaEE ee = new JavaEE();
    		//設定該員工的編號
    		ee.setId("000015");
    		//設定該員工的姓名
    		ee.setName("小明");
    		//呼叫該員工的工作方法
    		ee.work();
    		
    		Android aa = new Android();
    		aa.setId("000017");
    		aa.setName("大鵬");
    		aa.work();
    		
    		Network nn = new Network();
    		nn.setId("000016");
    		nn.setName("大明");
    		nn.work();
    		
    		Hardware hh = new Hardware();
    		hh.setId("000018");
    		hh.setName("哈哈");
    		hh.work();
    	}
    }
    

    執行結果: