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个): 日期格式为:年月日时分秒(不包含毫秒部分) ...
随机推荐
- 我的c++学习(1)hello world!
// texthello.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using na ...
- JetS3t使用说明
http://blog.csdn.net/hitmediaman/article/details/6636402
- 每天一个linux命令---curl
linux curl是一个利用URL规则在命令行下工作的文件传输工具.详细请参考:http://www.codesky.net/article/201010/170043.html 例如:curl ' ...
- spring事务配置详解
一.前言 好几天没有在对spring进行学习了,由于这几天在赶项目,没有什么时间闲下来继续学习,导致spring核心架构详解没有继续下去,在接下来的时间里面,会继续对spring的核心架构在继续进行学 ...
- NOIp 2012 #1 Vigenère 密码 Label:模拟
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- NOIp 2013 #1 积木大赛 Label:有趣的模拟
题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...
- 洛谷 P2661 信息传递 Label:并查集||强联通分量
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- JS中toFixed()方法的问题及解决方案
最近发现JS当中toFixed()方法存在一些问题,采用原生的Number对象的原型对象上的toFixed()方法时,规则并不是所谓的“四舍五入”或者是“四舍六入五成双”,所谓“四舍六入五成双”,在百 ...
- 【BZOJ3211&3038】花神游历各国&上帝造题的七分钟2(CodeVS)
Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 ...
- 【noiOj】p8207(233)
07:和为给定数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给出若干个整数,询问其中是否有一对数的和等于给定的数. 输入 共三行:第一行是整数n(0 & ...