Programación Orientada a Objetos en WordPress Clases

Como se describe en el primer post de esta serie, nos acercamos al concepto de programación orientada a objetos en el contexto de WordPress, y lo estamos haciendo para muy principiante.

Eso significa que si nunca has oído hablar de OOP, si has tenido curiosidad por aprenderlo, y usted es alguien que está interesado en WordPress y que está aprendiendo a desarrollar soluciones además de esto, entonces esta serie es para usted..

En el próximo conjunto de artículos, cubriremos todos los aspectos principales de la programación orientada a objetos. Una vez que hagamos eso, veremos cómo podemos aplicar lo que hemos aprendido al crear una solución de trabajo para WordPress..

Pero primero, tenemos que empezar con lo básico..

Que son las clases?

Si tuviera que pedir a 10 desarrolladores diferentes su definición de una clase, probablemente obtendría muchos similar Respuestas, pero pocas de las cuales eran en realidad las mismas. De hecho, el que oí que se repetía con más frecuencia cuando era más joven era así:

Una clase es un plano para crear un objeto..

En teoría, suena genial. especialmente Si sabes lo que es un objeto. Pero ese es el problema, ¿no es así? Estamos tratando de aprender acerca de la programación orientada a objetos, por lo que no hay garantía de que sepamos qué es un objeto; por lo tanto, ¿cómo podemos entender que una clase sirve como un plan para ello??

En cierto sentido, es la pregunta.

Así que retrocedamos unos pocos pasos y definamos qué es un objeto para definir más claramente qué es una clase.

Entendiendo objetos

La idea general del paradigma de la programación orientada a objetos es que nosotros, como programadores, podemos modelar más fácilmente la información que vemos en el mundo real utilizando construcciones en un código..

Por ejemplo, en el mundo real tenemos objetos que pueden describirse utilizando adjetivos, y estos objetos pueden realizar acciones. Aunque esto puede ser un poco cliché, piense por un momento, sobre un automóvil:

  • Tiene varios adjetivos como tamaño y color..
  • Puede conducir y puede aparcar..

Nuevamente, es un ejemplo simple, pero demuestra el punto de que todo lo que tenemos en el mundo real generalmente puede reducirse a un sustantivo que puede ser descrito por sus adjetivos y las acciones que realiza..

Entonces, generalicemos esta idea a los objetos. De hecho, sustituyamos una palabra por otra:

  • Un sustantivo es un objeto..
  • Un adjetivo y un atributo (o una propiedad).
  • Un verbo es un método (o una función).

Bastante fácil, ¿verdad? En resumidas cuentas, deberíamos poder describir las cosas que vemos en el mundo real como objetos dentro de un paradigma de programación. Tenga en cuenta que algunos idiomas llaman a las propiedades de los atributos y algunas funciones de los métodos de llamada. En realidad, tampoco importa, es todo lo mismo. Simplemente se refieren a los adjetivos sobre el objeto y las acciones que puede realizar, respectivamente.

Pobres ejemplos

A continuación, la mayoría de los cursos de programación o libros. siempre Comience con un ejemplo sobre cómo se pretende que los objetos modelen objetos del mundo real (similar a como lo hice con el ejemplo de automóvil anterior). 

Y hasta cierto punto, hay verdad en eso. Para los que tener Estuvimos trabajando en el desarrollo, entonces es probable que estés familiarizado con cómo podemos modelar personas en el contexto de nuestra aplicación, pero nos estamos adelantando..

Si bien es cierto que podemos usar programación orientada a objetos para modelar objetos del mundo real, he descubierto que, más a menudo que no, estoy modelando una forma más generalizada de un objeto del mundo real, como un usuario preferible a persona - y que las acciones que realizan son más singulares para ellos..

Para ese fin, los ejemplos que quiero dar a lo largo de este artículo y los del resto de esta serie estarán más orientados hacia aplicaciones prácticas en la programación de computadoras. Nadie va a escribir un plugin de automóvil y nadie va a crear un objeto animal (que es algo que también a menudo se ve y se escucha en los cursos de programación de introducción).

