现有一个班级类和一个学生类
有一个方法是一次设置几个学生为同一班级的方法
问该方法是应该在班级类中实现还是学生类中实现?

解决方案 »

  1.   

    既然要为学生设置班级,应该是将方法放在学生类中较好,学生.setClass()
      

  2.   

    学生.setClass(班级)
    班级.setMember(学生集合) {
        学生.setClass(this);
    }
      

  3.   

    设计对象时不要考虑如何从数据库中取数据
    个人感觉这个方案较好:
    antter(JiangMiao|www.sssdf.com) 
    学生.setClass(班级)
    班级.setMember(学生集合) {
        学生.setClass(this);
    }
      

  4.   

    应该设置在学生类中比较好理解一点吧.
    你可以这样定义:
    class Student{
           private int stuClass;
           .....
           public void setStuClass(){
                 stuClass = ......;
           }
    }
      

  5.   

    public StudentClass{
    vector v;void addStudents(Student[] s){
    for(int i=0;i<s.lenth;i++){
    v.addElemet(s[i]);
    }}}
      

  6.   

    这个 可以都写:)
    班级类里 addStudent()
    学生类里可以 setClass() ^_^
      

  7.   

    学生的属性按照OOP来讲
    应该是在类中封装实现当然班级类可以调用这个方法!
      

  8.   

    想问一下:一个学生可以在多个班级里面吗?可以没有任何班级吗?最好看看这两个实体之间的关系究竟是怎样的,到底是有多紧密,谁依赖谁更多一些?个人认为,班级和学生是两个不同的实体,它们的存在都不以单个的对方为必要条件(注意是“单个的”,当然,如果一个班级如果连一个学生都没有的话,它的存在就没有什么必要了,呵呵)。在这种情况下,我觉得提供一个第三方的对象来管理它们之间的关系会比较适合一点。这样的话,它们的单独个体之间不会产生直接的依赖关系,比较符合实际,而且这种关系会比较松散且唯一,也就是没有冗余。因为如果在两个实体上都需要维护与对方的关系,那么这个关系就会冗余,比如:学生甲是属于班级A的,那么学生甲就要自己记得自己的班级是班级A,而班级A也要记得自己有一个学生甲,在这种关系解除或者变化的时候,就需要将二者都改变,忘了一个的话就会出问题哦,^_^至于那个方法放在哪里,我的想法是都可以放,在班级里可以放一个addStudent,在学生里放一个joinClass,这些我认同上面兄弟们的意见,^_^,只是无论是哪个方法调用的都是那个第三方的对象的真正实现,也就是说,关系只维护一个,不冗余。
      

  9.   

    感觉 boltzjf(Bolt) 分析的比较透彻
      

  10.   

    学生类.所属班级是学生类的属性.并不能因为你想批处理方便就换属性的存在地.for each selected
    {
      objstudent.setclass(&objclass);
      objclass.addmember(&objstudent);
    }也可以把  objclass.addmember(&objstudent);放到 student.setclass中调用.比如 
    CStudent::setclass(CClass& objclass)
    {
      this->pClass=objclass;
      objclass.addmember(this);
    }
      

  11.   


    从实现上 反证法:
    假如要在班机中设置一次设置多个学生. 一次设置多少个,你定了.肯定没定.不定数的要实现有两种方法,
    一种是先把选中的学生存放到一个数据结构中,比如容器类,然后把这个容器传入 班机的方法. 
    但是你怎么样才能填充这个容器呢,还不是得for each selected?二种是用可变个数得函数参数. 有点涩了.
      

  12.   

    boltzjf(Bolt)讲的的确有些道理,不过能不能具体讲一下应该怎么设计这个第三方类呢?我没什么想法,很想听听大家讲下其实我自己觉得还是在学生类中设置一个成员字段来保存班级信息比较好,写get和set的方法来设置,如果是添加很多学生即同此:学生.setClass(班级)
    班级.setMember(学生集合) {
        学生.setClass(this);
    }
      

  13.   

    boltzjf(Bolt)的第三个类的方法在设计模式上叫 中介者 Mediator
      

  14.   

    分析:
    学生和班级的关系:一个学生只对应一个班级,一个班级必须有多于一个的学生。
    而且,一个学生只有在被开除,转学的时候才会不属于这个班级,即使毕业了,这个学生仍然属于该班级,只是毕业了而已,比如:2001级计算机系的学生甲,他所在的班级永远是2001compter,不会变成其他的班级。
    我觉得是否应该先把需求考虑清楚,否则会讨论得不着边际了。
      

  15.   

    好,深入. 从这点上来说,班机就不要加这个功能了吧? 除非你加入线程同步?
    --------------------------------------------------------------------
    java.util里面有已经有线程安全的集合类了。拿来用就行。