本帖最后由 小歪 于 2014-3-15 21:56 编辑
/*实现一对一关系*/
/*
简单举例:
一个人对应一本书,一本书对应一个人。
条件:
姓名 年龄 书 价格 孩子 书 价格
张三 30 《Java开发实战经典》 79.8 张小 《一千零一夜》 35.5
要求:代码可由书、父亲、孩子任意一方起遍历所有成员
*/
class Book //定义书(Book)类
{
private String tltic; //书名(封装)
private float price; //价格(封装)
private Pople per; //这本书属于一个人
public Book(String tltic,float price) //构造函数对书名、价格初始化
{
this.setTltic(tltic);
this.setPrice(price);
}
public void setTltic(String t) //修改书名
{
this.tltic=t;
}
public void setPrice(float p) //修改价格
{
this.price=p;
}
public void setPer(Pople pe) //修改所属人
{
this.per=pe;
}
public String getTltic() //获得书名
{
return tltic;
}
public float getPrice() //获得价格
{
return price;
}
public Pople getPer() //获得所属人
{
return per;
}
}
class Pople // 定义人(Pople)类
{
private String name; //姓名(封装)
private int age; //年龄(封装)
private Book book; //这个人拥有一本书
private Pople child; //这个人有一个孩子
private Pople father;
public Pople(String name,int age) //构造函数对姓名、年龄初始化
{
this.setName(name);
this.setAge(age);
}
public void setName(String n) //修改姓名
{
this.name=n;
}
public void setAge(int a) //修改年龄
{
this.age=a;
}
public void setBook(Book b) //修改拥有书
{
this.book=b;
}
public void setChild(Pople per) //修改孩子
{
this.child=per;
}
public void setFather(Pople per) //修改父亲
{
this.father=per;
}
public String getName() //获得姓名
{
return name;
}
public int getAge() //获得年龄
{
return age;
}
public Book getBook() //获得拥有书
{
return book;
}
public Pople getChild() //获得孩子
{
return child;
}
public Pople getFather() //获得父亲
{
return father;
}
}
public class OneToOne
{
public static void main(String[] args)
{
Pople per=new Pople("张三",30); //实例化人:张三
Book bk1=new Book("Java开发实战经典",79.8f); //实例化书1:Java开发实战经典 --> 张三
Pople child=new Pople("张小",8); //实例化孩子:张小 --> 张三
Book bk2=new Book("一千零一夜",35.5f); //实例化书2:一千零一夜 --> 张小
//设置对应关系
per.setBook(bk1);
per.setChild(child);
child.setBook(bk2);
child.setFather(per);
bk1.setPer(per);
bk2.setPer(child);
//由书开始:
System.out.println("由书开始找:\n "+"父亲书名:"+bk1.getTltic()+",父亲书价格:"+bk1.getPrice()+",父亲姓名:"+bk1.getPer().getName()
+",父亲年龄:"+bk1.getPer().getAge()+"\n孩子姓名:"+bk1.getPer().getChild().getName()
+",孩子年龄:"+bk1.getPer().getChild().getAge()+",孩子书名:"+bk1.getPer().getChild().getBook().getTltic()
+",孩子书价格:"+bk1.getPer().getChild().getBook().getPrice());
//由父亲开始:
System.out.println("\n由父亲开始找:\n "+"父亲姓名:"+per.getName()+",父亲年龄:"+per.getAge()+",父亲书名:"+per.getBook().getTltic()
+",父亲书价格:"+per.getBook().getPrice()+"\n孩子姓名:"+per.getChild().getName()+",孩子年龄:"+per.getChild().getAge()
+",孩子书名:"+per.getChild().getBook().getTltic()+",孩子书价格:"+per.getChild().getBook().getPrice());
//由孩子开始:
System.out.println("\n由孩子开始找:\n "+"孩子姓名:"+child.getName()+",孩子年龄:"+child.getAge()+",孩子书名:"+child.getBook().getTltic()
+",孩子书价格:"+child.getBook().getPrice()+"\n父亲姓名:"+child.getFather().getName()+",父亲年龄:"+child.getFather().getAge()
+",父亲书名:"+child.getFather().getBook().getTltic()+",父亲书价格:"+child.getFather().getBook().getPrice());
}
}
运行结果测试:
**********测试成功****
|