【发布时间】:2015-12-08 17:55:45
【问题描述】:
在类图中,用户可以参加多项考试。考试由几个类别组成。每个类别都有很多问题。每个问题都有很多选择。
我有疑问的两个地方是用户与考试互动的地方。
我的一个朋友说我应该在用户和考试之间建立一个名为考试的关联类。我想,作为属性,它可能有 DateTime 和 Score。为什么考试不能存储分数并有完成日期? (这是否意味着当考试完成时它只是改变状态?)有了这个设计,我猜它也必须有一个用户属性。这将结合用户和考试。 (如果我需要考试来存储分数,那么我需要一个 CompletedCategory 来存储每个类别的个人分数吗?)
另一个地方是用户和问题之间的关系。还是应该是用户和选择?在计算分数之前,我需要在某个地方存储对问题的回答。这些响应也必须保存到数据库中。 Response 应该是关联类还是 Question 中的列表?
谁能给我解释一下优缺点?有没有我可以阅读的好资源?我读过很多 StackOverflow 文章。我学到了很多,但仍然不确定哪些是最好的设计。
以下文章很有帮助:http://www.codeproject.com/Articles/9900/Identifying-Object-Oriented-Classes
但我仍然不确定为什么会这样:“例如,一个 Student 类与一个 Course 类有关联。一个学生可以选修很多课程,而一个课程可以被很多学生选修。但是,谁对成绩负责?将成绩放在 Student 课程中,可以让学生在所有课程中获得相同的成绩。将成绩放在 Course 课程中,可以让所有参加同一课程的学生获得相同的成绩。"
在我的情况下,为什么每项考试都不能简单地分配一个用户。确实,正如我朋友所说,这似乎意味着考试或考试。我无法通过明确的解释来证明这一点。那么我该如何处理拥有自己的分数和响应的类别呢?
谢谢!
【问题讨论】:
-
所有 M:N 关系都必须有一个关联类,比如关系数据库中需要连接表吗?我不明白为什么用户不能从列表中选择考试,然后在考试屏幕上显示总分和每个类别的分数。分数最初是 0 或 NULL 现在它有一个值。为什么不呢?
标签: associations uml class-diagram ooad