Programación orientada a objetos php. Crea variables de clase. Conozca las diferencias entre objetos y clases.

Desarrollo de aplicaciones web utilizando un enfoque orientado a objetos en lenguaje PHP Puede resultar confuso al principio para los desarrolladores que están acostumbrados a utilizar enfoque procesal, pero en realidad no hay nada complicado en programación orientada a objetos. EN este curso consideraremos aspectos teóricos POO, y también aprender a aplicar los conocimientos adquiridos en la práctica.

El curso consta de 17 lecciones en las que aprenderemos, paso a paso, los conceptos básicos de la programación orientada a objetos, que deberían ser suficientes para escribir aplicaciones de estilo objeto.

Después de estudiar este curso, comprenderá qué es la programación orientada a objetos, aprenderá qué son las clases y los objetos y también comprenderá la diferencia entre ellos. Aprenda sobre las propiedades, métodos y constantes de las clases.

Después de completar el curso, podrá utilizar la herencia de clases para crear una lógica conveniente y flexible para su aplicación web y crear jerarquías de clases ramificadas. Podrá anular métodos y así ampliar su funcionalidad, crear clases abstractas. En el curso aprenderá el significado de usar interfaces y aprenderá a usarlas donde realmente sea necesario, y no a usar interfaces por el simple hecho de ser interfaces. Atención especial El curso cubre el tema de la carga automática de clases, que eliminará largas listas de archivos incluidos. Aquí aprenderá sobre las funciones de inicio y cómo utilizarlas para este propósito. administrador de paquetes Compositor.

Aprenderás todo esto y mucho más de las lecciones del curso propuesto sobre programación orientada a objetos en PHP.

Todas las lecciones del curso:

Descripción del curso: En este curso veremos los aspectos teóricos de la POO y también aprenderemos cómo aplicar los conocimientos adquiridos en la práctica. El curso consta de 17 lecciones en las que aprenderemos, paso a paso, los conceptos básicos de la programación orientada a objetos, que deberían ser suficientes para escribir aplicaciones de estilo objeto.

Cubriremos conceptos como programación orientada a objetos, clases PHP, constructores PHP, destructores PHP, métodos mágicos PHP, etc. Esta guía está destinada a principiantes y programadores experimentados que quieran aprender PHP OOP desde un nivel básico.

Uno de los mayores cambios en PHP 5 es la inclusión de completamente modelo de objeto, lo que mejora la productividad. Algunas de las nuevas características importantes agregadas en PHP 5 incluyen métodos finales y abstractos, clases, interfaces, clonación y métodos mágicos. miraremos este manual Ejemplos de programación orientada a objetos en PHP del uso de cada uno de ellos.

En la programación orientada a objetos, un objeto se trata de la misma manera que referencias o punteros. Esto significa que cada nueva variable contiene una referencia al objeto, en lugar de una copia del objeto completo.

El concepto más difícil de entender son los conceptos básicos de la programación orientada a objetos, ya que son diferentes de la programación PHP normal. Pero una vez que comprenda los principios básicos, el modelo en sí le resultará sencillo y claro.

¿Qué es la programación orientada a objetos en PHP?

Dado que el término programación orientada a objetos comienza con la palabra "objeto", podemos decir que es un tipo especial de programación en la que se crean y utilizan objetos.

Aquí hay una explicación de PHP OOP para principiantes. Mira el mundo que nos rodea, está lleno de objetos. Sol, luna, coches, árboles, casas, etc. etc. Todos estos son objetos, tienen atributos y funciones. En el proceso de pensar, operamos con objetos. Cuando hablamos de un coche, no piensas en las ruedas, el motor, los asientos, las puertas, piensas en el coche como lo que es. En pocas palabras, piensas en términos del sujeto o del objeto. La orientación a objetos es la representación de elementos como objetos en programación.

El coche es un objeto. Tiene los atributos de color, tamaño, peso y función de movimiento. Cualquier objeto sin funcionalidad será inútil. En POO, el programador utiliza objetos; Cada objeto tiene algunos atributos y funciones. En general, la programación se reduce a construir módulos utilizando objetos.

Una definición simple de programación orientada a objetos:

La programación orientada a objetos es programación basada en objetos que contienen datos (atributos) y métodos (funcionalidades) que procesan estos datos. Los objetos son un tipo de datos definidos por el programador, y las interacciones entre diferentes objetos también las define el programador.

En otras palabras, la programación orientada a objetos permite al programador agrupar tareas similares En las clases, una clase puede contener datos y funciones para acceder a esos datos, relacionados entre sí.

