【问题标题】:Data Structure for Exam type app考试类型应用程序的数据结构
【发布时间】:2014-12-15 10:16:44
【问题描述】:

我正在尝试创建一个测试(考试)应用。但是,我在设计模型时遇到了困难。有人可以建议一个好的 UML 图来适应以下功能:

层次结构:

  • 模块具有单元
  • 单元有考试
  • 考试有问题
  • 问题类型:(对错、识别、多项选择、匹配类型)

到目前为止,这是我的原始设计: 使用这种设计,我无法解决“匹配类型”之类的问题。另外,我怎样才能坚持以前的考试并轻松检查正确答案?

【问题讨论】:

  • 不同的问题应该设置为单独的问题。或者你违反了规则。
  • 您可以从大量现有的考试应用程序中汲取灵感,例如MoodleDocs: Database schema introduction。另请参阅stackoverflow.com/help/on-topic:“请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述”
  • 我同意 xmojmr 的担忧。恕我直言,如果其他人为您工作,您如何期望学到任何东西?
  • 嗨@xmojmr:对不起,我无法添加我的初始工作。我添加了我当前工作的屏幕截图。希望这可以添加更多信息。
  • 双箭头是什么意思? UML 标准中没有这样的东西。

标签: oop object uml object-oriented-analysis


【解决方案1】:

当你不确定如何连接两个类时,想想是否应该在它们之间再使用一个类。

【讨论】:

  • 我相信一个好的类模型应该只包含系统功能真正需要的类,仅此而已。所以只有当你完全确定所需的关系是 M:N 时才添加额外的类。
  • @VDohnal 或者错过了任务/现实生活中的一些必要主题。 (我们应该将学生给出的答案和作为正确答案集的答案不同)。此外,如果我们在 OOP 中,我们应该使用多态类,而不是模式/变体。并且注意,Type这个词已经有它的意思了,不要用其他方式!
  • @VDohnal 一个好的类模型就是这样的模型,它可以让你的类变得小而简单。你的任务不是让模型本身变小!
  • 我看到我们在这里进行了一场有趣的辩论 :) 我必须说,将多个类泛化到一个接口(问题)而不指定这些单个类特定的属性或关系对我来说似乎是一种误导。但是我们离OP已经很远了……
【解决方案2】:

你可以像这样创建类图(用SPARX Enterprise architect创建)

但是类之间的关联取决于功能需求。例如。在此示例中,一项考试仅属于 1 个特定单元,但您可能需要可以属于 0..N 个不同单元的考试。所以这只是一个例子。

此外,如何持久化和检查答案取决于进一步的功能要求。最简单的方法是将学生的答案与特定问题的链接一起存储。


添加匹配类型问题有点复杂,这里有几个想法:

模型使用泛化-Option 是一个抽象类,有两个继承类ListOption 和MatchingTypeOption。当您需要存储有关答案的详细信息时,必须使用 SelectedOption 进行类似操作,因为您需要存储选定的选项对以匹配类型。

但您也可以只存储信息was the answer correct - yes/no。

【讨论】:

  • 问题-问题类型的片段是一个示例,不应该这样做。你有什么类和接口?
  • 什么接口? UML 类可以是例如映射到 SQL 表。
  • 良好的 OOP 编程风格坚持使用接口/抽象类作为抽象而不是 TYPE/MODE 或类似的东西。顺便说一句,TYPE 已经有了它的含义。
  • 当您将您的类(分析模型)映射到 SQL 数据库(技术实现)时,您如何映射接口? Type 和 QuestionType 不一样。
  • @VDohnal 在第一个图中,在“答案”实体中,您指的是特定考试的可用选项/答案吗?还是学生自己的答案?
猜你喜欢
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 2013-03-18
  • 2015-12-24
相关资源
最近更新 更多