Java简单类——双向一对多映射
class Item { // 父栏目
private int iid ;
private String name ;
private String note ;
private Subitem subitems [] ; //一个父栏目下有多个子栏目
private Product products [] ; //一个栏目下包含多个商品
public Item(int iid,String name,String note) {
this.iid = iid ;
this.name = name ;
this.note = note ;
}
public void setSubitems(Subitem subitems[]) {
this.subitems = subitems ;
}
public void setProducts(Product[] products) {
this.products = products ;
}
public Product[] getProducts() {
return this.products ;
}
public Subitem [] getSubitems() {
return this.subitems ;
}
public String getInfo() {
return "栏目编号:" + this.iid + ",名称:" + this.name + ",描述:" + this.note ;
}
}
class Subitem { // 子栏目
private int sid ;
private String name ;
private String note ;
private Item item ; // 一个子栏目对应一个父栏目
private Product products [] ; //一个子栏目下包含多个商品
public Subitem(int sid,String name,String note) {
this.sid = sid ;
this.name = name ;
this.note = note ;
}
public void setItem(Item item) {
this.item = item ;
}
public Item getItem() {
return this.item ;
}
public void setProducts(Product products[]) {
this.products = products ;
}
public Product[] getProducts() {
return this.products ;
}
public String getInfo() {
return "子栏目编号:" + this.sid + ",名称:" + this.name + ",描述:" + this.note ;
}
}
class Product { // 商品
private int pid ;
private String name ;
private double price ;
private Item item ;
private Subitem subitem ;
public Product(int pid,String name,double price) {
this.pid = pid ;
this.name = name ;
this.price = price ;
}
public void setItem(Item item) {
this.item = item ;
}
public Item getItem() {
return this.item ;
}
public void setSubitem(Subitem subitem) {
this.subitem = subitem ;
}
public Subitem getSubitem() {
return this.subitem ;
}
public String getInfo() {
return "商品编号:" + this.pid + ",名称:" + this.name + ",价格:" + this.price ;
}
}
public class TestISP {
public static void main(String args[]){
//准备出单独的类对象
Item item = new Item(1,"文具","-") ;
Subitem suba = new Subitem(1001,"笔","-") ;
Subitem subb = new Subitem(1002,"尺","-") ;
Subitem subc = new Subitem(1003,"刀","-") ;
Product proa = new Product(90001,"中性笔",2.0) ;
Product prob = new Product(90002,"钢笔",10.0) ;
Product proc = new Product(90003,"毛笔",8.0) ;
Product prod = new Product(90004,"直尺",2.0) ;
Product proe = new Product(90005,"三角尺",1.5) ;
Product prof = new Product(90006,"美工刀",5.0) ;
Product prog = new Product(90007,"剪刀",6.0) ;
//设置类之间的引用关系
suba.setItem(item) ;
subb.setItem(item) ;
subc.setItem(item) ;
item.setSubitems(new Subitem[]{suba,subb,subc}) ;
proa.setSubitem(suba) ;
proa.setItem(item) ;
prob.setSubitem(suba) ;
prob.setItem(item) ;
proc.setSubitem(suba) ;
proc.setItem(item) ;
prod.setSubitem(subb) ;
prod.setItem(item) ;
proe.setSubitem(subb) ;
proe.setItem(item) ;
prof.setSubitem(subc) ;
prof.setItem(item) ;
prog.setSubitem(subc) ;
prog.setItem(item) ;
suba.setProducts(new Product[] {proa,prob,proc}) ;
subb.setProducts(new Product[] {prod,proe}) ;
subc.setProducts(new Product[] {prof,prog}) ;
item.setProducts(new Product[] {proa,prob,proc,prod,proe,prof,prog}) ;
//取出数据
//1、通过一个类型找到全部的子类型
System.out.println(item.getInfo()) ;
for (int x = 0;x <item.getSubitems().length ;x ++ ){
System.out.println("\t|-" + item.getSubitems()[x].getInfo()) ;
}
System.out.println("--------------------------------------------------------------") ;
System.out.println(item.getInfo()) ;
for (int x = 0;x <item.getProducts().length ;x ++ ){
System.out.println("\t|-" + item.getProducts()[x].getInfo()) ;
System.out.println("\t|-" + item.getProducts()[x].getSubitem().getInfo()) ;
}
System.out.println("--------------------------------------------------------------") ;
System.out.println(subb.getInfo()) ;
for (int x = 0;x <subb.getProducts().length ;x ++ ){
System.out.println("\t|-" + subb.getProducts()[x].getInfo()) ;
}
}
}
第一次写上百行的代码啊QAQ,中间报错了几次折腾了好久才发现是尼玛设定set和get方法时竟然不知道怎么的把public写成了private,晕死,以后就知道了。错误如下图
最终完成时运行结果如下
Java简单类——双向一对多映射的更多相关文章
- Java简单类——一对多映射(省、市)
class Province { private int pid ; private String name ; private City cities [] ; public Province (i ...
- java 简单类
package 面向对象编程_封装性; //1.类名称必须存在有意义,例如Book.Emp //2.类之中所有的属性必须用private封装,封装后的属性必须提供有setter和getter方法 // ...
- 第四周总结和实验二Java简单类与对象
实验目的 掌握类的定义,熟悉属性.构造函数.方法的使用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实列的方法和属性: 理解static修饰对类. ...
- 第四周课程总结与第二次实验报告(Java简单类与对象)
1.写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求该类具有: ...
- Java简单类——多对多映射
class Admin { private String aid ; private String password ; private Role role ; public Admin(String ...
- Java简单类(部门、领导、雇员关系)
class Dept { private int deptno ; private String dname ; private String loc ; private Emp emps [] ; ...
- 菜鸡的Java笔记 - java 双向一对多映射
双向一对多映射 two-way 开发要求: 根据数据表的结构进行简单java类的转换: 要求实现如下的输出信息: 可以根据课程取得全部参与 ...
- Java File类的简单使用
Java File的简单使用(创建.删除.遍历.判断是否存在等) Java文件类以抽象的方式代表文件名和目录路径名.该类本身不能用来读数据或写数据,它主要用于磁盘上文件和目录的创建.文件的查找和文件的 ...
- java时间类简单总结
java时间类(Data类) 1.Data类(没有考虑到国际化,好多方法已过时java.util.Data包中) 父类(是类不是接口含有直接子类3个): 日期格式为:年月日时分秒(不包含毫秒部分) ...
随机推荐
- POJ1904 King's Quest(完备匹配可行边:强连通分量)
题目大概就是说给一张二分图以及它的一个完备匹配,现在问X部的各个点可以与Y部那些些点匹配,使得X部其余点都能找到完备匹配. 枚举然后匹配,当然不行,会超时. 这题的解法是,在二分图基础上建一个有向图: ...
- node.js链接mysql
node.js连接数据库有很多种,比如:mongoose,oracle,mysql...,我自己玩就选了一个我很熟悉的轻量级的mysql数据库尝试了一把,感觉不错. 首先要把mysql客户端安装好,官 ...
- iOS开发代码规范(通用)
1. 关于命名 1> 统一要求 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释 使用全称,不适用缩写 2> 类的命名 大驼峰式命名:每个单词的首字母都采用大写字母 例子:M ...
- [转]linux下svn命令大全
FROM:http://www.jb51.net/os/RedHat/2461.html 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:s ...
- eclipse 高亮配对的括号
在编辑代码框右键->preference,直接就可以看到Matching brackets highlights
- OpenResty 简单编写一个Module
使用 Lua module 来进行 Lua 代码的复用是推荐的做法.然后在用户代码中直接用require()来调用 module代码: local myTest = {} function myTes ...
- [杂谈] My Wikipedia
// 此博文为迁移而来,写于2015年6月8日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w3de.html
- [Cocos2d-x For WP8]DrawPrimitives画图
在Silverlight框架的WP8应用程序里面,我们画几何图形的时候会通过Line等等的类在用C#代码或者在XAML上画图,那么在Cocos2d-x For WP8里面我们一样也可以实现这样的功能. ...
- Linux_CentOS6.5安装vncserver实现图形化访问
一. 安装gnome图形化桌面 #yum groupinstall -y "X Window System" #yum groupinstall -y "Desktop& ...
- viso 由于形状保护和/或图层属性设置不能进行编辑
viso 由于形状保护和/或图层属性设置不能进行编辑 2003: 若要变通解决此问题,删除 从删除 的保护属性,当您尝试删除一个受保护的组件.若要这样做,请按照下列步骤操作:在 Visio 2003或 ...