La programación orientada a objetos básica en PHP le ayuda a desarrollar código que es más fácil de mantener y administrar. Cuanto más limpio y legible sea el código, más probabilidades habrá de que se reutilice. Como resultado, se pueden aplicar patrones de diseño al sistema. En OOP, los módulos se crean y utilizan de acuerdo con los requisitos. Con la ayuda de la programación orientada a objetos en PHP, podemos crear aplicaciones para sitios web que tengan una estructura modular.

Términos importantes en el tutorial de programación orientada a objetos de PHP:

A continuación se muestra definición general Algunos términos importantes que se utilizan a menudo en PHP orientado a objetos.

Clase

En programación orientada a objetos clase PHP Es un tipo de datos definido por el programador. La clase contiene datos y funciones para trabajar con estos datos. Los datos y funciones tienen el ID de acceso privado. Esto significa que no son visibles fuera de la clase. Una clase es una plantilla o plantilla a partir de la cual se pueden realizar tantas copias o instancias como sean necesarias.

Objeto

Un objeto también se conoce como instancia. Cuando se instala una instancia de una clase, se crea un objeto. Si una clase es una muestra, entonces un objeto es el producto final creado con la muestra. Una vez que se ha definido una clase, se pueden crear muchos objetos a partir de ella.

variable miembro

Las variables definidas en una clase se denominan variables miembro. De hecho, son los datos contenidos en esta clase, solo pueden ser modificados por funciones de esta clase. Normalmente, las variables miembro son visibles sólo para esa clase y están ocultas para otras clases.

función miembro

Las funciones definidas en una clase se denominan funciones miembro. Tampoco son visibles para otras clases. Se utilizan para cambiar variables miembro para acceder a datos de objetos.

Constructor

Un constructor es un tipo especial de función miembro. Cuando se establece una clase, se crea un objeto, esta función se llama automáticamente y asigna valores iniciales a las variables de la clase.

Incinerador de basuras

Este es un tipo especial de función que se llama automáticamente cuando se elimina un objeto.

Herencia

En PHP 5 OOP, la herencia es el proceso por el cual una clase (subclase) recibe todos los atributos y funciones de otra clase (superclase).

super clase

También conocida como clase base o padre: heredada por una o más subclases.

Subclase

Una clase hija o derivada, una subclase hereda de una superclase.

Polimorfismo

Este es un fenómeno en programación orientada a objetos en el que una única función se puede utilizar para múltiples propósitos.

Encapsulación

Uno de los conceptos más importantes de la programación orientada a objetos. Los datos y funciones que trabajan con estos datos están interconectados y no son visibles para otras funciones.

Abstracción

La abstracción significa que los detalles de implementación de funciones o clases no son visibles.

, lo que significa que funciones que tienen el mismo nombre pero diferentes cantidades Los argumentos se ejecutan de manera diferente.

Clases y objetos:

Clase y objeto se utilizan ampliamente como sinónimos en la programación orientada a objetos, pero en esencia son muy diferentes entre sí. Una clase representa un patrón, patrón o molde, y un objeto es un producto o pieza moldeada a partir de ese patrón o molde en particular.

Tomemos por ejemplo una casa. El aula es la base del hogar; tiene dimensiones, forma, número de puertas, pasillos, etc. Pero esto es sólo un proyecto, no la casa en sí. Cuando una casa física se construye basándose en la información contenida en el plano, es un objeto.

Antes, el objeto era un montón de madera, ladrillos, cemento, etc., a partir del cual se construía una casa u objeto según la información del plano:

Una clase en PHP POO es un plan o plantilla según el cual se instala una instancia de una clase y se crea un objeto. Una vez creada la clase, podemos crear tantos objetos como queramos. En la figura anterior, se crearon cinco objetos (casas) a partir de una clase (plano). Un objeto siempre seguirá las instrucciones dadas en la clase utilizada para crearlo.

Ventajas de la programación orientada a objetos en PHP:

  1. Arquitectura mejorada y código más limpio.

PHP orientado a objetos está mejor catalogado y empaquetado fácilmente, lo que le permite especificar la arquitectura óptima. Normalmente cada clase se guarda en un archivo independiente. Lenguajes procesales Se caracteriza por un código complejo que es muy difícil de leer o comprender. En POO, mediante la implementación de objetos que contienen datos privados con definición clara conexiones entre objetos, el código es legible y limpio.

  1. Reutilizar

La programación orientada a objetos hace que el código sea reutilizable. Los objetos creados una vez se pueden utilizar una y otra vez. Los programas se pueden crear combinando módulos de trabajo en lugar de escribir todo desde cero. Esto ahorra tiempo y mejora la productividad.

  1. Fácil de mantener y actualizar

