数据表和简单的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());
            }
        }

    }

}

猜你喜欢

转载自blog.csdn.net/guohaocan/article/details/81363158
今日推荐