zoukankan      html  css  js  c++  java
  • 两个范例

    范例一——一对多关系

    使用类集表示出一下关系:一个学校可以包含多个学生,一个学生只能属于一个学校,这就是一对多的关系.

    School.java

    import java.util.List ;
    import java.util.ArrayList ;
    public class School{  //定义School类
     private String name ;
     private List<Student> allStudents ;  //一个学校有多个学生
     public School(){            //无参构造
      this.allStudents = new ArrayList<Student>() ;  //实例化List集合
     }
     public School(String name){
      this() ;     //调用无参构造
      this.setName(name) ;
     }
     public void setName(String name){  //设置name属性内容
      this.name = name ;
     }
     public String getName(){    //取得name属性内容
      return this.name;
     }
     public List<Student> getAllStudents(){ //取得全部学生
      return this.allStudents ;
     }
     public String toString(){  //覆写toString()方法
      return "学校名称:" + this.name ;
     }
    };

    Student.java

    public class Student{  //定义Student类
     private String name ;
     private int age ;
     private School school;   // 一个学生属于一个学校
     public Student(String name,int age){
      this.setName(name) ;
      this.setAge(age) ;
     }
     public void setSchool(School school){  //设置所在学校
      this.school = school ;
     }
     public School getSchool(){    //返回学生所在学校
      return this.school ;
     }
     public void setName(String name){  //设置name属性内容
       this.name = name ;
     }
     public void setAge(int age){  //设置age属性内容
      this.age = age ;
     }
     public String getName(){  //返回name属性内容
      return this.name;
     }
     public int getAge(){  //返回age属性内容
      return this.age ;
     }
     public String toString(){  //覆写toString()方法
      return "学生姓名:" + this.name + ";年龄:" + this.age ;
     }
    };

    TestDemo.java

    import java.util.Iterator ;
    public class TestDemo{  //测试类
     public static void main(String args[]){
      School sch = new School("清华大学") ;   // 实例化学校对象
      Student s1 = new Student("张三",21) ;  //实例化学生对象
      Student s2 = new Student("李四",22) ;
      Student s3 = new Student("王五",23) ;
      sch.getAllStudents().add(s1) ;      //在学校中加入学生
      sch.getAllStudents().add(s2) ;      //在学校中加入学生
      sch.getAllStudents().add(s3) ;      //在学校中加入学生
      s1.setSchool(sch) ;            //一个学生属于一个学校
      s2.setSchool(sch) ;            //一个学生属于一个学校
      s3.setSchool(sch) ;            //一个学生属于一个学校  
      System.out.println(sch) ;         //输出学校信息
      Iterator<Student> iter = sch.getAllStudents().iterator() ;
      while(iter.hasNext()){  //利用iterator接口输出学校里面全部学生信息
       System.out.println(" |- " + iter.next()) ;
      }
     }
    };

    范例二——多对多关系

    例如:一个学生可以选多门课,每门课程可以有多个学生参加,这就是一个典型的多对多的关系。

    Student.java

    import java.util.List ;
    import java.util.ArrayList ;
    public class Student{  //定义学生类
     private String name ;
     private int age ;
     private List<Course> allCourses ;
     public Student(){    //定义无参构造
      this.allCourses = new ArrayList<Course>() ;  //实例化list集合
     }
     public Student(String name,int age){
      this() ;    //调用无参构造
      this.name = name ;  //设置name属性内容
      this.age = age ;    //设置age属性内容
     }
     public List<Course> getAllCourses(){  //取得全部课程信息
      return this.allCourses ;
     }
     public void setName(String name){  //设置name属性
      this.name = name ;
     }
     public void setAge(int age){  //设置age属性
      this.age = age ;
     }
     public String getName(){  //取得name属性内容
      return this.name ;
     }
     public int getAge(){  //取得age属性内容
      return this.age ;
     }
     public String toString(){  //覆写toString()方法
      return "学生姓名:" + this.name + ";年龄:" + this.age ;
     }
    };

     Course.java

    import java.util.List ;
    import java.util.ArrayList ;
    public class Course{  //定义课程类
     private String name ;
     private int credit ;
     private List<Student> allStudents ;
     public Course(){    //定义无参构造
      this.allStudents = new ArrayList<Student>() ;
     }
     public Course(String name,int credit){
      this() ;  //调用无参构造
      this.name = name ;  //设置name属性内容
      this.credit = credit ;  //设置credit属性内容
     }
     public List<Student> getAllStudents(){  //返回全部学生
      return this.allStudents ;
     }
     public void setName(String name){  //设置name属性
      this.name = name  ;
     }
     public void setCredit(int credit){  //设置credit属性
      this.credit = credit ;
     }
     public String getName(){  //取得name属性
      return this.name ;
     }
     public int getCredit(){  //取得credit属性
      return this.credit ;
     }
     public String toString(){  //覆写toString()方法
      return "课程名称:" + this.name + ";课程学分:" + this.credit ;
     }
    };

    TestMore.java

    import java.util.Iterator ;
    public class TestMore{
     public static void main(String args[]){
      Course c1 = new Course("英语",3 ) ; // 第一门课程
      Course c2 = new Course("计算机",5) ; // 第二门课程
      Student s1 = new Student("张三",20) ;
      Student s2 = new Student("李四",21) ;
      Student s3 = new Student("王五",22) ;
      Student s4 = new Student("赵六",23) ;
      Student s5 = new Student("孙七",24) ;
      Student s6 = new Student("钱八",24) ;
      // 第一门课程有三个学生参加
      c1.getAllStudents().add(s1) ;
      c1.getAllStudents().add(s2) ;
      c1.getAllStudents().add(s6) ;
      s1.getAllCourses().add(c1) ;
      s2.getAllCourses().add(c1) ;
      s6.getAllCourses().add(c1) ;
      // 第二门课程有六个学生参加
      c2.getAllStudents().add(s1) ;
      c2.getAllStudents().add(s2) ;
      c2.getAllStudents().add(s3) ;
      c2.getAllStudents().add(s4) ;
      c2.getAllStudents().add(s5) ;
      c2.getAllStudents().add(s6) ;
      s1.getAllCourses().add(c2) ;
      s2.getAllCourses().add(c2) ;
      s3.getAllCourses().add(c2) ;
      s4.getAllCourses().add(c2) ;
      s5.getAllCourses().add(c2) ;
      s6.getAllCourses().add(c2) ;
      // 输出一门课程的信息,观察一门课程有多少个学生参加
      System.out.println(c1) ;  //输出第一门课程
      Iterator<Student> iter1 = c1.getAllStudents().iterator() ;  //利用iterator接口输出选c1这门课程的全部学生
      while(iter1.hasNext()){
       Student s = iter1.next() ;
       System.out.println(" |- " + s) ;
      }
      // 通过学生找到学生参加的课程
      System.out.println(s6) ;  //输出学生信息
      Iterator<Course> iter2 = s6.getAllCourses().iterator() ;  //利用iterator接口输出s6这位学生所选的全部课程
      while(iter2.hasNext()){
       Course c = iter2.next() ;
       System.out.println(" |- " + c) ;
      }
     }
    };

  • 相关阅读:
    自然数e为底数的指数函数的一个小运用
    Windows产品测试集合整理
    随手写的 IniFiles
    Windows C++ TLS 实现连接163邮箱
    Windows创建个人证书(C++实现,使用 as administrator)
    单进程单线程IOCP的实现(含客户端和服务端)
    32/64位下面的基本数据类型的大小
    WMI 获取操作系统名称和版本
    http 基本代理 C++实现(极简)
    获取内存大小、CPU大小、硬盘大小及使用率
  • 原文地址:https://www.cnblogs.com/6502ck/p/3386418.html
Copyright © 2011-2022 走看看