Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

PHP / POO – Programación orientada a objetos

En el siguiente artículo veremos una introducción a programación orientada a objetos en PHP.

contenido del artículo:

Introducción a POO

https://blastcoding.com/objetos-y-clases-en-php-poo/#intro

Para que cualquiera que no sepa programar y este mirando estas definiciones y como se declaran y usan los objetos empezare por lo más sencillo que es mostrarle lo que seria un objeto en el mundo real y que seria una clase en el también.De esta manera será más fácil entender que son los objetos y clases en PHP u otro lenguaje.

Objeto

https://blastcoding.com/objetos-y-clases-en-php-poo/#objeto

Para entender esto le pido que mire alrededor de su casa, mire su casa y tome un objeto por ejemplo la televisión como está compuesta esta tiene botones, parlantes, pantalla, etc los llamaremos campos o atributos.

Además de esto cumple ciertas funciones, a estas le llamaremos métodos.

En otras palabras tenemos 2 grupos:

  • Los campos compuestos por los botones, parlantes, pantalla y otros.
  • Los métodos que son las funciones que esta tiene, por ejemplo, prender o apagar la tele, subir el volumen, etc.

Los objetos en software son similares a esto

Ventajas que nos brinda usar objetos.

https://blastcoding.com/objetos-y-clases-en-php-poo/#ventajas
  • Modularidad: el código fuente de un objeto puede escribirse y mantenerse independiente del código de otros objetos.
  • Ocultamiento: al interactuar con los métodos del objeto, la implementación que sucede internamente queda oculta de lo exterior.
  • Reusabilidad: Si un objeto ya existe, puedes usarlo en tu programa.
  • Modificabilidad: si un objeto da problemas puede ser reemplazado con facilidad, esto es como cuando hay que reparar algo y simplemente se cambia la pieza.

Clases

https://blastcoding.com/objetos-y-clases-en-php-poo/#clases

En la clase imaginé que tiene los planos de como crear una televisión y de esta manera podemos hacer las televisiones que queramos. O los planos de una casa, por ejemplo.

Planos de casa

Una clase puede ser tan elaborada como se desee.

Cómo declarar una clase en PHP

https://blastcoding.com/objetos-y-clases-en-php-poo/#declarar_clase_en_php

En PHP podemos declarar una clase con la palabra clave class, y su sintaxis es la siguiente:

Sintaxis
class nombre_de_clase{

}

En el siguiente ejemplo crearemos una clase llamada Televisor

<?php
class Televisor{ 
   //como mera introducción puse public private y protected 
   public $pantalla; 
   private $parlantes;
   protected $botones; 
   function __construct(){

   }
   function prender(){ 
      echo "la tele se prendio"; 
   } 

   function apagar(){ 
      echo "la tele se apago";
   }
} 
?>

El constructor __construct

https://blastcoding.com/objetos-y-clases-en-php-poo/#constructor_de_clase

Muchas veces necesitamos que nuestro objeto, realice una tarea al ser instanciado o que reciba parámetros. Esto lo podemos hacer con el constructor; dentro de la clase el constructor es el método __construct.

Por ejemplo, si necesitamos si sabemos que nuestro objeto va a tener siempre atributos de algún tipo podemos hacer lo siguiente:

constructor
function __construct($p){ //en este constructor le estoy pasando un parámetro $p el cual sera el valor de pantalla.
   $this->pantalla = $p;
}
Lamentablemente PHP no soporta la sobrecarga de métodos en las versiones anteriores a 5.3 y por lo tanto no podemos definir 2 constructores, u otros 2 métodos cuales sea. Pero si podemos simularla. Puede ver más sobre este tema en sobrecarga de constructores

La palabra clave $this

https://blastcoding.com/objetos-y-clases-en-php-poo/#la_palabra_clave_$this

En PHP, la palabra clave $this se utiliza dentro de métodos de clases para hacer referencia al objeto actual al que pertenece el método. $this es una referencia al propio objeto en el que se está trabajando dentro del contexto de una clase.

Permite acceder a las propiedades y métodos de la instancia actual de la clase desde dentro de sus propios métodos.

Instanciar la clase

https://blastcoding.com/objetos-y-clases-en-php-poo/#instanciar_clase_php

Para ver como instanciar agregaremos el siguiente código a la clase que creamos anteriormente. Vea que en el código siguiente usamos la palabra clave new para crear una instancia de la clase Televisor.

$Televisior24 = new Televisor(); 
$Televisior24->prender(); 
$Televisior24->pantalla = "24 pulgadas";
echo "<br>".$Televisior24->pantalla;

Visibilidad

https://blastcoding.com/objetos-y-clases-en-php-poo/#visibilidad

Tanto en PHP como otros lenguajes, podemos definir la visibilidad de las propiedades y los métodos utilizando las palabras claves: public, private y protected.

public : Todos los métodos y propiedades con la palabra clave public son accesibles dentro del proyecto.

protected : Todos los métodos y propiedades con la palabra clave protected serán accesibles, tanto dentro de la clase así también como en subclases.

private : todos los métodos como las propiedades con la palabra clave private solo podrán ser accesibles en la clase.

Herencia en clases PHP

https://blastcoding.com/objetos-y-clases-en-php-poo/#herencia

Tarde o temprano nos damos cuenta en que un objeto, forma parte de un grupo más grande, para ponernos en contexto piénselo de esta manera un auto y un camión tienen cosas en común ambos son vehículos. Si nos ponemos a pensar todos los vehículos tienen luces, ruedas, parabrisas, bocina, etc.

Entonces seria bueno que cada vez que hagamos un vehículo que tenga estos atributos y algunos comportamientos que se dan en los diferentes vehículos no los tengamos que repetir.

class Vehiculo{
   private $luces
   private $ruedas;
   private $puertas
   public function prender(){
       //codigo para prender el auto
   }
   public function apagar(){
       //codigo para apagar el auto
   }
}

En PHP podemos heredar los atributos y métodos de la clase Vehículo usando la palabra clave extends, también podemos decir que la clase Vehículo es la clase padre y Auto es la clase hijo.

class Auto extends Vehiculo{
    public function funcionalidad(){
       //codigo para funcionalidad
    }
}

Interfaces

https://blastcoding.com/objetos-y-clases-en-php-poo/#interfaces

Tomemos en cuenta que hay situaciones en que ya sabemos el comportamiento que tendrá el objeto. De esta manera ya podemos predefinir que métodos se tendrían que implementar en ciertas clases. Y ya que andábamos con esto de los vehículos.

El siguiente ejemplo de como crear una interfaz será para un vehículo. Por convenio, las interfaces llevan una letra i delante.

interface iVehiculo
{
    public function prender();
    public function apagar();
}

Nota: los métodos de las interfaces deben ser public

Así se define una interfaz en PHP, definimos los métodos y si estos tienen parámetros o no.

Para poder usar una interfaz en una clase se debe usar la palabra clave implements

class Vehiculo implements iVehiculo{
   private $luces
   private $ruedas;
   private $puertas
   public function prender(){
       //codigo para prender el auto
   }
   public function apagar(){
       //codigo para apagar el auto
   }
}

Tenga en cuenta que las funciones prender y apagar deben estar definidas en la clase ya que estamos usando la interfaz iVehiculo.

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category