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个): 日期格式为:年月日时分秒(不包含毫秒部分) ...
随机推荐
- iOS 'The sandbox is not sync with the Podfile.lock错误
出现以下错误时, diff: /../Podfile.lock: No such file or directory diff: Manifest.lock: No such file or dire ...
- iOS UITextField的returnkey点击事件
关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理.我经过搜索与摸索,找到了最佳的处理办法.(引用的) ...
- CF#335 Sorting Railway Cars
Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- BZOJ3569 : DZY Loves Chinese II
这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4 那道题的做法是: 取一个生成树,对每条非树边取一个随机权值, 对每条树边设为“覆盖它的所有非树边”的权值的xor ...
- 关于c语言模拟c++的多态
关于c++多态,个人认为就是父类调用子类的方法,c++多态的实现主要通过虚函数实现,如果类中含有虚函数,就会出现虚函数表,具体c++多态可以参考<深度探索c++对象模型> c语言模拟多态主 ...
- ACM 喷水装置(二)
喷水装置(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的 ...
- ACM: 限时训练题解-Street Lamps-贪心-字符串【超水】
Street Lamps Bahosain is walking in a street of N blocks. Each block is either empty or has one la ...
- 【BZOJ】1135: [POI2009]Lyz
题意 有\(1\)到\(n(1 \le n \le 200000)\)号的溜冰鞋各\(k(1 \le k \le 10^9)\)双.已知\(x\)号脚的人可以穿\(x\)到\(x+d\)的溜冰鞋. 有 ...
- BZOJ4517: [Sdoi2016]排列计数
Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...
- 在Linux中安装Tomcat
带Linux的虚拟机中安装Tomcat 一.从官方网站上下载tomcat软件包.http://tomcat.apache.org/ apache-tomcat-7.0.33.tar.gz 二.下载到本 ...