數據表和簡單的Java類映射 “引用傳遞的實際應用”

//部門類
class Dept{
    private int deptno;//部門編號
    private String dname;//部門名稱
    private String loc;//部門位置

    private Emp emps[];//“引用關係” 多個僱員,描述多這個概念應該使用對象數組進行完成

    //明確定義一個無參構造
    public Dept(){      
    }
    public Dept(int deptno,String dname,String loc){//有參構造
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    //setter方法
    public void setDeptno(int d){
        this.deptno = d;
    }
    public void setDname(String n){
        this.dname = n;
    }
    public void setLoc(String l){
        this.loc = l;
    }
    //對象數組的setter方法
    public void setEmp(Emp[] e){
        this.emps = e ;
    }
    //getter方法
    public int getDeptno(){
        return deptno;
    }
    public String getDname(){
        return dname;
    }
    public String getLoc(){
        return loc;
    }
    //對象數組的getter方法
    public Emp[] getEmp(){
        return emps;
    }
    //取得完整信息
    public String getInfo(){
        return "部門編號:" + this.deptno + ",名稱:" + this.dname + ",位置:" + this.loc;
    }

}
//員工類
class Emp{
    private int empno;
    private String ename ;
    private String job ;
    private double sal;
    private double comm ;

    private Dept dept;//“引用關係” 在僱員裏面保存部門信息

    private Emp mgr;//“引用關係” 在僱員裏面設置領導信息

    public Emp(){//無參構造
    }
    public Emp(int empno,String ename, String job, double sal, double comm){//有參構造
        this.empno = empno;
        this.ename = ename ;
        this.job = job;
        this.sal = sal ;
        this.comm = comm ;
    }
    //setter方法
    public void setEmpno(int e){
        this.empno = e;
    }
    public void setEname(String n){
        this.ename = n ;
    }
    public void setJob(String j){
        this.job = j ;
    }
    public void setSal(double s){
        this.sal = s ;
    }
    public void setComm(double c){
        this.comm = c ;
    }

    public void setMgr(Emp m){
        this.mgr = m;
    }
    public void setDept(Dept d){
        this.dept = d;
    }

    //getter方法
    public int getEmpno(){
        return empno;
    }
    public String getEname(){
        return ename;
    }
    public String getJbo(){
        return job;
    }
    public double getSal(){
        return sal;
    }
    public double getComm(){
        return comm;
    }

    public Emp getMgr(){
        return mgr;
    }
    public Dept getDept(){
        return dept;
    }

    public String getInfo(){//取得完整信息
        return "僱員編號:" + this.empno + ",姓名:" + this.ename + ",職位:" + this.job + ",工資:" + this.sal + ",佣金:" + this.comm ;
    }
}
//測試類,設置數據並取出
public class TestDemo {

    public static void main(String[] args) {
        // 產生各自的獨立對象,設置數據
        Dept dept = new Dept(10,"ACCOUNTING","New York");
        Emp ea = new Emp(1234,"Yiyao","CLERK",900.0,0.0);
        Emp eb = new Emp(1235,"Acan", "MANAGER",4000.0,9.0);
        Emp ec = new Emp(1236,"Dramatic","PRESIDENT",9000.0,80.0);
        //設置僱員和領導關係
        ea.setMgr(eb);
        eb.setMgr(ec);
        //設置僱員和部門關係
        ea.setDept(dept);
        eb.setDept(dept);
        ec.setDept(dept);
        //部門與僱員
        dept.setEmp(new Emp[]{ea,eb,ec});

        //取得數據
        System.out.println(ea.getInfo());
        System.out.println("\t|-" + ea.getMgr().getInfo());
        System.out.println("\t|-" + ea.getDept().getInfo());

        System.out.println("-----------------------------------------");//分割線

        System.out.println(dept.getInfo());
        for(int x = 0; x < dept.getEmp().length; x++){
            System.out.println("\t|-" + dept.getEmp()[x].getInfo());
            if(dept.getEmp()[x].getMgr() != null){
                System.out.println("\t\t|-" + dept.getEmp()[x].getMgr().getInfo());
            }
        }

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章