Los objetos tienen sus propios datos y funciones, y toda su estructura es compacta y comprimida, lo que facilita realizar cambios en el código. La programación procedimental convencional produce código en el que es muy difícil encontrar un punto para realizar cambios. En OOP PHP podemos agregar una nueva propiedad y luego agregar métodos relacionados para controlar esta propiedad.

  1. Encapsulación

La encapsulación significa que los valores de las variables de un objeto no son visibles desde el exterior, por lo que se implementa la seguridad de los datos. Pero si surge la necesidad, se puede acceder a los datos mediante modificadores de acceso. para crear programas seguros Los datos y las funciones miembro de una clase se pueden ocultar a otras clases. Una vez que se crea un objeto, no se necesita información de implementación para usarlo.

  1. Herencia

La clase heredera recibe todas las características de la clase padre y luego le agrega sus propias características. La subclase hereda las variables y métodos de la superclase. Podemos ampliar el uso de clases existentes y también eliminar código innecesario.

En este tutorial aprenderá los conceptos básicos de la programación orientada a objetos en PHP. Aprenderá sobre los principios de la programación orientada a objetos en general y aprenderá a escribir scripts simples en PHP.

¡Bienvenido a la primera de una serie de lecciones sobre programación orientada a objetos en PHP! Al completar todas las lecciones de esta serie, aprenderá sobre los principios y conceptos básicos de la programación orientada a objetos y aprenderá a crear rápida y fácilmente aplicaciones útiles en PHP.

En este tutorial comenzaré a ponerte al día y te contaré los conceptos básicos de la programación orientada a objetos. Aprenderás:

  • ¿Qué es la programación orientada a objetos?
  • cómo la programación orientada a objetos te ayudará a crear mejor php guiones
  • algunos conceptos básicos como clases, objetos, métodos, variables de clase
  • dónde empezar a escribir un script PHP

¿Estás listo para sumergirte en el mundo? objetos PHP? ¡Entonces adelante!

¿Qué es la programación orientada a objetos?

Si alguna vez has creado funciones nativas en PHP y los usaste, luego usaste un estilo de programación llamado procedimental. En la programación de procedimientos, normalmente se crean estructuras de datos: números, cadenas, matrices, etc. - almacenar algunos datos y luego procesar estas estructuras funciones especiales, que manipulan estos datos.

La programación orientada a objetos, u OOP, ha avanzado porque aquí almacenamos estructuras de datos y las funciones que las procesan en una sola entidad llamada objeto. En lugar de procesar los datos con alguna función, carga esos datos en un objeto y luego llama a sus métodos para manipularlos y obtener el resultado deseado.

Muy a menudo, los objetos creados con programación orientada a objetos reflejan entidades reales. Por ejemplo, si está creando un foro para su sitio, crearía un objeto Miembro que almacenará información sobre cada miembro del foro (nombre, inicio de sesión, dirección de correo electrónico, contraseña, etc.), así como los métodos que procesarán esta información (registro, autorización, cierre de sesión, baneo, etc.).

¿Por qué utilizar programación orientada a objetos?

Procedimental y orientado a objetos son dos diferentes maneras haz lo mismo. Esto no quiere decir que uno de ellos sea mejor que el otro: cada uno escribe como quiere, por lo que incluso puedes combinar fácilmente estos dos enfoques en un solo guión.

Sin embargo, aquí hay algunos beneficios de la programación orientada a objetos para los desarrolladores:

  • Es más fácil reflejar situaciones reales: como señalé anteriormente, los objetos reflejan entidades reales: personas, productos, mapas, artículos de blogs, etc. Esto simplifica enormemente la tarea cuando recién comienza a diseñar su aplicación, ya que el propósito de cada objeto Es como un objetivo: las relaciones entre objetos serán claras y comprensibles.
  • Más fácil de escribir programas modulares: La programación orientada a objetos implica escribir módulos. Al dividir su código en módulos, le resultará más fácil administrarlo, depurarlo y ampliarlo.
  • Es más fácil escribir código que se usará muchas veces: escribir código que se pueda usar más de una vez ahorrará tiempo al escribir una aplicación y, con el tiempo, incluso podrá crear una biblioteca completa de este tipo de módulos que podrá usar en muchas ocasiones. aplicaciones. Con la programación orientada a objetos, resulta comparativamente más fácil escribir dicho código, ya que las estructuras de datos y las funciones se encapsulan en un único objeto que se puede utilizar cualquier número de veces.

Algunos conceptos básicos

Antes de comenzar a escribir scripts, debe tener una buena comprensión de los conceptos de clase, objeto, variable de clase y método.

Clases

Una clase es un marco para un objeto. Este es un fragmento de código que define:

  • Tipos de datos que contendrán los objetos de clase creados
  • Funciones que contendrán estos objetos.