En su lugar, vamos a tratar de concentrarnos un poco más en los objetos que es más probable que se vean en el ámbito de la programación, no en el mundo real. No porque la programación orientada a objetos sea débil, sino porque la forma en que enseñamos es débil..

Buenos ejemplos

Por supuesto, esto plantea la pregunta de ¿qué constituye un buen ejemplo? El problema de responder una pregunta como esta es que, literalmente, puede ser una gran variedad de cosas.. 

Esto incluye objetos tales como:

  • una entrada de blog,
  • un documento como un resumen,
  • un autenticador o sistema de autentificación,
  • un producto,
  • un generador de contraseñas,
  • … y así.

Y verás: muchas de estas cosas no existen realmente en el mundo real. Por ejemplo, las publicaciones del blog no son tangibles. Son cosas que leemos en nuestras pantallas. ¿Pero eso significa que no tienen propiedades como una fecha, una hora y un autor? ¿O significa que no tienen acciones como publicar y eliminar??

Por supuesto no.

Así que a medida que avancemos a lo largo de esta serie, hablaremos sobre el objeto en términos de las cosas con las que es más probable que trabajemos..

No nos veo programando un animal, y ciertamente no en WordPress, en ningún momento durante esta serie :).

De vuelta a lo fundamental

Bien, ahora que hemos tomado una breve digresión en qué los objetos en realidad son, y buenos y malos ejemplos de cada uno, es hora de comenzar a hablar sobre las clases y cómo realmente sirven como planos para los objetos..

En la programación, un objeto se crea a partir de una clase. Eso significa que una clase define todas las propiedades que tiene un objeto y las acciones que puede realizar, y luego la computadora creará un objeto en la memoria..

Cuando se trata de clases, es posible que escuche a los desarrolladores hablar sobre escribir clases, definir clases o construir clases. Cualquiera y todos estos términos son aceptables.

Después de eso, es posible que escuche a los desarrolladores hablar sobre la creación de objetos. El acto de crear un objeto se llama instanciación. Sí, es una palabra grande para un concepto relativamente simple. Pero piénselo de esta manera: cuando tiene una clase, tiene una definición a partir de la cual puede crear múltiples instancias de un objeto..

Si necesitamos establecer una analogía con el mundo real, primero piense en un conjunto de planos para una casa. Establece el plano del piso, las dimensiones, las paredes, etc. que brindan información a los trabajadores de la construcción sobre cómo construir una casa. Luego, cuando llega el momento de construir una casa, un equipo de trabajadores de la construcción erige la casa basándose en el plano.

Tal es el caso de las clases, la instanciación y los objetos. Las clases son los planos, la computadora es el equipo de trabajadores de la construcción y los objetos son la casa. Y así como se pueden erigir múltiples casas a partir de un solo plano, tal es el caso con objetos y clases.

Los modelos mentales de clases y objetos.

Cuando se trata de escribir código, algunas personas pueden imaginar el objeto en sus cabezas, otras, tal vez no.. 

Personalmente, creo que esto tiene más que ver con la forma en que cada uno de nosotros aprende y procesa la información, pero creo que es posible comenzar a imaginar mentalmente cómo funcionan juntos los sistemas de software a medida que escribe el código..

Aquí, no vamos a mirar ningún sistema complejo; sin embargo, son Voy a ver un ejemplo de una clase y luego una representación visual de lo que podría parecer en términos de código y en términos de una imagen mental..

Una clase para una publicación de blog

Ya que estamos tratando con WordPress, tal vez un ejemplo inicial para una clase sería uno que represente una publicación de blog..

Por supuesto, este será un ejemplo simple para demostrar las ideas de atributos y funciones, pero cubriremos varias construcciones con más detalle en futuros artículos..

Entonces, dicho esto, digamos que vamos a crear una clase para una publicación de blog. Digamos también que nuestra publicación de blog tendrá un autor, una fecha en la que se publicó, se publique o no, y las acciones para publicar y eliminar.

