Blog
Objetos en PHP
- Publicado por: leo
- Categoría: Curso principiante PHP
Te doy la bienvenida a lo que es el último capítulo de nuestro curso básico de lenguaje de programación PHP. Aquí tomaremos a PHP como un lenguaje de programación orientado a objetos, ya que PHP es tan versátil que podemos utilizarlo de esa manera. La programación orientada a objetos es muy utilizada actualmente por lenguajes de programación como JavaScript, por ejemplo, el cual es un lenguaje orientado a objetos en su totalidad. Mientras que PHP puede ser usado tanto como para programación orientada a objetos como para programación estructurada. Así que yo en lo personal te recomiendo aprender ambos, ya que esto te dará la capacidad de cubrir mas proyectos de programación. Continuemos con la lección.
Conceptos básicos de Programación Orientada a Objetos (POO)
Podemos imaginar nuestro universo hecho de diferentes objetos como el sol, la tierra, la luna, etc. Del mismo modo podemos imaginarnos nuestro coche hecho de diferentes objetos como el volante, la dirección, el engranaje, etc. De la misma manera hay conceptos de programación orientada a objetos que asumen todo como un objeto e implementan un software usando diferentes objetos.
- Clase: Este es un tipo de dato definido por el programador, que incluye funciones locales así como datos locales. Puede pensar en una clase como una plantilla para hacer muchas instancias del mismo tipo (o clase) de objeto.
- Objeto: una instancia individual de la estructura de datos definida por una clase. Se define una clase una vez y a continuación se crean muchos objetos que pertenecen a ella. Los objetos también se conocen como instancia.
- Variable de Miembro: Estas son las variables definidas dentro de una clase. Estos datos serán invisibles para el exterior de la clase y se puede acceder a ellos a través de las funciones de miembro. Estas variables se llaman atributo del objeto una vez que se crea un objeto.
- Función de miembro: son la función definida dentro de una clase y se utilizan para acceder a los datos de objeto.
- Herencia: Cuando una clase se define heredando una función existente de una clase padre, entonces se llama herencia. Aquí la clase infantil heredará todas o algunas de las funciones y variables de una clase de padres.
- Clase de padre: Una clase que es heredada de otra clase. Esto también se llama clase base o superclase.
- Clase heredada: Una clase que hereda de otra clase. Esto también se denomina subclase o clase derivada.
- Polimorfismo: Este es un concepto orientado a objetos donde la misma función puede ser usada para diferentes propósitos. Por ejemplo, el nombre de la función seguirá siendo el mismo, pero puede tomar un número diferente de argumentos y realizar una tarea diferente.
- Sobrecarga: Es un tipo de polimorfismo en el que algunos o todos los operadores tienen diferentes implementaciones dependiendo del tipo de sus argumentos. Del mismo modo, las funciones también pueden sobrecargarse con implementaciones diferentes.
- Abstracción de datos: Cualquier representación de datos en la que los detalles de implementación están ocultos (abstractos).
- Encapsulación: se refiere a un concepto donde encapsulamos todos los datos y funciones de los miembros juntos para formar un objeto.
- Constructor: se refiere a un tipo especial de función que se llamará automáticamente cada vez que haya una formación de objeto de una clase.
- Destructor: se refiere a un tipo especial de función que se llamará automáticamente cada vez que un objeto se borre o salga del ámbito de aplicación.
Usando Programación Orientada a Objetos con Lenguaje de Programación PHP
PHP es un lenguaje de programación orientado a objetos, aunque no tiene que ser usado como uno, ya que la mayoría de las funciones que utiliza PHP no están orientadas a objetos, sino a lenguaje de programación estructurado.
En la programación orientada a objetos, una clase es una definición de un objeto, mientras que un objeto es una instancia de un objeto, lo que significa que a partir de una clase se pueden crear muchos objetos.
Por ejemplo, definamos una clase de un estudiante:
class estudiante { // constructor public function __construct($primer_nombre, $segundo_nombre) { $this->primer_nombre = $primer_nombre; $this->segundo_nombre = $segundo_nombre; } public function say_name() { echo "Mi nombre es" . $this->primer_nombre . " " . $this->segundo_nombre . ".\n"; } } $alex = new estudiante("Alex", "Jones"); $alex->say_name();
Analicemos el código. Observe que la clase de Estudiante tiene una función de constructor, que se ejecuta cuando se crea el objeto. El constructor recibe argumentos que se proporcionan más tarde al construir el objeto con la nueva palabra clave.
Después de haber construido el objeto en la variable $alex ahora podemos usar los métodos del objeto.
Implementamos un método de objeto say_name, que imprime el nombre del estudiante. Observe que la función say_name no recibe ningún argumento, pero sí tiene acceso al nombre y apellido del estudiante, ya que fueron definidos previamente en el constructor.
Herencia
La característica más importante de la programación orientada a objetos es la herencia. Esta característica nos permite reutilizar el código que hemos escrito y ampliarlo. Por ejemplo, digamos que queremos ser capaces de definir un estudiante de matemáticas, que también sepa cómo sumar dos números.
class estudiante { // constructor public function __construct($primer_nombre, $segundo_nombre) { $this->primer_nombre = $primer_nombre; $this->segundo_nombre = $segundo_nombre; } public function say_name() { echo "Mi nombre es: " . $this->primer_nombre . " " . $this->segundo_nombre . ".\n"; } } $alex = new estudiante("Alex", "Jones"); $alex->say_name(); class EstudianteDeMatematica extends estudiante { function sum_numbers($primer_numero, $segundo_numero) { $suma = $primer_numero + $segundo_numero; echo $this->primer_nombre . " dice que " . $primer_numero . " + " . $segundo_numero . " es " . $suma; } } $eric = new EstudianteDeMatematica("Eric", "Chang"); $eric->say_name(); $eric->sum_numbers(3, 5);
Nota que el objeto de Eric también tiene el mismo constructor y la función say_name, además de un nuevo método llamado sum_numbers, que hace que Eric calcule la suma de dos números. También note que la nueva función tiene acceso a los mismos miembros que hemos definido previamente en la clase del Estudiante (nombre, apellido).
Funciones públicas y privadas
Podemos utilizar los modificadores públicos y privados respectivamente para definir funciones a las que se puede acceder desde fuera del objeto o no, con fines de encapsulación. Esto permite definir mejor cómo se deben utilizar los objetos, para separar entre las funciones que se utilizan para uso interno, a diferencia de una interfaz externa.
class estudiante { // constructor debe ser público public function __construct($primer_nombre, $segundo_nombre) { $this->primer_nombre = $primer_nombre; $this->segundo_nombre = $segundo_nombre; } // Para uso externo public function say_name() { echo "My name is " . $this->full_name() . "\n"; } // Para uso externo private function full_name() { return $this->primer_nombre . " " . $this->segundo_nombre; } } $alex = new estudiante("Alex", "Jones"); $alex->say_name(); // this will not work // echo $alex->full_name();
Ejercicio propuesto
Cree una clase llamada vehiculo con un constructor que recibe la marca y hace año del coche, y una función llamada print_details que imprime los detalles del coche.
Por ejemplo, para un coche Toyota 2006, se imprimiría la siguiente línea:
Este vehiculo es un Toyota 2006.
// TODO: Implementar la clase vehiculo aquí $vehiculo = new vehiculo("Toyota", 2006); $vehiculo->print_details();
Solución al ejercicio propuesto
class vehiculo { public function __construct($marca, $año) { $this->marca = $marca; $this->año = $año; } public function print_details() { echo "Este vehículo es un" . $this->marca . " " . $this->año . ".\n"; } } $car = new vehiculo("Toyota", 2006); $car->print_details();
Salida en pantalla
Este vehiculo es un Toyota 2006.
¡Enhorabuena! si estás aquí es porque tienes conocimiento previo de PHP, si deseas un certificado que avale tu conocimiento podrás obtenerlo realizando nuestro curso gratuito:
[…] Objetos en PHP (AprenderPHP – Curso básico) […]