【问题标题】:Simple object-oriented exercises for grasping the basics [closed]掌握基础知识的简单面向对象练习[关闭]
【发布时间】:2023-04-04 00:26:03
【问题描述】:

我正在教几个朋友一些基本的 PHP 面向对象概念,我想给他们一些真实的例子,但是很简单,所以他们可以掌握语法和 OO 的基础知识。我已经给他们做了以下练习:创建一个抽象 HTML 表单创建的小类。您可以为每个表单字段创建对象,每种类型的字段都有一个类。我还有一个接收表单字段对象的表单类。

你们还有其他关于示例或练习的想法吗?谢谢!

【问题讨论】:

    标签: php oop object


    【解决方案1】:

    我关于 PHP 中的对象的博文可能会有用:

    http://agiletoolkit.org/blog/how-to-use-object-oriented-programming-in-php/

    它给出了如何浸渍“几何”类、三角形、矢量、正方形等的示例。

    我在学习 OOP 时,正在看一本 C++ 中类似示例的书,但我忘记了名字。

    【讨论】:

    • 你的链接失效了,能补一下吗?
    • 这就是我刚开始接触 OOP 时的感受,你在网上找到的 99% 的教程都太基础了,而且没有任何意义。我对任何尝试学习面向对象编程的人的建议是:找到一些您在过程编程中编写的代码并尝试将其转换为 OOP。获取所有变量并使它们成为类的属性,找到合适的类名。然后把你所有的函数,分组到一个类中。我在 YouTube 上发布了一篇关于可重用分页类的教程:youtube.com/watch?v=X38IRlyY_ww&t=91s
    【解决方案2】:

    我一直很喜欢学习面向对象的思维方式的一个简单练习是采用一些简单的现实世界概念并将其建模为对象。这些概念可以是任何东西:

    • 咖啡机
    • 一只鸡
    • 自行车

    它非常与语言、平台无关等。其想法是抽象出所有实现细节(如 PHP 和 HTML)并专注于面向对象的思维。这种物体的模型看起来如何?它的属性是什么?它的约束是什么?它的行为如何?它如何与其他对象交互?

    您可以通过它们的外部可观察特征和行为、它们的交互等来有效地设计您的抽象类型,然后在 PHP 或任何其他选择的语言中实现这些抽象。但重点是将面向对象的思想从具体的实现中分离出来。

    【讨论】:

    • 我不太喜欢抽象的例子,因为它们实际上并没有做任何事情。没有一些面向应用的实践练习,很难解释 OO 的概念。
    • 解释OO的概念的最好方法是抽象它。 OO 是一种与语言无关的范式。否则,您将面临学生陷入特定语言实现的风险。教授概念,然后着手实施。
    【解决方案3】:

    一些有用/实用的东西:

    • 几乎每个人似乎都是从数据库抽象库开始的。做起来很简单
    • 不同缓存库(memcache、apc、文件缓存)的抽象
    • 也许是一个简单的路由器

    【讨论】:

      【解决方案4】:

      尝试一个表格生成类,他们在其中接收一个数组,并根据它的内容显示一个表格。

      【讨论】:

        【解决方案5】:

        这取决于他们已经知道多少,如果他们有 C++/C 编程经验并开始 OO,那么来自数据库、表单、向量等的示例将起作用,如果他们的经验相对较少,那么你必须从抽象或现实生活中的例子开始,在另一个回复中引用的例子

        A coffee maker
        A chicken
        A bicycle
        etc.
        

        在理解面向对象的概念及其背后的理论方面非常有用(尽管您提到过您不喜欢这样的示例)。他们必须了解一切如何协同工作以形成一台机器,每个组件(类)如何工作和交互(公共方法和接口),同时隐藏自己的功能,并为其他组件(类)提供一组服务。

        教师给出的一个非常流行的例子是收音机,用户不知道收音机内部是什么以及它是如何工作的,用户只知道它在做什么,而收音机将其功能提供给用户通过面板上的按钮使用。

        这些基本示例非常适合初学者,然后应该立即有与之相关的编程作业。一旦他们了解了基础知识,我认为应该使用编程和应用示例而不是抽象示例。

        【讨论】:

          猜你喜欢
          • 2011-04-20
          • 2014-09-09
          • 2010-12-08
          • 1970-01-01
          • 2020-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-19
          相关资源
          最近更新 更多