Spanish (Español) translation by Oscar Abad Folgueira (you can also view the original English article)
Como se esbozó en el primer post de esta serie, nos estamos enfocando en el concepto de programación orientada a objetos en el contexto de WordPress, y los estamos haciendo para el principiante.
Esto significa que si no has oído nunca sobre POO, o si has sido curioso para aprenderla, y eres alguien que estás interesado en WordPress y aprender cómo desarrollar soluciones para el, entonces esta serie es para ti.
A lo largo de el siguiente conjunto de artículos, vamos a cubrir todos los mayores aspectos de la programación orientada a objetos. Una vez hecho esto, vamos a ver cómo podemos aplicar lo que hemos aprendido creando una solución funcional para WordPress.
Pero primero tenemos que empezar por lo básico.
¿Qué son las clases?
Si le preguntaras a 10 programadores diferentes por la definición de un clase, probablemente obtendrías muchas respuestas similares pero pocas serán la misma. De hecho, lo que yo oí repetidas veces cuando era más joven era algo así:
Una clase es un modelo para la creación de un objeto.
En teoría, suena bien especialmente si sabes lo que es un objeto. Pero ese es el problema, ¿no? Estamos intentando aprender sobe programación orientada a objetos, por lo que no hay garantía de que siempre sepamos lo que es un objeto: por lo tanto, ¿cómo podemos entender que una clase sirve de modelo para el?
En cierto sentido, la pregunta está empezando.
Por lo tanto vamos a guardar unos pocos pasos y definir qué es un objeto para, de esta manera, definir más claramente lo que es una clase.
Entendiendo los Objetos
La idea del paradigma de la programación orientada a objetos es que nosotros, como programadores, podemos modelar más facilmente la información que vemos en el mundo real utilizando constructores en un código.
Por ejemplo, en el mundo real tenemos objetos que pueden describirse usando adjetivos, y estos objetos pueden realizar acciones. Aunque esto puede ser un poco cliché, piensa por un momento sobre el coche:
- Tienes muchos adjetivos como tamaño y color.
- Puede conducirse y se puede aparcar.
Una vez más, un ejemplo sencillo, pero esto prueba que todo lo que tenemos en el mundo real generalmente se puede reducir a un nombre que puede describirse con artículos y acciones que lleva a cabo.
Entonces, vamos a generalizar esta idea a los objetos. De hecho, vamos a sustituir una palabra por otra:
- Un nombre es un objeto.
- Un adjetivo es un atributo (o una propiedad).
- Un verbo es un método (o una función).
Es bastante fácil, ¿verdad? Lo breve de ello es que debemos ser capaces de describir las cosas que vemos en el mundo real como objetos dentro del paradigma de la programación. Date cuenta de que algunos lenguajes llaman atributos a las propiedades, y algunos llaman métodos a las funciones. En realidad no importa, uno u otro - es todo lo mismo. Simplemente se refieren a los adjetivos del objeto y acciones que pueden realizar respectivamente.
Ejemplos Mediocres
Después, la mayoría de los cursos o libros de programación siempre empiezan con un ejemplo sobre como los objetos se comparan con los objetos del mundo real (de mera similar a lo he he hecho con el ejemplo del coche antes).
Y hasta cierto punto hay verdad en eso. Para aquellos que han estado trabajando en desarrollo, es muy fácil familiarizarse sobre cómo podemos modelar gente en el contexto de nuestra aplicación, pero sería adelantarnos.
Aunque es cierto que podemos utilizar la programación orientada a objetos para modelar objetos del mundo real, me he dado cuenta de que estoy modelando una forma más generalizada de un objeto del mundo real - como un usuario en el lugar de una persona - y que las acciones que llevan a cabo son más exclusivas de ellos.
Para terminar, los ejemplos que quiero darte en este artículo y las del resto de esta serie van a ser más prácticos orientados a la programación. Nadie va a escribir un plugin de coche y nadie va a crear un objeto animal (es algo que siempre ves y oyes en los cursos de introducción de programación).
En cambio, vamos a intentar centrarnos un poco más en objetos que son mas parecidos a lo que veremos en la programación real - no en el mundo real. No es porque la programación orientada a objetos sea débil, Sino porque la manera de avanzar enseñando es débil.
Buenos Ejemplos
Por supuesto, esto plantea la cuestión sobre lo que constituye un buen ejemplo. El problema con responder una pregunta como esta es que literalmente puede ser una gran variedad de cosas.
Esto incluye objetos como:
- un artículo del blog,
- un documento como un resumen,
- un autenticador o un sistema de autenticación,
- un producto,
- un generador de contraseñas,
- etcétera...
Y ya ves: Muchas de estas cosas no existen realmente en el mundo real. Por ejemplo, los artículos del blog no son tangibes. Hay cosas que leemos en nuestras pantallas. ¿Pero esto significa que no tienen propiedades como una fecha, un hora, y un autor? ¿O significa que no tienen acciones como publicar y eliminar?
Por supuesto que no.
Por lo tanto a medida que progresemos en esta serie, vamos a hablar sobre objetos en términos de cosas con las que somos más propensos a trabajar.
No nos veo programando un animal - y realmente no en WordPress - durante lo que dure esta serie.
De Vuelta a lo Básico
De acuerdo, ahora que hemos hecho una breve disgresión sobre lo que son actualmente los objetos, y buenos y malos ejemplos de cada uno, es el momento de empezar a hablar de clases y como sirven de modelos para los objetos.
En programación, un objeto se crea a partir de una clase. Esto significa que una clase define todas las propiedades que tiene un objeto y las acciones que puede llevar a cabo, entonces el ordenador creará un objeto en memoria.
Cuando se trata de clases, puedes oír a los desarrolladores hablar sobre escribir clases, definir clases o construir clases. Y todos estos términos son aceptables.
Después de todo, puedes oír a los desarrolladores hablar de crear objetos. El acto de crear un objeto se llama instanciación. Yeah - es una gran palabra para un simple concepto relativo. Pero piensa the esta manera: Cuando tienes una clase, tienes una definición con la que puedes crear múltiples instancias de un objeto.
Si quieres dibujar una analogía con el mundo real, piensa primero en un conjunto de planos de una casa. Presenta el plano de planta, dimensiones, paredes, etc... que dan información a los trabajadores de la construcción sobre como construir una casa. Entonces, cuando llega el momento de construir una casa, un equipo de albañiles construyen la casa basándose en los planos.
Tal es el caso con las clases, instanciación y objetos. Las clases son los planos, el ordenador es el equipo de albañiles y el objeto es la casa. Y se pueden edificar múltiples casa basándose en los mismos planos como el el caso con los objetos y clases.
Los Modelos Mentales de Clases y Objetos
Cuando se trata de escribir código, algunas personas son capaces de dibujar el objeto en sus mentes - otros, no son capaces.
Personalmente pienso que hay más que hacer con como cada uno de nosotros aprende y procesa la información, pero creo que es posible empezar a dibujar mentalmente como los sistemas de software trabajan juntos mientras escribes código.
Aquí, no vamos a ver un sistemas complejo; sin embargo, vamos a echar un vistazo a un ejemplo de una clase y luego a hacer una representación visual de a lo que podría ser similar en términos de código y en términos de una imagen mental.
Una Clase para un Artículo de Blog
Dado que estamos tratando con WordPress, tal vez un ejemplo inicial para una clase podría ser uno que represente un artículo de blog.
Adjudicado, será un ejemplo sencillo para demostrar la idea de atributos y funciones, per veremos varios constructores en más detalle en próximos artículos.
Así que, dicho esto, digamos que vamos a crear una clase para una entrada de blog. Digamos también que nuestra entrada de blog tendrá un autor, una fecha en la que se publicó, si está o no publicada, y las acciones para publicar y eliminar.
Un ejemplo de definición de clase para una entrada de blog con estos atributos y funciones se verá así:
1 |
class Blog_Post { |
2 |
|
3 |
private $author; |
4 |
|
5 |
private $publish_date; |
6 |
|
7 |
private $is_published; |
8 |
|
9 |
public function publish() { |
10 |
// Publish the article here
|
11 |
}
|
12 |
|
13 |
public function delete() { |
14 |
// Delete the article here
|
15 |
}
|
16 |
|
17 |
}
|
Para los que estéis familiarizados con la programación orientada a objetos, reconoceréis algo de la información de arriba, y también reconoceréis que he dejado ciertas cosas (como el constructor). No te preocupes por esto - veremos estos conceptos más tarde.
Para aquellos que sois nuevos en la programación, esto es a lo que se parece una definición de clase. Por el momento no te preocupes por las palabras private
y public
porque las vamos a ver más tarde.
En su lugar, fíjate en $autor
, $publish_date
y en $is_published
. Estos son los atributos. Observa que se sitúan encima de las definiciones de la clase. Estos son análogos a los adjetivos que describen el Blog_Post
.
Luego, tenemos las funciones publish()
y delete()
. Estas dos funciones son acciones que se pueden llevar a cabo en el Blog_Post
. Recuerda, sólo los objetos del mundo real se pueden mover (como un coche puede conducirse) y una entrada del blog puede publicarse.
Una Representación Visual
Entonces ¿qué ocurre cuando instancias un artículo de blog (blog post? Es decir, cuando se crea una entrada de blog con código, cómo podemos dibujar mentalmente qué está sucediendo dentro del ordenador.
En primer lugar vamos a definir cómo se instancia una entrada de blog. Recuerda, instanciado es una palabra como edifica es para los albañiles - así es como un objetos se crea a partir de una clase.
A continuación vamos a ver cómo podemos usar la definición de una clase para crear tres entradas de blog diferentes:
1 |
$first_post = new Blog_Post(); |
2 |
$second_post = new Blog_Post(); |
Fácil de leer, ¿verdad? Arriba hemos creado dos variables que referenciarán a dos objetos Blog_post
completamente diferentes.
Ten en cuenta que, aunque hablaremos más de esto más adelante, la palabra new
es la que le indica al ordenador que instancie una entrada de blog (Blog_Post
) a través de la definición de la clase.
Vamos a ver el primer ejemplo donde creamos nuestra primera instancia de Blog_Post
.



En la imagen, tenemos la variable $first_post
que referencia a la instancia de Blog_Post
que hemos creado. El Blog_Post
existe en la memoria del ordenador, tiene sus atributos que están disponibles como también están disponibles sus métodos.
Podemos acceder a todos ellos a través de la variable $first_post
que referencia a este objeto. Hablaremos más sobre esto con más detalle mas adelante es la serie.
Pero ¿Qué pasa con $second_post
? ¿Cómo se ve esto en el concepto de la programación orientada a objetos?



Si comparas las dos imágenes, parecen la misma ¿verdad? $first_post
referencia una instancia de Blog_Post
, $second_post
referencia una segunda instancia de Blog_Post
aunque ambos procedían de una misma clase.
Para aquellos que son técnicamente astutos, es posible que las dos variables referencien a una misma instancia, pero esto está fuera del ámbito de este artículo.
¿Qué Pasará Después?
De todos modos, en este punto, ya debes tener un alto nivel comprensión de los que es una clase, el rol que juega en la programación orientada a objetos y cómo podemos crear instancias de objetos que son accesibles a través de variables.
Esto no nos dice todavía como interactuar con las clases ¿verdad? Llegaremos a eso, pero primero tenemos que discutir sobre algunos de los aspectos más básicos de la programación como cadenas, arreglos, bucles y condicionales.
Cada una de las construcciones mencionadas nos ayudará a dar vida a nuestros objetos, y una vez que recorramos cada uno de ellos, volveremos para hacer clases más maduras que puedan hacer el trabajo.
¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!