3

我们想应用OO来设计一个参加考试并得到结果的过程。有两种不同的看法:

  1. 有2个对象:问卷和算法。问卷用于存储问题和最终结果,算法用于计算得到结果;

  2. 有3个对象:问卷、算法和结果,这里将结果分离为一个对象,仅用于存储结果。

我的问题是哪一个是更好的面向对象设计?或者,在这种情况下,正确的 OO 设计是什么?

如果我想记录用户的答案,是否需要创建一个与问题和算法相关的“答案”对象?

4

1 回答 1

1

你的第二个设计比第一个好。

如果以后要生成报告,只需收集所有Result对象并准备好。

并且,每个问题都将Answer附加一个对象。soQuestionnaire将包含QuestionAnswer对象的列表。

例如:Questionnaire对象可能包含以下属性:

  1. Id 或 RollNo.
  2. 姓名。
  3. 日期。
  4. 学科。
  5. 问题清单
  6. 答案列表。

5 & 6 可以组合成Question对象列表。这个对象可以由一个Answer对象组成。所以,只有问题列表就足够了。

如果我想记录用户的答案,是否需要创建一个与问题和算法相关的“答案”对象?

不,Algorithm不需要连接(例如组合)到Answer. 它应该将QuestionandAnswer作为 input 和 return Result

我的问题是哪一个是更好的面向对象设计?或者,在这种情况下,正确的 OO 设计是什么?

找出我们系统的不同用户,他们的期望,显式和隐式要求,输入格式,输出格式,你会发现你的设计。

例如:

用户将如何提供答案?是不是简单的文字,主观的,客观的,有多少选项?ETC...

于 2012-01-18T07:03:43.693 回答