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 mas 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 sera mas facil entender que son los objetos y clases en PHP o otro lenguaje.

Objeto

Para entender esto le pido que mire al rededor 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. Ademas de esto cumple ciertas funciones esta le llamaremos metodos.

en otras palabras tenemos 2 grupos:

  • los campos compuesto por los botones, parlantes, pantalla y otros.
  • los metodos 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 las 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 algun 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 anterires a 5.3 y por lo tanto no podemos definir 2 constructores, o otros 2 m茅todos cuales sea. Pero si podemos simularla. Puede ver mas 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 codigo 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 metodos 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 mas 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 implementrar 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

Asi se define una interfaz en php, definimos los metodos y si estos tienen parametros 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.

Mas temas de php: PHP 101 – tutorial de PHP

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