【问题标题】:Examples of Object-Oriented Projects Help Procedural Programmers [closed]面向对象项目的示例帮助程序程序员[关闭]
【发布时间】:2009-10-26 01:22:21
【问题描述】:

请帮助我确定一些体现面向对象设计(最好是 C++ 或 Java)的中小型开源项目。我想使用这些项目来演示如何通过面向对象的设计来解决现实世界的问题(而不是人为的教科书示例)。我希望能够给出一个合理的解释,说明为什么选择某些事物作为对象,以及它们如何协同工作来解决问题。

【问题讨论】:

  • 您可能在浪费时间:最好通过实践而不是阅读来理解面向对象的概念。如果他们没有从人为的教科书示例中“得到”,他们可能不会从更复杂的现实世界示例中“得到”,因为这些都不会让观众感兴趣。向他们展示在他们自己的代码中的不同之处,他们就会明白。
  • 我不知道这是否一定是浪费时间。这取决于特定的人如何处理信息。就我个人而言,我养成的很多编码习惯/策略都是通过阅读其他人的代码而形成的。

标签: java c++ open-source oop


【解决方案1】:

Google Chromium (C++):窗口、标签、插件等都是类。

【讨论】:

    【解决方案2】:

    Unreal Tournament Public Source Code (432 Headers) 包含用 C++ 编写的虚幻引擎类库的声明。我发现它是一个large 面向对象程序的丰富示例。它教会了我很多关于如何模块化和面向对象的代码。它还演示了处理大型代码库的许多策略。

    此外,由于您只能阅读头文件,因此您将度过一段有趣的(和教育性的)时光,试图弄清楚整个事情是如何组合在一起的。 (实际上我最终编写了自己的 x86 反汇编程序,这样我就可以作弊并阅读一些定义!)

    同样,Doom 3 SDK 包含大量 Doom/Quake 引擎,用可读性极强的 C++ 编写。

    【讨论】:

      【解决方案3】:

      几乎所有用 Java 设计的大型项目都是面向对象的,几乎按照定义。你可以看看Apache Hadoop,它是一个用Java 编写的大型、开源、面向对象的项目。另一个是Apache Ant

      【讨论】:

        【解决方案4】:

        Eclipse 将是 Java 方面的一个很好的例子:插件架构都是面向对象的。

        【讨论】:

          【解决方案5】:

          我向我的 OO 导师提出了同样的问题。他向我指出了 JUnit 资源,并建议查看它是如何逐个版本演变的。这将向您展示 Kent Beck 如何编写 Java 代码。

          这方面的另一个例子是 Ward Cunningham 的 Fit 的来源。

          【讨论】:

            猜你喜欢
            • 2010-12-13
            • 1970-01-01
            • 1970-01-01
            • 2011-02-11
            • 1970-01-01
            • 1970-01-01
            • 2014-06-18
            • 1970-01-01
            • 2011-05-25
            相关资源
            最近更新 更多