Java简单类——多对多映射
class Admin {
private String aid ;
private String password ;
private Role role ;
public Admin(String aid,String password) {
this.aid =aid ;
this.password = password ;
}
public void setRole(Role role) {
this.role = role ;
}
public Role getRole() {
return this.role ;
}
public String getInfo() {
return "管理员编号:" + this.aid + ",密码:" + this.password ;
}
}
class Role {
private int rid ;
private String title ;
private Admin admins [] ;
private Group groups [] ;
public Role(int rid,String title) {
this.rid = rid ;
this.title = title ;
}
public void setAdmins(Admin [] admins) {
this.admins = admins ;
}
public void setGroups(Group groups[]) {
this.groups = groups ;
}
public Group [] getGroups() {
return this.groups ;
}
public Admin [] getAdmins() {
return this.admins ;
}
public String getInfo() {
return "角色编号:" + this.rid + ",名称:" + this.title ;
}
}
class Group {
private int gid ;
private String title ;
private Role roles [] ;
private Action actions [] ;
public Group(int gid,String title) {
this.gid = gid ;
this.title = title ;
}
public void setRoles(Role roles[]) {
this.roles = roles ;
}
public void setActions(Action actions[]) {
this.actions = actions ;
}
public Action [] getActions() {
return this.actions ;
}
public Role [] getRoles() {
return this.roles ;
}
public String getInfo() {
return "权限组编号:" + this.gid + ",名称:" + this.title ;
}
}
class Action {
private int aid ;
private String title ;
private String url ;
private Group group ;
public Action(int aid,String title,String url) {
this.aid = aid ;
this.title = title ;
this.url = url ;
}
public void setGroup(Group group) {
this.group = group ;
}
public Group getGroup() {
return this.group ;
}
public String getInfo() {
return "权限编号:" + this.aid + ",名称:" + this.title + ",路径:" + this.url ;
}
}
public class TestAdmin {
public static void main (String args[]) {
//第一步,设置完整关系
//1、准备出若干个对象
Admin a1 = new Admin("admin","hello") ;
Admin a2 = new Admin("guest","hello") ;
Admin a3 = new Admin("jiang","hello") ;
Role r1 = new Role(1,"系统管理员") ;
Role r2 = new Role(2,"信息管理员") ;
Group g1 = new Group(10,"信息管理") ;
Group g2 = new Group(11,"用户管理") ;
Group g3 = new Group(12,"数据管理") ;
Group g4 = new Group(13,"接口管理") ;
Group g5 = new Group(14,"备份管理") ;
Action at01 = new Action(1001,"新闻发布","-") ;
Action at02 = new Action(1002,"新闻列表","-") ;
Action at03 = new Action(1003,"新闻审核","-") ;
Action at04 = new Action(1004,"增加用户","-") ;
Action at05 = new Action(1005,"用户列表","-") ;
Action at06 = new Action(1006,"登录日志","-") ;
Action at07 = new Action(1007,"雇员数据","-") ;
Action at08 = new Action(1008,"部门数据","-") ;
Action at09 = new Action(1009,"公司数据","-") ;
Action at10 = new Action(1010,"服务传输","-") ;
Action at11 = new Action(1011,"短信平台","-") ;
Action at12 = new Action(1012,"全部备份","-") ;
Action at13 = new Action(1013,"局部备份","-") ;
//2、设置对象之间的基本关系
//设置管理员与角色
a1.setRole(r1) ;
a2.setRole(r2) ;
a3.setRole(r2) ;
r1.setAdmins(new Admin[] {a1}) ;
r2.setAdmins(new Admin[] {a2,a3}) ;
//设置角色与管理员组
r1.setGroups(new Group[] {g1,g2,g3,g4,g5}) ;
r2.setGroups(new Group[] {g1,g2}) ;
g1.setRoles(new Role[] {r1,r2}) ;
g2.setRoles(new Role[] {r1,r2}) ;
g3.setRoles(new Role[] {r1}) ;
g4.setRoles(new Role[] {r1}) ;
g5.setRoles(new Role[] {r1}) ;
//设置管理员组与权限
g1.setActions(new Action[] {at01,at02,at03}) ;
g2.setActions(new Action[] {at04,at05,at06}) ;
g3.setActions(new Action[] {at07,at08,at09}) ;
g4.setActions(new Action[] {at10,at11}) ;
g5.setActions(new Action[] {at12,at13}) ;
at01.setGroup(g1) ;
at02.setGroup(g1) ;
at03.setGroup(g1) ;
at04.setGroup(g2) ;
at05.setGroup(g2) ;
at06.setGroup(g2) ;
at07.setGroup(g3) ;
at08.setGroup(g3) ;
at09.setGroup(g3) ;
at10.setGroup(g4) ;
at11.setGroup(g4) ;
at12.setGroup(g5) ;
at13.setGroup(g5) ;
//第二步:取出数据内容
System.out.println(a1.getInfo()) ;
System.out.println("\t|-" + a1.getRole().getInfo()) ;
for (int x = 0 ;x < a1.getRole().getGroups().length ;x ++ ){
System.out.println("\t|-" + a1.getRole().getGroups()[x].getInfo()) ;
for (int y = 0 ;y< a1.getRole().getGroups()[x].getActions().length ;y ++ ){
System.out.println("\t\t\t|-" + a1.getRole().getGroups()[x].getActions()[y].getInfo()) ;
}
}
System.out.println("-----------------------------------------------------------------") ;
System.out.println(g2.getInfo()) ;
for (int x = 0 ;x < g2.getRoles().length ; x ++ ){
System.out.println("\t|-" + g2.getRoles()[x].getInfo()) ;
for (int y = 0 ;y < g2.getRoles()[x].getAdmins().length ;y ++ ){
System.out.println("\t\t|-" + g2.getRoles()[x].getAdmins()[y].getInfo()) ;
}
}
}
}
这次使用了win7 自带的PowerShell,运行结果如下
Java简单类——多对多映射的更多相关文章
- 数据表与简单java类——多对多映射
给定一张Meber和Product表,得到如下信息: 1.获取一个用户访问的所有商品信息 2.获取一个商品被哪些用户浏览过的信息 package Mapping_transformation; cla ...
- Java实体类之间的映射(多对多关系)
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- java 简单类
package 面向对象编程_封装性; //1.类名称必须存在有意义,例如Book.Emp //2.类之中所有的属性必须用private封装,封装后的属性必须提供有setter和getter方法 // ...
- 第四周总结和实验二Java简单类与对象
实验目的 掌握类的定义,熟悉属性.构造函数.方法的使用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实列的方法和属性: 理解static修饰对类. ...
- 第四周课程总结与第二次实验报告(Java简单类与对象)
1.写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求该类具有: ...
- Java简单类——双向一对多映射
class Item { // 父栏目 private int iid ; private String name ; private String note ; private Subitem su ...
- Java实体类之间的映射(一对多关系)
通过栗子,一个人可以有多辆汽车 定义人 这个类 人可以有很多辆汽车,类中车属性用数组 class Person{ private String name; private String phone ...
- Java简单类——一对多映射(省、市)
class Province { private int pid ; private String name ; private City cities [] ; public Province (i ...
- Java简单类(部门、领导、雇员关系)
class Dept { private int deptno ; private String dname ; private String loc ; private Emp emps [] ; ...
随机推荐
- 使用github pages, hexo搭建个人博客教程
具体的原理性的东西就不说了直接上教程,怕等下自己忘了. 一. github 阶段 申请一个github 账号并成功登录进去. 创建一个名字为xxx.github.io的空项目. 二. hexo 阶段 ...
- Spring预处理
当需要在某些Spring项目一启动,就执行某些操作时,需要实现改接口ApplicationListener,重写onApplicationEvent方法,将需要的预处理操作全部写在该方法中 当初始化完 ...
- at 常用命令
以debian 6.0.1 为例: 服务开启关闭: Usage: /etc/init.d/atd {start|stop|restart|force-reload|status} 设置一次计划任务(a ...
- WebService -- Java 实现之 CXF ( 使用CXF工具生成client 程序)
1. 下载CXF 工具解压到磁盘 2.添加工具bin目录到PATH环境变量 3.创建一个CXF client新项目 4. run -> cmd 到指定目录,并运行工具目录下的批处理 “wadl2 ...
- 35.两链表的第一个公共结点[Find the first common node of two linked list]
[题目] 两个单向链表,找出它们的第一个公共结点. 链表的结点定义为: C++ Code 123456 struct ListNode { int m_nKey; ...
- upload&&download
package am.demo; import java.io.File; import java.io.IOException; import java.util.Iterator; imp ...
- windows7 启用管理员账户
在虚拟机中安装了windows7,方便使用qq,使用百度云,office等常用的软件.虚拟机使用的oracle的VirtualBox,个人使用体验不错,最棒的功能是能将物理机中的磁盘映射到虚拟机中网络 ...
- sqlmap的安装方法
1.安装Python2.7,设置Python环境变量
- cve-2015-5122漏洞分析
HackTem爆出的第二枚0day,分析了下,做个记录. Poc中一开始会分配一个Array类型的_ar结构. 第一次赋值 此时在a[0 ] –a[1e-1] 处已被赋值为Vector.<uin ...
- nodejs review-01
lesson lesson-code 05 Run your first web server 使用curl //指定方法;显示header信息 curl -X GET -i localhost:30 ...