Una definición de clase de ejemplo para una publicación de blog con estos atributos y funciones se verá así:


clase Blog_Post private $ author; privado $ publish_date; privado $ es_publicado; función pública publish () // Publicar el artículo aquí public function delete () // Eliminar el artículo aquí

Para aquellos que están familiarizados con la programación orientada a objetos, puede que reconozca algo de la información anterior y también que reconozca que he omitido ciertas cosas (como el constructor). No te preocupes por eso, cubriremos esos conceptos más adelante..

Para aquellos que son completamente nuevos en programación, esto es lo que parece una definición de clase básica. Por el momento, no te preocupes por las palabras. privado y público como cubriremos esos mas tarde.

En su lugar, centrarse en $ autor, $ publish_date, y $ is_published. Estos son los atributos. Observe que se encuentran por encima de las definiciones de funciones en la clase. Estos son análogos a los adjetivos que describen la Entrada en el blog.

A continuación, tenemos las funciones. publicar() y borrar(). Estas dos funciones son las acciones que se pueden realizar. en la Entrada en el blog. Recuerde, cómo se pueden mover los objetos en el mundo real (como puede conducir un automóvil), se puede publicar una publicación de blog.

Una representación visual

Entonces, ¿qué sucede cuando realmente creas una instancia de blog? Es decir, cuando creamos una publicación de blog en código, ¿cómo podemos imaginar mentalmente lo que está sucediendo dentro de la computadora?.

En primer lugar, vamos a describir cómo se crea una instancia de blog. Recuerde, instanciar es una palabra tal como erigido es para trabajadores de la construcción, es cómo se crea un objeto desde una clase.

A continuación, veamos cómo podemos usar la definición de una sola clase para crear tres publicaciones de blog diferentes:

$ first_post = new Blog_Post (); $ second_post = new Blog_Post ();

Lo suficientemente fácil de leer, ¿verdad? Arriba, hemos creado dos variables que harán referencia a dos completamente diferentes. Entrada en el blog objetos. 

Tenga en cuenta que aunque hablaremos más sobre esto en un artículo futuro, la palabra nuevo es lo que instruye a la computadora para instanciar una Entrada en el blog de nosotros de la definición de clase.

Así que echemos un vistazo al primer ejemplo donde obtenemos nuestra primera instancia de Entrada en el blog.

Note en esta ilustración, tenemos el $ first_post variable que se refiere a la instancia de la Entrada en el blog que fue creado los Entrada en el blog existe en la memoria de la computadora, tiene sus atributos que están disponibles, así como sus métodos que están disponibles.

Podemos acceder a todos estos a través del $ first_post Variable que hace referencia a este objeto. Hablaremos de eso con más detalle más adelante en la serie..

Pero ¿qué pasa con el $ second_post? Cómo ese mirar dentro del contexto de la programación orientada a objetos?

Si comparas las dos ilustraciones, se ven más o menos iguales, ¿verdad?? $ first_post hace referencia a una instancia de Entrada en el blog, $ second_post hace referencia a una segunda instancia de Entrada en el blog a pesar de que ambos vino de una sola clase.

Tenga en cuenta que para aquellos que son técnicamente astutos, es es Es posible que ambas variables hagan referencia a una sola instancia, pero eso está fuera del alcance de este artículo..

¿Qué pasa después??

De todos modos, en este punto, debe tener un alto nivel de comprensión de lo que es una clase, el rol que desempeña en la programación orientada a objetos y cómo podemos crear instancias de objetos accesibles a través de variables..

Esto todavía no nos muestra cómo interactuar con las clases, ¿verdad? Llegaremos a eso, pero primero debemos discutir algunos de los aspectos más primitivos de la programación, como cadenas, matrices, bucles y condicionales..

Cada uno de los constructos mencionados anteriormente nos ayudará a dar vida a nuestros objetos, y una vez que hayamos realizado un recorrido por cada uno de ellos, volveremos para crear clases más maduras que realmente puedan funcionar..