Blog de programación, errores, soluciones

PHP / POO – Programación orientada a objetos

En el siguiente articulo veremos una introducción a programación orientada a objetos en PHP.

contenido del articulo:

Introducción a POO

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

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

En otras palabras tenemos 2 grupos:

  • Los campos compuesto 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.

  • Modularidad: el código fuente de un objeto puede escribirse y mantenerse independiente de el 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

En la clase imagine 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

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

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

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:

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

Instanciar la clase

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

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

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 Vehiculo usando la palabra clave extends, también podemos decir que la clase Vehiculo es la clase padre y Auto es la clase hijo.

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

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 sera para un vehiculo. Por combenio las interfaces llevan una letra i delate.

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.

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Last 4 post in same category