Una de las partes más difíciles de escribir una serie para principiantes en programación orientada a objetos es saber dónde parar.
Hay tantos temas que cubrir que podemos comenzar a avanzar lentamente en la dirección de las técnicas de programación avanzadas y, en última instancia, olvidar exactamente cuál fue nuestra misión: armar a los principiantes con un conjunto de herramientas, estrategias y comprensión de los conceptos iniciales..
Primero, tenga en cuenta que en el último post de la serie, completamos nuestro primer complemento completo utilizando técnicas orientadas a objetos. En su mayor parte, encapsuló todo lo que hemos cubierto hasta este punto de la serie (excepto, obviamente, la herencia).
Para ello, asegúrese de ponerse al día con los siguientes artículos:
Es mucho, lo sé, pero recuerda: el objetivo de la serie es preparar al principiante absoluto con todo lo necesario para trabajar con PHP y escribir plugins de WordPress utilizando técnicas orientadas a objetos..
Con ese fin, he decidido comenzar a resumir esta serie con un artículo de dos partes (con una tercera parte final que sirve como resumen) que ofrece una continuación en el siguiente tema de desarrollo para los aspirantes a programadores de PHP: Herencia.
Nuevamente, para aquellos que son programadores más experimentados, entonces la herencia no es un tema objetivo para usted; sin embargo, si usted es un principiante, entonces la herencia es uno de los conceptos que es fácil de entender, un poco más difícil de implementar (lo creas o no), y que puede causar aún más confusión cuando se trata de temas como el polimorfismo ( de lo que hablaremos más adelante)
En los próximos dos artículos, me propongo cubrir todo lo anterior junto con el código de ejemplo para respaldarlo. Pero antes de ver el código, creo que es importante entender los conceptos de importancia, ver algunos de los pasos necesarios para preparar el código orientado a objetos para la herencia..
En este artículo, vamos a definir la herencia, tratando de formar un modelo conceptual de lo que realmente está sucediendo, examinando los matices de lo que se conoce como clases base y subclases, así como algunas de las palabras clave reservadas en el idioma que debe ser ajustado para soportar la herencia a través de clases.
Así que con eso puesto a un lado como nuestra hoja de ruta para el artículo, vamos a seguir adelante.
A diferencia de otros términos de programación, la herencia es en realidad una palabra que describe su concepto bastante bien. Directamente de Wikipedia:
En la programación orientada a objetos (OOP), la herencia es cuando un objeto o clase se basa en otro objeto o clase, utilizando la misma implementación. Es un mecanismo para la reutilización de código. Las relaciones de objetos o clases por herencia dan lugar a una jerarquía..
Relativamente claro, ¿no es así? Pero creo que podemos hacerlo mejor..
Anteriormente en esta serie, hablamos sobre cómo muchos de los lenguajes de programación más comunes usan ejemplos como Los animales
y Vehículos
Como una forma de demostrar el concepto de programación orientada a objetos..
Después de todo, la idea detrás de la programación orientada a objetos es que deberíamos estar modelando objetos del mundo real. Especie de. Pero ¿cuántas veces has visto un examen físico? Entrada en el blog
?
Exactamente.
Como tal, siempre me gusta tratar de poner las cosas en la perspectiva de algo que es mucho más tangible, más práctico y que está más relacionado con el contenido que realmente estaremos creando..
Dicho esto, ¿cuál es una forma adecuada de describir la herencia en el contexto de la programación orientada a objetos que no destruye el concepto mediante el uso de ejemplos triviales??
Intentemos esto:
La herencia es cuando una clase sirve como la clase principal para una clase secundaria que proporciona una serie de atributos y métodos comunes tanto para el padre como para el hijo; Sin embargo, el niño como la habilidad de introducir sus propios atributos..
En la cita anterior, estamos usando un par de términos como "clase principal" y "clase secundaria", cada uno de los cuales lo aclararemos un poco, pero el punto es que podemos crear una jerarquía de clases literalmente. cual heredar información de sus clases para padres.
Tal vez incluso más ordenado, siempre que trabaje con una clase secundaria y desee aprovechar los atributos y funciones definidos en la clase principal o en la clase base, puede hacerlo fácilmente sin ningún código adicional..
Pero nos estamos adelantando a nosotros mismos. Antes de hacer eso, asegurémonos de que podamos obtener un modelo conceptual de cómo se ve la herencia. Después de todo, aunque estamos escribiendo código, estamos tratando de proporcionar un modelo que no solo representa un objeto real, sino que también crea una relación entre los objetos..
Antes de continuar, echemos un vistazo a un diagrama de clase muy simple sobre cómo funciona la herencia..
Tenga en cuenta que estamos usando tres clases:Contenido
que servirá como la clase base y que representa un tipo genérico de información que contiene datos para otros tipos de contenido más específicos.Comentario
lo que representa un comentario en una entrada de blog. Esta clase contiene información que hereda de Contenido
y que se define dentro de si mismo..Enviar
también hereda de Contenido
lo que representa una sola entrada de blog. Contiene general Contenido
información, pero también contiene su propia información específica de esa clase.Ahora, este es claramente un ejemplo simplificado de herencia, pero en su núcleo este es cómo funciona la herencia En un artículo futuro, veremos cómo funcionan también la creación de instancias, el acceso a datos y otras características.
Pero primero, todavía necesitamos aclarar algunos términos y asegurarnos de que tenemos toda la información adecuada.
Como mencionamos anteriormente en esta serie, hay una serie de términos que hemos usado todos que son clave para entender cómo las distintas piezas de herencia funcionan juntas..
Para ese fin, es importante definir algunas definiciones comunes para las palabras que estamos usando, no solo por la forma en que las estamos usando en este artículo, porque no solo las verán aquí, sino que también para verlos usados en otros lugares y los verás de forma intercambiable en otros artículos de la web:
Esta debería aclarar un montón de la terminología en torno a esto; sin embargo, si no es así, piénselo en términos de, digamos, un árbol genealógico donde tenga padres e hijos. Los hijos heredan rasgos de sus padres, pero los padres no heredan rasgos de sus hijos.
Tenga en cuenta también que, en programación, algunos desarrolladores desean introducir lo que se llama "herencia múltiple", lo que básicamente significa que una sola clase puede heredar propiedades y métodos de varias clases..
Esto no solo está restringido en PHP, sino que también está fuera del alcance de esta serie en particular..
Para aquellos que están un poco más familiarizados con el concepto de herencia, es probable que usted también esté familiarizado con el concepto de clases abstractas..
Por otra parte, si está familiarizado con el concepto de clases abstractas, argumentaría que no es un principiante y que no es realmente el público objetivo del contenido al que estamos llegando con este artículo..
Entonces, dependiendo de los comentarios sobre este artículo, esta serie y si otros están interesados, tal vez podamos hacer un artículo de seguimiento o un par de artículos que traten este tema exacto..
En el siguiente artículo, continuaremos nuestra discusión sobre la herencia a medida que examinemos cómo implementarla dentro de PHP. También vamos a echar un vistazo a cómo las subclases pueden acceder a los datos de sus padres, y cómo las clases para padres pueden asegurar la información dentro de ellos mismos.
Mientras tanto, asegúrese de dejar comentarios, preguntas y / o comentarios sobre la herencia en la fuente de comentarios y buscaré abordarlos aquí o en la próxima publicación..
Hasta entonces!