提高面向对象编程技能有什么好的挑战?
这次调查背后的想法是提供哪些练习对学习OOP有用的想法.
挑战应尽可能与语言无关,需要很少或不使用特定的库,或只需要最常见的库.尝试每个答案只包含一个挑战,因此投票将仅对应该挑战的优点.如果指出了所需的技能水平,以及为什么它是一项有用的练习背后的理由,也会很好.
然后可以将挑战的解决方案作为"如何..."问题的答案发布,并从此处链接.
例如:
我有一个名为Question的类,它有一个名为Type的属性.基于这种类型,我想以特定的方式将问题呈现给html(多选=单选按钮,多个答案=复选框等...).我开始使用单个RenderHtml方法,根据问题类型调用子方法,但我正在考虑将渲染逻辑分离为实现接口的各个类可能更好.但是,由于这个类使用NHibernate持久化到数据库并且接口实现依赖于属性,我不确定如何最好地布局类.
有问题的课程:
public class Question
{
public Guid ID { get; set; }
public int Number { get; set; }
public QuestionType Type { get; set; }
public string Content { get; set; }
public Section Section { get; set; }
public IList<Answer> Answers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
基于QuestionType枚举属性,我想呈现以下内容(仅作为示例):
<div>[Content]</div>
<div>
<input type="[Depends on QuestionType property]" /> [Answer Value]
<input type="[Depends on QuestionType property]" /> [Answer Value]
<input type="[Depends on QuestionType property]" /> [Answer Value]
...
</div>
Run Code Online (Sandbox Code Playgroud)
目前,我在一个名为RenderHtml()的函数中有一个大的switch语句,可以完成脏工作,但是我想将它移动到更干净的东西.我只是不确定如何.
有什么想法吗? …