社区
Java SE
帖子详情
提一个面向对象开发的百思不得其解的问题
lcong
2006-02-19 03:14:45
现有一个班级类和一个学生类
有一个方法是一次设置几个学生为同一班级的方法
问该方法是应该在班级类中实现还是学生类中实现?
...全文
774
39
打赏
收藏
提一个面向对象开发的百思不得其解的问题
现有一个班级类和一个学生类 有一个方法是一次设置几个学生为同一班级的方法 问该方法是应该在班级类中实现还是学生类中实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wd_6532
2006-02-21
打赏
举报
回复
如果用班级的话,你需要维护的集合类必须是线程安全的。
=============
好,深入. 从这点上来说,班机就不要加这个功能了吧? 除非你加入线程同步?
alemjann
2006-02-21
打赏
举报
回复
用学生好一点。
如果用班级的话,你需要维护的集合类必须是线程安全的。
dayang2001911
2006-02-21
打赏
举报
回复
分析:
学生和班级的关系:一个学生只对应一个班级,一个班级必须有多于一个的学生。
而且,一个学生只有在被开除,转学的时候才会不属于这个班级,即使毕业了,这个学生仍然属于该班级,只是毕业了而已,比如:2001级计算机系的学生甲,他所在的班级永远是2001compter,不会变成其他的班级。
我觉得是否应该先把需求考虑清楚,否则会讨论得不着边际了。
ZyxIp
2006-02-21
打赏
举报
回复
选择多个学生只是界面上的操作罢了.
学生类中肯定有"所属班级"这个属性了.如果有学生可以属于多个班级的情况,则"所属班级"是一个列表.
当选中多个学生后,循环设置所有学生的"所属班级"属性并保存到数据库中,然后调用班级对象的"刷新学生人数"的方法来刷新界面上的显示.
在创建班级对象的时候没有必要就创建所有的学生对象,只有在需要显示或调用学生对的方式时才创建学生对象.
alemjann
2006-02-21
打赏
举报
回复
好,深入. 从这点上来说,班机就不要加这个功能了吧? 除非你加入线程同步?
--------------------------------------------------------------------
java.util里面有已经有线程安全的集合类了。拿来用就行。
lcong
2006-02-20
打赏
举报
回复
感觉 boltzjf(Bolt) 分析的比较透彻
dext
2006-02-20
打赏
举报
回复
Class.add(Student);
canji
2006-02-20
打赏
举报
回复
实际项目中类似的功能班级类和学生类都必须实现。
水晶平衡木
2006-02-20
打赏
举报
回复
想问一下:一个学生可以在多个班级里面吗?可以没有任何班级吗?最好看看这两个实体之间的关系究竟是怎样的,到底是有多紧密,谁依赖谁更多一些?
个人认为,班级和学生是两个不同的实体,它们的存在都不以单个的对方为必要条件(注意是“单个的”,当然,如果一个班级如果连一个学生都没有的话,它的存在就没有什么必要了,呵呵)。
在这种情况下,我觉得提供一个第三方的对象来管理它们之间的关系会比较适合一点。这样的话,它们的单独个体之间不会产生直接的依赖关系,比较符合实际,而且这种关系会比较松散且唯一,也就是没有冗余。因为如果在两个实体上都需要维护与对方的关系,那么这个关系就会冗余,比如:学生甲是属于班级A的,那么学生甲就要自己记得自己的班级是班级A,而班级A也要记得自己有一个学生甲,在这种关系解除或者变化的时候,就需要将二者都改变,忘了一个的话就会出问题哦,^_^
至于那个方法放在哪里,我的想法是都可以放,在班级里可以放一个addStudent,在学生里放一个joinClass,这些我认同上面兄弟们的意见,^_^,只是无论是哪个方法调用的都是那个第三方的对象的真正实现,也就是说,关系只维护一个,不冗余。
hsnh1981
2006-02-20
打赏
举报
回复
学生类继承班级类中一个设置班级的变量就可以了!
超级大笨狼
2006-02-20
打赏
举报
回复
当然是班级类中。
涉及多个学生的操作当然要放班级类啊。
学生类最好只针对一个学生实例操作。对多个的就要写静态方法来实现。
班级类你可以写动态方法。也可以写静态方法。
weiqin25
2006-02-20
打赏
举报
回复
我也认为班级类,他的目的是把学生放到班级,况且班级是学生的集合体,应该把学生封装进去也是必须的
wd_6532
2006-02-20
打赏
举报
回复
boltzjf(Bolt)的第三个类的方法在设计模式上叫 中介者 Mediator
infowain
2006-02-20
打赏
举报
回复
应该设置在学生类中比较好
interpb
2006-02-20
打赏
举报
回复
学生
interpb
2006-02-20
打赏
举报
回复
学生的属性按照OOP来讲
应该是在类中封装实现
当然班级类可以调用这个方法!
EnginePlus
2006-02-20
打赏
举报
回复
这个 可以都写:)
班级类里 addStudent()
学生类里可以 setClass()
^_^
larryzhao
2006-02-20
打赏
举报
回复
boltzjf(Bolt)讲的的确有些道理,不过能不能具体讲一下应该怎么设计这个第三方类呢?我没什么想法,很想听听大家讲下
其实我自己觉得还是在学生类中设置一个成员字段来保存班级信息比较好,写get和set的方法来设置,如果是添加很多学生即同此:
学生.setClass(班级)
班级.setMember(学生集合) {
学生.setClass(this);
}
wd_6532
2006-02-20
打赏
举报
回复
从实现上 反证法:
假如要在班机中设置一次设置多个学生. 一次设置多少个,你定了.肯定没定.
不定数的要实现有两种方法,
一种是先把选中的学生存放到一个数据结构中,比如容器类,然后把这个容器传入 班机的方法.
但是你怎么样才能填充这个容器呢,还不是得for each selected?
二种是用可变个数得函数参数. 有点涩了.
wd_6532
2006-02-20
打赏
举报
回复
学生类继承班级类中一个设置班级的变量就可以了!
====================
如果你面试的话,你该走人了.
加载更多回复(19)
面向对象
一
面向对象
的程序设计的由来 二 什么是
面向对象
的程序设计及为什么要有它 三 类和对象 3.1 什么是对象,什么是类 3.2 类相关知识 3.3 对象相关知识 3.4 对象之间的交互 3.5 类名称空间与对象/实例名称空间 ...
javascript
面向对象
编程
javascript
面向对象
编程 -- CoCoSike javascript对于做过Web程序的人不应该是陌生,初期是用来做一些简单的FORM验证,基本上是在玩弄一些技巧性的东西。IE 4.0引入了DHTML,同时为了对抗Netscape的javascript,...
面向对象
的JavaScript编程
IE 4.0引入了DHTML,同时为了对抗Netscape的Javascript,
提
出了自己的脚本语言JScript,除了遵循EMAC的标准之外,同时增加了许多扩展,如下要
提
到的OOP编程就是其中的
一个
,为了命且概念,我以下
提
...
我所理解的软件工程
前言 我只记得初中的时候有计算机课,老师教我们玩FLASH,也就做一下补间动画,没用到AS。...当时就照着老师给的代码敲上去了,得出了结果,让我有一丝兴奋,可是我
百思不得其解
,int是什么鬼,int a=1又是...
iOS
开发
工具,ios
开发
类库
,iosUI组件介绍,iOS
开发
常用工具整理,ios
开发
总结 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SDWebImage多个缩略图缓存组件 UICKeyChainStore存放用户账号密码组件 ...
Java SE
62,629
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章