没有想到小弟的一个帖子 引起这么多高手的讨论
我对banq的理解 evaluate process还是应该建立一个对象 把对一个老师的一门课的评价等级或者说分数统计出来:例如张老师的java课的一个评价指标-教师授课内容丰富,所有学生基于这个项目的评价等级 统计出来 而这样的方法 应该写到evaluateprocess这个对象里面去
不知道我的理解是否靠谱了

我也觉得banq的分析过于简单,并不是设计上的简洁,而是对需求和业务的简化。

楼主的需求,最关键的问题在于学生评价老师的课程。这里有几个概念,一个是“课程Course”指一门课,例如<Java语言基础>,“班级Class”指的一个行政班,例如<计算机系92级三班>
“课程”和“班级”是多对多的关系;某个“班级”的某个“课程”有唯一确定的任课老师。而“评价”指的是――某个学生,对其所在班级的,某个课程的任课老师,的评价。

如果上面的需求理解没有错误的话,和banq的模型似乎有些出入。

我尝试着画了这么个东西,其中Evaluation是“评价”的抽象,“评价”是由两个对象关联构成的(这里感觉又绕到关系数据库的思维上去了)。我觉得这个图也有问题,不太像面向对象的。但是感觉描述的还是比较清楚和全面,楼主其他部分,例如评价类型、级别、权重等,都可以作为Evaluation对象的属性或关联对象。

希望各位大虾指导一下~~

楼上兄弟表述的正是我的意思 那个评价元组的设计很有创意 按照banq的域模型设计思路 应该是这样的
但是如果这样 是不是数据库的设计就要改一下了 一个学生从class_c_t那个表格里面 选出一个OID作为评价对象元组 进行评价同时参考评价指标对每一个指标打分 是不是这样呢 希望大家多多给出自己的意见 共同把这个方法论的东西 搞透彻
先谢谢已经发帖的兄弟们了 当然尤其谢谢banq老哥

俺的拙见如下,欢迎探讨.

对象交互分析图:

类图:

楼上兄弟解释一下你的iscore

IScore 抽象了与评价相关一组方法:

1. 两个查询方法: scoreByStudent, scoreForTeacher

2. 两个行为方法: evaluate, score

没有什么特别的.当然这个接口里的方法还可以划分得更合理一些.这些留到细化的时候去做.

偶还是推荐楼主用iBatis
hibernate需要很深的分析设计功底才能发挥功力。

正在重新进行域建模 请关注

这个系统与一般的选课系统的实体关系不同
一般来说就有老师学生课程三个对象用两个连接表格就可以完成多多映射
现在我这个系统的特殊
在于
首先学生注册的时候 选择自己所在班级
学期开始前 管理员将教师任课情况配置好 这个情况就是 A老师教CLASS-B班级的JAVA课程,但是有一种情况很常见很多人没有考虑到就是一门课程很有可能由几个老师同时担任

然后 将哪个教师教哪个班级确定好
开始评价的时候 学生登陆系统 只能选择其所在班级的任课教师对其上课进行评价 结束后退出系统
一段时间后 管理员可以结束对某教师任某课这个评价项目,然后系统自动统计

统计的时候并不是简单的算分数
我用了两种方法
1)模糊数学法
就是简单说学生按照评价指标给教师评价 选择优良中差
我们根据评价者依据评价指标评价的情况来定义隶属度,例如在100个学生在第i个评价指标的评价中,有20%的人选择评语“优”,45%选择评语“良”,23%的人选择评语“中”,12%的人选择“差”,因此,对于i评价指标来说,其相对于“优”的隶属度为20%,相对于“良”的隶属度为45%,相对于“中”的隶属度为“差”。
算出了所有指标的隶属度后 将每个隶属度写成矩阵形式 其实就是一个i×4的矩阵,再将这个矩阵与权重向量相乘 最后得到一个1×4的矩阵其实就是最后的总评 根据最大隶属度原则,选择评语

我来进行详细说明
首先我设计了最传统的三个实体对象 学生 老师 课程
对于评价来说 首先 评价指标(包括权重)应该是一个实体EvaluIndex
同时在这里我考虑到 评价的表单这个抽象的东西也应该是一个实体
原因如下:一般大家都在大学里面给老师打分的时候都用过那个机读卡吧就是先填涂教师编号和课程编号 然后根据机读卡上面的指标选择ABCD
就是这个卡 我要把他设计成一个实体就是EvaluForm
同时我评价的是一个教师的一门课 并不单纯是一个教师
所以我设计了一个所谓评价项目对象 EvaluItem 将教师与课程联系起来
学生对教师进行评价 明显是多多关系 所以用EvaluForm正好可以将两个联系起来 化成两个多对一关系
一会继续