假如我要用面向对象的角度去考虑做一个问卷发布系统 问卷分两种:
一个是调查问卷,用户选择完提交,不会得到任何反馈.比如:”您对当前站点的风格是否满意”.用户选择一个答案提交. 一种是测试问卷,用户做完会根据选择答案的总分段得到一个结果反馈回来.比如:”测试你是否是一个受人欢迎的角色?”有几道题,用户选择得到一个总分,根据分值得到一个结果. 现在我考虑应该大概有几个对象:问卷(抽象类),调查问卷(继承于问卷),测试问卷(继承于问卷),选项(对象集合),测试结果(测试问卷的反馈) 选项和测试结果与问卷是组合关系,然后创建问卷的时候就用抽象代替实例. 现在我有个问题,关键在于问卷的测试结果这个属性,子类和父类应该是is的关系是吧,那么父类是否应该拥有子类的全部属性呢?问卷抽象类是否应该包含这个测试结果属性呢?如果包含的话调查问卷没有结果怎么办?不包含又怎么用抽象类的引用来代替测试问卷的引用呢?不包含就引不到这个属性了. 这个问题应该怎么去做抽象呢?小弟水平比较菜,对面向对象不甚了解,请各位老大指点迷津,谢谢了!
一个是调查问卷,用户选择完提交,不会得到任何反馈.比如:”您对当前站点的风格是否满意”.用户选择一个答案提交. 一种是测试问卷,用户做完会根据选择答案的总分段得到一个结果反馈回来.比如:”测试你是否是一个受人欢迎的角色?”有几道题,用户选择得到一个总分,根据分值得到一个结果. 现在我考虑应该大概有几个对象:问卷(抽象类),调查问卷(继承于问卷),测试问卷(继承于问卷),选项(对象集合),测试结果(测试问卷的反馈) 选项和测试结果与问卷是组合关系,然后创建问卷的时候就用抽象代替实例. 现在我有个问题,关键在于问卷的测试结果这个属性,子类和父类应该是is的关系是吧,那么父类是否应该拥有子类的全部属性呢?问卷抽象类是否应该包含这个测试结果属性呢?如果包含的话调查问卷没有结果怎么办?不包含又怎么用抽象类的引用来代替测试问卷的引用呢?不包含就引不到这个属性了. 这个问题应该怎么去做抽象呢?小弟水平比较菜,对面向对象不甚了解,请各位老大指点迷津,谢谢了!
解决方案 »
- 汉字拼音首字母检索,是在数据库中建立英语缩写,还是在Form中检索
- 如何快速查询按拼音排序的成语字典文件(aa.txt)中是否含某成词?
- 在 System.IndexOutOfRangeException 中第一次偶然出现的“System.Data.dll”类型的异常
- 构造体内部的构造体参数值怎么取得?
- C#打印预览中进行打印设置(像Excel中一样)怎样实现?
- 求一正则表达式
- 这是台湾反对大陆的游行的帖子
- 疯了,DATAGRID 和 CHECKBOX问题.
- 鼠标 进入datagridview的某个单元格/列时,显示为手形
- 知道了DataRow, 如何知道该DataRow在BindingContext中的Position?
- !!!~文本框问题~!!!!!!
- 控件中的TAG 属性是什么意思
class Question
{
string topic;
List<string> choices; //只能单选还是可以多选? bool multipleAnswer;
}问卷
class Quiz
{
List<Question> q;
}问题答复
class Answer
{
Question q;
List<int> answers;
}用户问卷答复
class QuizAnswer
{
Quiz q;
List<Answer> a;
}测试结果
class QuizResult
{
//......
}测试处理
interface IQuizManager
{
Quiz GetQuiz();
QuizResult Process(QuizAnswer qa); //如果是问卷就返回null, 或者使用Null Object模式?
}
在测试问卷中写具体实现,调查问卷中不重写