Cuando crea una aplicación POO, generalmente creará varias clases que representarán varios tipos entidades de su aplicación. Por ejemplo, para crear un foro, puede crear las clases Foro, Tema, Publicación y Miembro.

Objetos

El objeto es una variable. tipo especial, que se crea a través de la clase. Contiene datos reales y funciones para manipularlos. Puedes crear tantos objetos como quieras a partir de una sola clase. Cada función de un objeto es independiente de otro objeto, incluso si están creados a partir de la misma clase.

Para comparación con entidades reales:

  • Una clase es el marco de un automóvil: define cómo se verá y actuará el automóvil, pero sigue siendo una entidad abstracta.
  • Un objeto es un coche real creado a partir de una estructura alámbrica: tiene propiedades reales (como la velocidad) y comportamiento (como la aceleración o el frenado).

Nota: Un objeto a menudo se denomina esencia de una clase y el proceso de creación de un objeto de una clase se denomina implementación.

Variables de clase

Los valores de datos que se almacenan en un objeto particular se escriben en variables especiales llamadas variables de clase. Las variables de clase están estrechamente asociadas con su objeto. Aunque todos los objetos de una clase tienen las mismas variables, sus valores pueden diferir.

Métodos

Las funciones definidas en una clase y utilizadas en objetos de esa clase se denominan métodos. No son muy diferentes de las funciones normales: puede pasarles valores, pueden contener variables locales y valores de retorno. Sin embargo, los métodos suelen funcionar con variables de objeto. Por ejemplo, el método login() para iniciar sesión en su foro podría establecer la variable de clase loggedIn en verdadero.

¿Cómo crear una clase en PHP?

Ahora que ya sabes qué son las clases, métodos, variables de clase y objetos, es hora de crear un par de clases y objetos en código PHP.

Primero, veamos cómo crear realmente una clase. Básicamente, el script para crear una clase se ve así:

