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