请帮我找一些中小型的开源项目,这些项目体现了面向对象设计(最好是C++或Java)。我想用这些项目来展示如何使用面向对象的设计解决现实世界中的问题(而不是教科书上的例子)。我希望能够提出一个合理的解释,说明为什么选择某些事物作为对象以及它们如何共同解决问题。
请帮我找一些中小型的开源项目,这些项目体现了面向对象设计(最好是C++或Java)。我想用这些项目来展示如何使用面向对象的设计解决现实世界中的问题(而不是教科书上的例子)。我希望能够提出一个合理的解释,说明为什么选择某些事物作为对象以及它们如何共同解决问题。
虚幻竞技场公共源代码(432个标头) 包含了 Unreal 引擎类库的声明,用 C++ 编写。我发现它是一个大型面向对象程序的一个丰富例子。它教会了我如何模块化和面向对象地编写代码。它还演示了许多获取大型代码库控制权的策略。
此外,由于你只能阅读头文件,因此你将度过一段有趣的(并且有教育意义的)时间来尝试弄清楚整个过程的组成部分。(实际上,我最终编写了自己的 x86 反汇编程序,以便可以作弊并阅读一些定义!)
同样,Doom 3 SDK 包含了大量易读的 C++ 代码,其中包含了 Doom/Quake 引擎的很多内容。
我曾向我的面向对象导师提出了同样的问题。他指引我去查看JUnit源代码,并建议我逐个版本地观察其演变。这将展示Kent Beck如何编写Java代码。
另一个类似的例子是Ward Cunningham的Fit源代码。