面向学习或改进面向对象编程(OOP)技能的良好挑战/任务/练习

提高面向对象编程技能是一个很好的挑战?

这次调查背后的想法是提供一个想法,哪些练习是有用的学习面向对象。

挑战应该尽可能地与语言无关,要么很less使用或不使用特定的图书馆,要么只使用最常见的图书馆。 尽量在每个答案中只包括一个挑战,这样一个投票就可以单独对应这个挑战的优点。 如果所需要的技能水平被指示,那么也是很好的,也是为什么这是一个有用的练习背后的理由。

挑战的解决scheme可以作为“如何…”问题的答案发布,并从这里链接到这个问题。

例如:

  • 挑战 – 实施后进先出的堆栈
  • 技能水平 – 初学者
  • 理由 – 给出如何引用对象的经验

“面向对象devise中的build筑技能”是一本可能有用的免费书籍。 描述如下

“这本书的目的是帮助初学者devise一些有趣和适度复杂的面向对象devise的练习,这本书还可以帮助pipe理人员在开发面向对象软件的过程中感到舒适。构build是一个微不足道的步骤,需要仔细的思考和devise,而且由于这些应用程序在很大程度上是娱乐性的,所以它们很有趣,很有吸引力,本书允许读者在项目截止date之前探索面向对象devise的过程和工件做出好的devise似乎是不可能的。

从头开始写一个具有挑战性的 试着让一些人(大约五个,应该是可行的)来使用它。 回应他们的变更请求。

调整你的程序的devise。 从小开始,然后看它成长。 pipe理这种增长。 这很难。 你也将不得不修复错误和保持一段时间,这对我来说是一个非常宝贵的教训。

挑战:用您select的语言为您的网站/服务API编写一个包装,它不存在(例如用C#编写的ZenDesk API包装器)。 将包装发布为开放源代码供其他人使用。

技能水平:初级到中级

理由:要学习如何将第三方Web服务API推广到一组有意义的对象/类中,可以使用所选语言更轻松地重用该API。

学完基础知识后,学习“四人帮”devise模式书。

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1221488916&sr=8-1

对于任何希望了解如何使用面向对象devise优雅的解决scheme来解决常见的编码问题的编码人员来说,这是一个经典的必读书籍。

采取程序式的书面代码,并尝试将其转换为基于OOP的解决scheme。 在这个过程中,请查阅一本关于重构和devise模式的书。 我的一个朋友能够正确地理解面向对象的概念,向前迈进了一大步。 至于什么,这可能不适用于每个人。

我发现CRC卡在学习,教学和build设良好的面向对象devise方面非常有效。

当然,一个很好的挑战虽然比“从头开始”的任务更难获得,但是要重构一些现有的代码,这些代码不使用inheritance,或者不使用很多的代码来更好地使用inheritance。 重构的过程将会暴露出很多好处和问题,正如我在最近的项目中那样。 这也促使我比过去的项目更了解这些概念,并创build了自己的面向对象的devise。

一个给定的任务与“OOP”很less有关,更多的是如何对它进行评分。

我会看看重构书,第3章,并确保解决scheme中不存在不良的代码气味。 或者,更重要的是,去适用的那些。

最重要的是,注意存在setter和getters(表明你正在从一个class的价值观上操作,而不是要求class级操作它自己的价值观),或者使用“扩展”而不应用Liskov替代原则,那。