Clase NombreClase ( // (definición de clase) )

Por ejemplo, si estás creando una clase de miembro para tu foro, escribirías esto:

Miembro de clase ( // (definición de clase) )

Es bastante sencillo. Naturalmente, esta clase no hará nada hasta que le agregue variables y métodos. Sin embargo, el código anterior crea una clase PHP válida que se puede utilizar.

Regla de buenos modales: colocar cada clase en archivo separado con el mismo nombre que el nombre de la clase. Por ejemplo, coloque la clase Miembro en el archivo Member.php y guárdela en una carpeta, por ejemplo, clases.

¿Cómo crear objetos en PHP?

Puedes crear un objeto usando la nueva palabra clave:

Nuevo nombre de clase()

Este código creará un objeto. clase Nombre de clase. Necesitará utilizar este objeto más adelante, por lo que deberá almacenarlo en una variable. Por ejemplo, creemos un objeto de la clase Miembro y almacenémoslo en la variable $miembro:

$miembro = nuevo miembro();

También podemos crear otro objeto de la misma clase:

$miembro2 = nuevo miembro();

Aunque creamos estos dos objetos a partir de la misma clase, las variables $miembro y $miembro2 son independientes entre sí.

Crear variables de clase

Ahora que ya sabemos cómo crear clases y objetos de clase, veamos cómo crear variables de clase. Hay 3 descriptores de acceso para variables de clase que se pueden agregar a una clase:

  • Variables de clase pública (públicas): accesibles, es decir se pueden leer y/o modificar - en cualquier parte del script, independientemente de dónde se encuentre este código - dentro o fuera de la clase
  • Variables de clase privada (privadas): accesibles solo para métodos de clase. Es mejor hacer que las variables de clase sean privadas para separar los objetos del resto del código.
  • Variables de clase protegidas: Disponibles para métodos de tu propia clase, así como para métodos de clases heredadas (hablaremos de herencia más adelante).

Para crear una variable de clase, escriba palabra clave pública, privada o protegida y luego ingrese el nombre de la variable:

Clase NombreClase ( público $nombrepropiedad; privado $nombrepropiedad; protegido $nombrepropiedad; )

Agreguemos una variable de clase pública a nuestra clase Miembro para almacenar el nombre de usuario:

Miembro de la clase ( public $nombre de usuario = ""; )

Observe que hemos inicializado nuestra variable de clase, su valor es la cadena vacía, "". Esto significa que cuando se crea un nuevo usuario, el nombre de usuario predeterminado será igual a linea vacia. Al igual que en el caso de las variables regulares en PHP, las variables de clase no necesitan inicializarse, pero es mejor no ser perezosos. Si no inicializa una variable de clase, su valor predeterminado es nulo.

Accediendo a variables de clase

Para obtener acceso a una variable de un objeto, use el operador ->:

$objeto->nombrepropiedad

Probémoslo. Escribamos un script que declare una clase Miembro y una variable de clase, cree un objeto de esta clase y luego establezca el valor de la variable de clase y lo muestre en la pantalla:

nombre de usuario = "Fred"; echo $miembro->nombre de usuario; // Imprimir "Fred" ?>

Correr este codigo, mostrará la cadena “Fred”, el valor de la variable de clase $miembro->nombre de usuario. Como puedes ver, estás operando. variable de objeto como una variable normal: puedes darle un valor y leerlo.

Agregar métodos a una clase

¿Qué pasa con la creación de métodos? Como mencioné anteriormente, los métodos son simplemente funciones regulares que forman parte de una clase. Por lo tanto, es posible que no le sorprenda que se creen utilizando la misma palabra clave de función. La única diferencia con la creación de funciones normales es que también puedes agregar uno de los identificadores de acceso (público, privado, protegido) a su declaración. De esta forma, los métodos son similares a las variables de clase:

Clase Nombre de clase ( función pública Nombre de método() ( // (código) ) Función privada Nombre de método() ( // (código) ) Función protegida Nombre de método() ( // (código) ) )

Nota: al igual que en el caso de las variables de clase, los métodos públicos se pueden llamar desde cualquier lugar, los métodos privados solo se pueden llamar dentro de la clase y los métodos protegidos se pueden llamar desde la propia clase y su descendiente.

Intentemos agregar algunos métodos y variables de clase a nuestra clase:

  • Variable de clase privada $loggedIn para identificar al usuario, es decir. si entró o no,
  • método login(), que iniciará sesión en el foro estableciendo la variable de clase $loggedIn en verdadero,
  • método logout(), que cerrará la sesión del foro configurando la variable de clase $loggedIn en falso,
  • Método isLoggedIn(), que devolverá el valor de la variable de clase $loggedIn.

Aquí está nuestro código:

iniciado sesión = verdadero;

) función pública cerrar sesión() ( $this->loggedIn = false; ) función pública isLoggedIn() ( return $this->loggedIn; ) ) ?>

Es posible que hayas notado que utilizamos una nueva palabra clave $this. En el contexto de los métodos de un objeto, la variable especial $this se refiere al objeto mismo. Al usar $this en un método de objeto, el método puede acceder a cualquier variable de clase y método del objeto.

Por ejemplo, el método login() puede acceder a la variable de clase $loggedIn del objeto a través de $this->loggedIn. Por cierto, nuestra variable de clase es privada, por lo que no se puede llamar desde ninguna parte del script, sino solo desde los métodos login(), logout() e isLoggedIn(). Este es un buen enfoque porque El objeto (por ejemplo, cómo se registra exactamente si el usuario ha iniciado sesión o no) está separado del resto del código. Siempre que sea posible, intenta utilizar variables de clase privada para que tus objetos sean autónomos, móviles y protegidos.

Nota: la variable de clase $username en nuestro ejemplo es pública. Hice esto sólo para demostrar cómo se puede acceder a las variables de clase de un objeto. EN proyectos reales más bien, debes hacer que esta variable sea privada y crear variables de clase pública especiales para establecer valores de nombre de usuario si es necesario.

Usando métodos

Para llamar a un método en un objeto, utilice el operador ->, con el que ya está familiarizado.

$objeto->nombremétodo()

Esto funciona igual que el desafío. función regular. Puede pasar argumentos entre paréntesis (asumiendo que toma algún argumento, por supuesto), la llamada al método también puede devolver ciertos valores, que luego podrás utilizar.

iniciado sesión = verdadero;
) función pública cerrar sesión() ( $this->loggedIn = false; ) función pública isLoggedIn() ( return $this->loggedIn; ) ) $miembro = nuevo miembro(); $miembro->nombre de usuario = "Fred"; echo $miembro->nombre de usuario. "es". ($miembro->
"; $miembro->login(); echo $miembro->nombre de usuario . " es " . ($miembro->isLoggedIn() ? "ha iniciado sesión": "desconectado") . "
"; ?>

"; $miembro->logout(); echo $miembro->nombre de usuario . " es " . ($miembro->isLoggedIn() ? "ha iniciado sesión": "desconectado") . "

Este script mostrará lo siguiente:

Fred está desconectado Fred está conectado Fred está desconectado

  1. Así es como funciona:
  2. Después de describir la clase Miembro, creamos su objeto y lo almacenamos en la variable $miembro. También le dimos a la variable de clase $nombre de usuario de este objeto el valor "Fred".
  3. Luego llamamos al método $member->isLoggedIn() para determinar si el usuario ha iniciado sesión o no. Este método simplemente devuelve el valor de la variable de clase $loggedIn. Dado que el valor predeterminado de esta variable de clase es falso, el resultado de llamar a $member->isLoggedIn() será falso, por lo que se mostrará el mensaje "Fred ha cerrado sesión".
  4. Luego llamamos al método login(). Establecerá la variable de clase $loggedIn en verdadero.
  5. Ahora, al llamar al método $member->isLoggedIn(), devolverá verdadero y mostrará el mensaje "Fred ha iniciado sesión".
  6. Llamemos al método $member->isLoggedIn() por tercera vez. Ahora devolverá falso porque la propiedad $loggedIn se establece nuevamente en falso. Entonces, se mostrará nuevamente el mensaje "Fred ha cerrado sesión".

Nota: en caso de que hayas visto esto primero: ?: es un operador ternario. Esta es una versión simplificada de los bloques if...else. Puedes aprender sobre este tipo de operadores.

Conclusiones

En este tutorial aprendiste los conceptos básicos de la programación orientada a objetos en PHP. Aprendiste sobre cosas como:

  • ¿Qué es la programación orientada a objetos y por qué es útil?
  • conceptos de clases, objetos, variables de clase y métodos
  • cómo crear clases y objetos
  • cómo crear y usar variables de clase
  • conceptos de identificadores de acceso públicos, privados y protegidos
  • cómo crear y usar métodos de clase

Ya ha aprendido mucho al respecto y aprenderá mucho más en las siguientes lecciones. Sin embargo, si ha trabajado con todos los ejemplos que le he dado, tendrá una base sólida. Puede comenzar a crear aplicaciones usando programación orientada a objetos.

Del autor: La programación profesional moderna es simplemente impensable sin la programación orientada a objetos, que silenciosamente se ha convertido en una especie de estándar para los lenguajes de programación de alto nivel y, por supuesto, PHP no es una excepción. Pero sucede que la transición de un estilo de programación procedimental a uno basado en objetos va acompañada de algunas dificultades para los principiantes, por lo que hoy veremos los conceptos básicos de programación orientada a objetos PHP.

Primero, veamos las principales ventajas del enfoque orientado a objetos para comprender por qué se ha generalizado tanto.

El código del enfoque orientado a objetos es bastante fácil de entender y leer y es excelente para implementar proyectos muy complejos y a gran escala.

Las aplicaciones escritas utilizando este enfoque de programación se modernizan y amplían fácilmente.

Las aplicaciones correctamente diseñadas constan de módulos separados, lo que significa que, si es necesario, pueden modificarse y actualizarse rápidamente, lo que aumenta la velocidad de desarrollo en varios órdenes de magnitud.

Ahora que se han identificado las principales fortalezas del estilo de codificación en cuestión, podemos pasar directamente a la esencia de esta lección.

Entonces, la base de la programación orientada a objetos en PHP es el principio de vincular datos y funciones que los manipulan en los objetos correspondientes. Lo cual es algo diferente del enfoque procesal habitual, donde elementos similares se definen por separado unos de otros. Es decir, los objetos contienen cierta información que se almacena en sus propiedades (así se llaman las variables del objeto) y un cierto conjunto de acciones que se describen en sus métodos (de hecho, funciones ordinarias). En este caso, los métodos, por regla general, en su trabajo operan sobre datos almacenados en propiedades, lo que implica tanto lectura, escritura como cambio.

En consecuencia, podemos decir que la base de la metodología de programación orientada a objetos en PHP es trabajar con objetos o utilizarlos para manipular datos.

En este caso, el objeto se forma a partir de una clase previamente definida, y esta última describe completamente su estructura y actúa como una especie de plantilla. En otras palabras, la clase describe las propiedades y métodos de los objetos creados en el futuro. Y esto se puede ver en el siguiente ejemplo.

clase Cliente ( público $nombre; $pedidos protegidos; función pública __construct($nombre, $pedidos) ( $this->nombre = $nombre; $this->pedidos = $pedidos; ) función pública getName() ( return $this ->nombre; ) ) $cliente = nuevo Cliente("Ben", matriz("id" => 10)); echo $cliente->getName();

clase Cliente(

nombre$público;

pedidos $ protegidos;

función pública __construct ($nombre, $pedidos) (

$this -> nombre = $nombre ;

$this -> pedidos = $pedidos ;

función pública getName() (

devolver $this -> nombre;

$cliente = nuevo Cliente("Ben", array("id" => 10));

echo $cliente -> getName();

Al implementar una instancia de una clase (es decir, crear un nuevo objeto utilizando una clase de interés específica), se forma un nuevo objeto y también se determinan las propiedades descritas en la clase. Además, se lanza para su ejecución un método especial llamado __construct(), a menos que, por supuesto, esté descrito en la estructura de la clase. Como puede ver, para crear un objeto se utiliza la palabra clave new, seguida del nombre de la clase. Entre paréntesis, si es necesario, se pasan argumentos al método anterior, que, por regla general, define algunos datos iniciales para el objeto futuro.

En el ejemplo anterior, además de crear un objeto, se llama al método getName() y se muestra el valor que devuelve. Por supuesto, como resultado de la operación del script, veremos el resultado del nombre de usuario: "Ben", porque es esto el que se pasa como primer argumento al método constructor, donde se escribe en la propiedad de clase en el nombre nombre. En consecuencia, el método anterior devuelve el valor de esta propiedad como resultado de su trabajo.

Al mismo tiempo, nadie le prohíbe crear otro objeto similar a partir de la clase descrita anteriormente:

$cliente2 = nuevo Cliente("Sem", array("id" => 15)); echo $cliente2->getName();

$cliente2 = nuevo Cliente("Sem", array("id" => 15));

echo $cliente2 -> getName();

En este caso, en la pantalla veremos el nombre de un usuario completamente diferente: "Sem". Por lo tanto, esencialmente creamos un objeto completamente diferente a partir de la misma plantilla: una clase. Al mismo tiempo, este objeto tiene datos iniciales completamente diferentes, que todavía están formados por el método constructor, lo que significa que su comportamiento, determinado por los métodos, también será diferente.

Tenga en cuenta que las propiedades de una clase y sus métodos solo se pueden usar con un objeto específico; esto es exactamente lo que se puede ver en el ejemplo, y sin él, son absolutamente inútiles en términos de trabajar fuera de la clase, porque dentro de la clase. clase, por supuesto, se pueden utilizar en el código de sus métodos. Además, el acceso a los elementos anteriores de un objeto se realiza a través de un conjunto especial de signos "->" (flecha), delante del cual es necesario indicar el objeto de interés, o el puntero del objeto: la palabra clave $this. El puntero de objeto $this se usa en el código de métodos directamente dentro de la clase para acceder a sus propiedades o métodos.

Y nuevamente, vemos que la base del desarrollo de programación orientada a objetos en PHP es trabajar con objetos, y lo bueno es que describimos la clase una vez, lo que significa que formamos un cierto conjunto de datos y la funcionalidad necesaria. Y luego creamos objetos, cada uno de los cuales, dependiendo de los datos iniciales, será absolutamente único.

De lo anterior se deduce que la clase a partir de la cual se crearán los objetos describe los datos y la funcionalidad de una determinada entidad del proyecto futuro, por ejemplo, trabajar con usuarios, páginas, menús, direcciones, etc. Y, por supuesto, si hay varias entidades de este tipo, entonces es necesario crear varias clases, lo que significa que se creará al menos un objeto para cada una de ellas. Aunque no siempre, a veces algunas clases se crean como padres para ciertas clases hijas, lo que significa que actúan como almacenamiento de alguna funcionalidad común, lo que naturalmente implica la creación de toda una jerarquía de clases para el futuro proyecto. Pero este es un tema completamente diferente que no entra en el alcance del presente artículo.

De hecho, aquí repasamos brevemente los conceptos básicos de la programación orientada a objetos en PHP. Por supuesto, este tipo de programación requiere más atención que un artículo si realmente quieres entenderlo bien y utilizarlo en tu trabajo. Este tema se analiza con más detalle en el curso premium.

¡¡¡Todo lo mejor para ti y feliz codificación!!!

11 de marzo de 2010 a las 11:37

POO con ejemplos (parte 1)

  • Proceso educativo en TI.

Por voluntad del destino, tengo que leer un curso especial sobre patrones de diseño en una universidad. El curso especial es obligatorio, por eso, los alumnos que vienen a mí son muy diferentes. Por supuesto, entre ellos también hay programadores en ejercicio. Pero, desafortunadamente, la mayoría de las personas tienen dificultades incluso para comprender los términos básicos de la programación orientada a objetos.

Para ello, intenté explicar los conceptos básicos de la POO (clase, objeto, interfaz, abstracción, encapsulación, herencia y polimorfismo) utilizando ejemplos más o menos vivos.

La primera parte a continuación trata sobre clases, objetos e interfaces.
ilustra la encapsulación, el polimorfismo y la herencia.

Conceptos básicos de programación orientada a objetos

Clase
Imagina que estás diseñando un coche. Ya sabes que un coche debe contener motor, suspensión, dos faros, 4 ruedas, etc. También sabes que tu coche debe poder acelerar y frenar, girar y dar marcha atrás. Y, lo más importante, sabrá exactamente cómo interactúan el motor y las ruedas, según qué leyes se mueven el árbol de levas y el cigüeñal, y también cómo están diseñados los diferenciales. Confías en tus conocimientos y empiezas a diseñar.

Describes todas las partes que componen tu automóvil, así como también cómo estas partes interactúan entre sí. Además, se describe lo que debe hacer el usuario para que el coche frene o encienda las luces altas. El resultado de tu trabajo será un boceto. Acabas de desarrollar lo que en OOP se llama Clase.

Clase es una forma de describir una entidad que define un estado y un comportamiento que depende de este estado, así como reglas para interactuar con esta entidad (contrato).

Desde el punto de vista de la programación, una clase puede considerarse como un conjunto de datos (campos, atributos, miembros de la clase) y funciones para trabajar con ellos (métodos).

Desde el punto de vista de la estructura del programa, una clase es un tipo de datos complejo.

En nuestro caso, la clase mostrará una entidad: un automóvil. Los atributos de clase serán el motor, la suspensión, la carrocería, las cuatro ruedas, etc. Los métodos de clase serán "abrir la puerta", "pisar el acelerador" y también "bombear una porción de gasolina del tanque de gasolina al motor". Los dos primeros métodos están disponibles para que otras clases los ejecuten (en particular, la clase "Driver"). Este último describe interacciones dentro de la clase y no es accesible para el usuario.

De ahora en adelante, aunque la palabra “usuario” esté asociada al Solitario y a Microsoft Word, nos referiremos a los programadores que utilizan tu clase como usuarios, incluido tú mismo. Llamaremos desarrollador a la persona que es el autor de la clase.

Objeto
Hiciste un gran trabajo y las máquinas desarrolladas según tus planos están saliendo de la línea de montaje. Aquí están, parados en ordenadas filas en el patio de la fábrica. Cada uno de ellos repite exactamente tus dibujos. Todos los sistemas interactúan exactamente como usted los diseñó. Pero cada coche es único. Todos tienen números de carrocería y de motor, pero todos estos números son diferentes, los coches difieren en color y algunos incluso tienen piezas fundidas en lugar de ruedas estampadas. Estos coches son esencialmente objetos de tu clase.

Objeto (instancia) Es un individuo representante de una clase que tiene un estado y un comportamiento específicos que están enteramente determinados por la clase.

En términos simples, un objeto tiene valores de atributos específicos y métodos que operan sobre esos valores según las reglas definidas en la clase. En este ejemplo, si la clase es un automóvil abstracto del "mundo de las ideas", entonces el objeto es un automóvil concreto que se encuentra debajo de las ventanas.

Interfaz
Cuando nos acercamos a una máquina de café o nos ponemos al volante, iniciamos una interacción con ellos. Por lo general, la interacción se produce mediante un determinado conjunto de elementos: una ranura para aceptar monedas, un botón para seleccionar una bebida y un compartimento para dispensar un vaso en una máquina de café; volante, pedales, palanca de cambios en un coche. Siempre hay un conjunto limitado de controles con los que podemos interactuar.

Interfaz es un conjunto de métodos de clase que están disponibles para que los utilicen otras clases.

Obviamente, la interfaz de una clase será un conjunto de todos sus métodos públicos junto con un conjunto de atributos públicos. Básicamente, una interfaz especifica una clase, definiendo claramente todas las acciones posibles sobre ella.
Un buen ejemplo de interfaz es el salpicadero de un coche, que permite activar métodos como acelerar, frenar, girar, cambiar de marcha, encender los faros, etc. Es decir, todas las acciones que otra clase (en nuestro caso, el conductor) puede realizar al interactuar con el coche.

Al describir una interfaz de clase, es muy importante lograr un equilibrio entre flexibilidad y simplicidad. Una clase con una interfaz sencilla será fácil de usar, pero habrá problemas que no podrá resolver. Al mismo tiempo, si la interfaz es flexible, lo más probable es que consista en métodos bastante complejos con una gran cantidad de parámetros que le permitirán hacer mucho, pero su uso estará plagado de grandes dificultades y el riesgo de cometer errores. un error, algo mezclado

Un ejemplo de interfaz sencilla sería un automóvil con transmisión automática. Cualquier rubia que haya realizado un curso de conducción de dos semanas podrá dominar su funcionamiento muy rápidamente. Por otro lado, para dominar el control de un avión de pasajeros moderno se necesitan varios meses, o incluso años, de duro entrenamiento. No me gustaría estar a bordo de un Boeing pilotado por alguien que tiene dos semanas de experiencia de vuelo. Por otro lado, nunca conseguirás un coche para despegar y volar de Moscú a Washington.




Arriba