面向对象基本概念简单了解——2018年4月21日(心得笔记)

数据表与简单Java类映射

    现在假设有如下的关系表,现在要求实现如下的数据关联操作:
        一个部门有多个雇员;

        一个雇员有一个或零个领导;

程序关系

    在本程序中可以发现Emp与Dept类之间存在有如下的引用关系定义:
        一个雇员属于一个部门,应该在雇员里面保存部门信息,所以在Emp类中定义有一个dept属性,如果有部门则设置一个Dept类的实例化对象,否则设置为null;
        一个部门有多个雇员,如果要描述多这个概念应该使用对象数组完成。所以在Dept类中增加一个Emp类的对象数组(Emp emps []);
        一个雇员有一个领导,领导信息也就是雇员信息,应该在Emp类中增加领导的自身关联(Emp mgr);
        此时的两个简单Java类已经可以完整的描述出数据表的结构定义,随后将根据结构设置并取得数据,要求可以完成如下的信息输出:
        可以根据一个雇员查询他所对应的领导信息和部门信息;

        可以根据一个部门取出所有的雇员以及每个雇员的领导信息;

PS:(中间为了省事,用系统的构造方法;红色的都是很经典的数据链)

package com.smxy;

import java.util.Arrays;

class Dept{
	private int id;
	private String name;
	private String loc;
	private Emp emps[];
	public Dept(int id, String name, String loc) {
		// TODO Auto-generated constructor stub
		this.id=id;
		this.name=name;
		this.loc=loc;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	public Emp[] getEmps() {
		return emps;
	}
	public void setEmps(Emp[] emps) {
		this.emps = emps;
	}
	@Override
	public String toString() {
		return "Dept [id=" + id + ", name=" + name + ", loc=" + loc +  "]";
	}
	
	
}
class Emp{
	private int id;
	private String ename;
	private String job;
	private double sal;
	private double comm;
	private Dept dept;
	private Emp mar;
	public Emp(int id, String ename, String job, double sal, double comm) {
		super();
		this.id = id;
		this.ename = ename;
		this.job = job;
		this.sal = sal;
		this.comm = comm;
	}
	
	public Emp getMar() {
		return mar;
	}

	public void setMar(Emp mar) {
		this.mar = mar;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public double getSal() {
		return sal;
	}
	public void setSal(double sal) {
		this.sal = sal;
	}
	public double getComm() {
		return comm;
	}
	public void setComm(double comm) {
		this.comm = comm;
	}
	public Dept getDept() {
		return dept;
	}
	public void setDept(Dept dept) {
		this.dept = dept;
	}
	@Override
	public String toString() {
		return "Emp [id=" + id + ", ename=" + ename + ", job=" + job + ", sal="
				+ sal + ", comm=" + comm + "]";
	}
	
}
public class Lei {
    public static void main(String args[]) {
    	Dept dept = new Dept(10,"ABC","beijing");
    	Emp ea = new Emp(1,"李华","员工",800.0,100.0);
    	Emp eb = new Emp(2,"张三","经理",12800.0,10000.0);
    	Emp ec = new Emp(3,"王五","CEO",18800.0,100000.0);
    	ea.setMar(eb);//李华的上司张三
    	eb.setMar(ec);//张三的上司王五
    	System.out.println(ea.getMar().toString());
    	System.out.println(ea.getMar().getMar().toString());
    	System.out.println("--------------------------------");
    	dept.setEmps(new Emp[]{ea,eb,ec});
    	for(int i=0;i<dept.getEmps().length;i++){
    		System.out.println(dept.getEmps()[i].toString());
    		if(dept.getEmps()[i].getMar()!=null){
    			System.out.println("\t"+dept.getEmps()[i].getMar().toString());
    		}
    	}
    }
}

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值