6.15 一对多映射转换

class Dept {// 部门类
    private long deptno;
    private String dname;
    private String loc;
    private Emp emps[];
    public Dept(long deptno,String dname,String loc){
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    public void setEmps(Emp[] emps){
        this.emps = emps;
    }
    public Emp[] getEmps(){
        return this.emps;
    }
    public String getInfo(){
        return "【部门信息】部门编号:" + this.deptno + ",部门名称:" + this.dname + ",部门位置:" + this.loc;
    }
}

class Emp {// 雇员类
    private long empno;
    private String ename;
    private String job;// 职位
    private double sal;//工资
    private double comm;// 雇员佣金
    private Dept dept;
    private Emp mgr;// 所属领导
    public Emp(long empno,String ename,String job,double sal,double comm){
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.sal = sal;
        this.comm = comm;
    }
    public String getInfo(){
        return "【雇员信息】编号:" + this.empno + ",姓名:" + this.ename + ",职位:" + this.job + ",工资:" + this.sal + ",佣金:" + this.comm;
    }
    public void setDept(Dept dept){//设置部门引用
        this.dept = dept;
    }
    public void setMgr(Emp mgr){//设置领导引用
        this.mgr = mgr;
    }
    public Dept getDept(){// 获取部门引用
        return this.dept;
    }
    public Emp getMgr(){// 获取领导引用
        return this.mgr;
    }
}


public class HelloWorld {
    public static void main(String[] args){
        Dept dept = new Dept(10,"mldn教学部","北京");
        Emp empA = new Emp(7369L,"SMITH","CLERK",800.00,0.0);
        Emp empB = new Emp(7333L,"FORD","MANSGER",2800.00,0.0);
        Emp empC = new Emp(7222L,"KING","PRESIDENT",3800.00,0.0);
        empA.setDept(dept);
        empB.setDept(dept);
        empC.setDept(dept);

        empA.setMgr(empB);
        empB.setMgr(empC);
        dept.setEmps(new Emp[]{empA,empB,empC});
        System.out.println(dept.getInfo());

        for(int x = 0;x < dept.getEmps().length;x++){
            System.out.println("\t-" + dept.getEmps()[x].getInfo());// 雇员信息
            if(dept.getEmps()[x].getMgr() != null){// 该雇员存在领导
                System.out.println("\t\t|-" + dept.getEmps()[x].getMgr().getInfo());
            }
        }
        
        System.out.println("----------");
        System.out.println(empB.getDept().getInfo());
        System.out.println(empB.getMgr().getInfo());
    }

}

// 任何的人类的产品都是可以拆分,而后进行重新组合,所以这样的设计在java中被称为合成设计模式;

posted @   盘思动  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示