PHP Manual
/
PHP中的OOP系列

面向对象编程的基本理念

02. 01. 2020

Obsah článku

面向对象的编程是一种范式,一种对如何编程的看法。你很快就会看到,OOP给所有的常见问题和困难带来了相当根本的简化,这些问题在实际编程中被反复解决。

基本理念

面向对象编程的基本思想是将一个大型应用(复杂的任务)划分为许多小部分,我们可以优雅地独立解决。

例如,如果我们为一个机票预订系统编程,这是一个非常复杂的项目,要解决成千上万的情况。如果我们能将所有复杂的逻辑分解成许多层次和部分,我们就能很容易地理解整个复杂的系统,并对各个子任务进行独立编程。

OOP和将代码划分为对象的实际优势

除了学术观点外,还有许多使用OOP的实际理由。

  • 应用程序将创建一个encapsulation,这意味着数据总是在一个本地上下文中处理,这个本地上下文很少,所以我们不必一下子考虑到整个应用程序。
  • 我们可以把一个应用程序分成成百上千的小部分,由不同的人并行开发,只需安排一个共同的接口。
  • 我们可以从不同层的角度看应用程序(抽象地看整个模块,或局部地看解决特定算法的具体功能)。
  • 在调试应用程序(debugging)时,我们能够对应用程序进行分步,省略或替换某些部分。
  • 我们可以更好地应用**设计模式,从而在代码中的错误和复杂问题发生之前就加以预防。

就个人而言,我无法想象一个人以上的团队在编程时有什么不同。

注意:

使用对象会给计算机带来更多的内存和CPU开销,所以这会使应用程序的性能降低一些。然而,在实际环境中,这并不重要,因为将应用程序重新编程为对象确实会损失一些性能(通常是百分之几的单位),但它可以节省程序员的时间(通常是百分之几十到几百)。 人的时间总是比计算机的时间贵得多(而且非常有限)。

不要忘记,OOP也给整个应用程序带来了极大的简化,并允许大型应用程序在合理的时间内完成。如果没有对象,大量复杂的应用程序几乎不可能编程。

与现实世界的关系

软件设计中OOP的基本目标是尽可能地模拟现实世界的属性、行为和原理。OOP中的对象代表真实的实体。这种思维方式使我们能够建立巨大的复杂系统,这些系统可以被很好地理解,在内部解决现实世界的问题,就像没有计算机一样,而且这些原理可以被解释给真正的人。

例如,如果我们正在实现一个内容管理应用程序,在许多真实的实体(文章、作者、类别)中布置所有的内部逻辑是有意义的,并且不是根据人为生成的记录ID(如数据库中的传统做法)而是根据真实的关系来建立会话。

具体实施的例子。

class Article
{
private Author $author;
/** @var Category[] */
private array $categories;
private string $title;
}
class Author
{
private string $name;
}
class Category
{
private string $name;
}

我们可以看到,"文章 "类不仅包含技术参数,如作者记录的ID,而且是对作者实体的真正绑定,它同样有自己的属性。

关于具体的实现和语法的解释,请参见介绍性教程

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
2.
Status:
All systems normal.
2024