请帮我识别一些体现面向对象设计的小型到中型开源项目(最好用C ++或Java)。我想使用这些项目来演示如何通过面向对象的设计解决现实问题(与人工教科书示例相对)。我希望能够提出一个合理的解释,说明为什么某些事物被选为对象以及它们如何协同工作以解决问题。
答案 0 :(得分:2)
Unreal Tournament Public Source Code (432 Headers)包含用C ++编写的虚幻引擎类库的声明。我发现它是大型面向对象程序的丰富示例。它教会了我很多关于如何对我的代码进行模块化和面向对象的方法。它还演示了处理大型代码库的许多策略。
另外,因为所有你能阅读的都是头文件,你将有一个有趣(和教育)的时间试图弄清楚整个事情是如何结合在一起的。 (我实际上最终编写了自己的x86反汇编程序,所以我可以欺骗并阅读一些定义!)
同样,Doom 3 SDK包含一大块以非常易读的C ++编写的Doom / Quake引擎。
答案 1 :(得分:2)
Google Chromium(C ++):windows,tabs,plugins等都是类。
答案 2 :(得分:0)
几乎所有用Java设计的大型项目都是面向对象的,几乎是按照定义。您可以将Apache Hadoop看作是一个用Java编写的大型,开源,面向对象的项目。另一个是Apache Ant。
答案 3 :(得分:0)
Eclipse将是Java方面的一个很好的例子:插件架构都是面向对象的。
答案 4 :(得分:0)
我向我的OO导师问过同样的事情。他向我指出了JUnit的消息来源,建议看看它是如何逐个版本进化的。这将向您展示Kent Beck如何编写Java代码。
另一个例子就是Ward Cunningham的Fit来源。