引入OO项目的好问题领域?

我正在与那些希望在经过几年的IT支持工作后重新开始编程的人合作。 他们了解所有迭代编程基础并经常使用它们,但他们唯一的面向对象编程经验是在大学里。 目标是提出一个体面大小的项目,有助于说明和实践OO概念。 有没有人曾经使用或想过一个好的问题域来介绍OO? 我正在寻找一个域,其中inheritance,抽象和多态等概念确实有意义,并在使用类建模时提供优势。

当然,我做了一些谷歌搜索,并找到了流行的ATM和地址簿OO的例子 。 它们都很不错,但ATM比我想要的要复杂一些。 地址簿可能不错,但我认为它可能不够复杂,或者没有足够清晰的对象建模域。 目标是项目需要花费相当多的精力来完成,而不是可以在一两个下午完成的事情。

至于实现细节,该项目将实现为具有最小UI的Java控制台应用程序。 学习OO概念以及如何在Java中实现它们是此应用程序的主要目的。

基于文本的冒险游戏怎么样?

我喜欢赌场游戏模拟。 模拟是导致OO编程开发的应用领域之一。 赌场游戏相对简单,但有一些复杂性。

您可以查看http://homepage.mac.com/s_lott/books/oodesign.html 。

与地址簿,通用目录(cds,书籍,DVD,设备等)相同。 这里的想法是,你有一个基本项,由所有其他类型(inheritance)扩展,每个类都可以实现一个特定的接口用于显示和其他目的(多态)。

当我教别人如何理解OO原则时,我已经要求他们将OO编程与他们建造房屋联系起来。 房子里有你需要的一切。