首页 新闻 会员 周边

如何设计实体类(学生类和班级类)??

0
悬赏园豆:30 [已解决问题] 解决于 2011-01-17 23:44

当以面向对象思想设计学生类和班级类这两个实体类关系时,面临以下几种做法:

1、学生类中有个属性叫做“班级ID”;

2、班级类中有个属性叫做“学生列”,例如:C#语言为List<Student>

3、这两个实体类都不要关于对方的属性,而是在业务类中设计方法来讲两者关联起来。

请问,以上3中方法,哪一种是最符合OO思想的,原因是什么,遵循了OO的什么思想?其他两种又为什么不妥,违背了OO的什么思想?

 

我目前的做法是第2种,因为我认为现实中,班级是学生的容器,应该在班级中设置一个学生列属性。因为这个问题,昨天在部门里引起了极大的争议。请各位说说自己的观点吧~~

 

智会超的主页 智会超 | 初学一级 | 园豆:1
提问于:2011-01-13 08:59
< >
分享
最佳答案
0

3

收获园豆:5
慧☆星 | 大侠五级 |园豆:5640 | 2011-01-14 08:53
在数据库中用 令建关系表 (班级ID、学生ID) 进行 关联。 在程序设计中用一个代理类来管理 解耦是oo的其中一思想
慧☆星 | 园豆:5640 (大侠五级) | 2011-01-14 08:56
其他回答(5)
0

1

收获园豆:5
I,Robot | 园豆:9783 (大侠五级) | 2011-01-13 09:07
能说明理由吗?
支持(0) 反对(0) 智会超 | 园豆:1 (初学一级) | 2011-01-13 09:21
0

1啊,实体的独立性。

收获园豆:5
massinger | 园豆:706 (小虾三级) | 2011-01-13 09:33
0

看使用情况吧

如果是学生使用的比较多,1比较好

如果是班级使用的比较多,2可以考虑吧

总体看还是1比较好

ps:DB是否设计好?

收获园豆:5
六芒星 | 园豆:627 (小虾三级) | 2011-01-13 09:43
还没有设计DB,DB等实体类设计好后再映射出来
支持(0) 反对(0) 智会超 | 园豆:1 (初学一级) | 2011-01-13 13:33
那还是方案1比较好 方案2映射DB就不是很简明了吧
支持(0) 反对(0) 六芒星 | 园豆:627 (小虾三级) | 2011-01-13 13:34
0

2.一对多关系,班级是对象,学生相当于属性,我觉得比较符合面向对象的定义!

收获园豆:5
勤劳的渔网工作者 | 园豆:572 (小虾三级) | 2011-01-13 15:32
0

1和2 都可以

六芒星的说法可以考虑,按业务去设计实体

其实有些自动化工具的映射结果就是同时满足了1和2,微软的EF就是这样的。2就是导航属性

收获园豆:5
徐少侠 | 园豆:293 (菜鸟二级) | 2011-01-14 13:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册