代码之家  ›  专栏  ›  技术社区  ›  JoeCortopassi Dan

为什么我应该使用类而不仅仅是函数的集合?[复制品]

  •  8
  • JoeCortopassi Dan  · 技术社区  · 15 年前

    可能重复:
    What are the benefits of OO programming? Will it help me write better code?
    OO PHP Explanation for a braindead n00b

    刚开始学习/玩用PHP创建类,我想知道 他们能解决什么痛苦? 似乎我只需要在文件中包含一组函数就可以完成相同的工作。所以我的问题是: 我为什么要上课?

    6 回复  |  直到 15 年前
        1
  •  4
  •   froadie    15 年前

    这是一种以更直观、更真实的方式查看代码的方法。(您将数据和所有可能的数据操作打包在一起。)它还鼓励封装、抽象、数据隐藏…你真正想要的是OOP的优势。

        2
  •  5
  •   Wayne Hartman    15 年前

    面向对象编程的三大支柱。好好学习:

    http://codeidol.com/csharp/learncsharp2/Object-Oriented-Programming/The-Three-Pillars-of-Object-Oriented-Programming/

    包封

    面向对象编程的第一个支柱是封装。封装背后的思想是,您希望保持每个类型或类的独立性和自包含性,这样您就可以在不影响任何其他类的情况下更改一个类的实现。

    专业化

    面向对象编程的第二个支柱是专门化,它是通过继承实现的;具体来说,通过声明一个新的类从一个现有的类派生而来。专门化类继承了更一般的类的特性。专门化的类称为派生类,而更一般的类称为基类。

    派生类型继承共享字段和方法,而不是将代码从一种类型剪切和粘贴到另一种类型。如果更改了在基类中实现共享功能的方式,则不必更新每个派生类型中的代码;它们会继承更改。

    多态性

    多态性允许使用统一的接口处理不同数据类型的值。多态性的主要用途是使属于不同类型的对象能够响应相同名称的方法、字段或属性调用,每个调用都根据特定类型的适当行为。程序员(和程序)不必事先知道对象的确切类型,因此确切的行为是在运行时确定的。

    参见:

    http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming

    http://en.wikipedia.org/wiki/Type_polymorphism

        3
  •  1
  •   BarsMonster    15 年前

    基本上,类允许您将数据与代码(即组织)放在一起。

    此外,类允许您的“追随者”自定义类,而无需重写代码,而是创建新的继承类。

    每一个基于类的代码都可以用函数重写,但是要理解它会困难得多。

        4
  •  1
  •   Richard Levasseur    15 年前

    通常,这样您就可以自定义该函数集的行为。通常情况下,您有一系列协调一致的功能。

    使用这些函数的人可能只想为某些特殊情况修改其中一个函数。或者,您可能提供了一个类,它强制函数以某种原因进行交互,但是您不能定义它们实际将要进行的操作 .

    一个老生常谈的例子:想象一下如果你有一些图书馆来检查 东西 没有重叠。

    class Comparator:
      def Greater(self, left, right): pass
      def Less(self, left, right): pass
    
    def EnforceNoOverlap(self, comparator, left, right)
      assert comparator.Greater(left, right) != comparator.Lesser(left, right)
    
        5
  •  0
  •   anthares    15 年前

    通过适当的数据隐藏、关注点分离和其他一些最佳实践,它可以使代码更加细化。

    IMO迟早只在代码中使用函数会导致难以维护和扩展的意大利面代码。修复bug更难,实现新功能也更难,因为通常有很多代码复制。

    另外,在代码设计中不能使用多态性,因此不能使用抽象。

        6
  •  0
  •   zerkms    15 年前

    类/对象是实现面向对象应用程序设计的方法。它在许多OOAD/OOP书籍中详细介绍。

    推荐文章