我们想应用面向对象的设计来设计一个参加考试和得到结果的过程。 有两种不同的看法:
有2个对象:问卷和算法。调查问卷存储问题和最终结果,算法用于计算得到结果;
一共有3个对象:调查问卷、算法和结果,这里将结果分离为一个对象,仅用于存储结果。
我的问题是哪一种是更好的面向对象设计?或者,在这种情况下,什么是正确的 OO 设计?
如果我想记录用户的答案,是否需要创建一个与问题和算法相关的“答案”对象?
你的第二个设计比第一个更好。
如果稍后您想生成报告,只需收集所有
Result
对象并准备即可。
并且,每个问题都会附加一个
Answer
对象。所以 Questionnaire
将包含 Question
和 Answer
对象的列表。
例如:
Questionnaire
对象可能包含以下属性:
5 和 6 可以组合成
Question
对象列表。并且这个对象可能由一个 Answer
对象组成。因此,只需问题列表就足够了。
如果我想记录用户的答案,是否需要创建一个与问题和算法相关的对象作为“答案”?
不,
Algorithm
不需要连接(例如组合)到Answer
。它应该以 Question
和 Answer
作为输入并返回 Result
。
我的问题是哪一种是更好的面向对象设计?或者,在这种情况下,什么是正确的 OO 设计?
找出我们系统的不同用户、他们的期望、显式和隐式要求、输入格式、输出格式,然后您将发现您的设计。
例如:
用户将如何提供答案?是简单的文字,主观,客观,有多少种选择?等等...