Clases y Objetos en PHP


blocksAntes de comenzar a trabajar con clases y objetos, debemos conocer primero la diferencia entre la programación tradicional y la programación orientada a objetos (POO). En la programación tradicional los problemas son resueltos ejecutando una acción tras otra, en otras palabras, escribes un programa donde las acciones son ejecutadas una por una para resolver un problema.

Por ejemplo, si deseas sumar dos números en PHP, basta con el siguiente código:

<?
// Define dos numeros
$a = 2;
$b = 3;
// Suma ambos numeros
$c = $a + $b;
echo "a+b=".$c;
?>

Programación Orientada a Objetos (POO)

En POO los problemas se resuelven desde otro punto de vista. Tienes que ver el problema (y su solución) como objetos con propiedades y comportamiento. Por ejemplo, puedes definir un objeto “escritorio” con algunas propiedades (ancho, alto, profundidad, color, etc) y comportamiento (estático). Si ahora piensas en un carro, algunas de las propiedades pueden ser el número de ruedas, modelo, año, etc, y su comportamiento puede ser “moviéndose” o “detenido”.

Ahora vamos a pensar en un ejemplo práctico. Imagina que quieres sumar dos números complejos. En PHP no hay una representación para los números complejos, es decir, no puedes ejecutar esta suma así no más:

2+3j
1+2j +
3+5J

Debes resolver este problema con objetos. Primero que nada, debes escribir una clase (la definición del objeto)  para los números complejos donde definirás sus propiedades y comportamiento. En este caso las propiedades son la parte real e imaginaria, y su comportamiento son las operaciones que puedes ejecutar con dos números (sumar, restar, multiplicar, dividir). Vamos a ver el código PHP:

<?
class Complejo{
 
    // Propiedades
    public $x;    // La parte real
    public $y;    // La parte imaginaria 
 
    // Constructor (Inicialización del objeto)
    public function __construct($a,$b){
        $this->x = $a;
        $this->y = $b;
    }
 
    // Comportamiento
    function sumar($a,$b){
        // Creamos un nuevo objeto: el número complejo (0,0)
        $c     = new Complejo(0,0);
 
        // Sumamos la parte real
        $c->x     = $a->x + $b->x;
 
        // Sumamos la parte imaginaria
        $c->y    = $a->y + $b->y;
 
        // Devolvemos el número complejo resultante
        return $c;
 
    }
    function restar($a,$b){
        // Aquí la parte real e imaginaria se restan y son
        // pasadas como argumentos para un nuevo objeto,
        // el cual será retornado como resultado
        return new Complejo($a->x-$b->x,$a->y-$b->y);
    }
}
?>

Ahora podemos guardar este código como Complejo.php. Aquí omití las otras dos operaciones (multiplicar y dividir).

Probando nuestros Números Complejos de PHP

Para probar si la clase funciona, podemos usarlo en un script como este:

<?
require "Complejo.php";
 
// Definimos un nuevo número complejo
$numero = new Complejo(3,5);
 
echo "Parte real: ".$numero->x;
echo "<br>";
echo "Parte imaginaria: ".$numero->y;
echo "<br>";
 
// Ahora vamos a probar la suma
$a = new Complejo(2,3);
$b = new Complejo(1,2);
 
// Suma $a y $b
$c = $a->sumar($a,$b);
 
// Mostrar el resultado
echo "La suma es: (".$c->x.",".$c->y.")";
?>

Referencias:

,

  1. avatar

    #1 by Luis Gallardo on 05/09/2010 - 10:15

    Hola Soley, no entendí tu pregunta :)

  2. avatar

    #2 by Soley on 04/09/2010 - 9:17

    Y cual es la de Orientada a objetos?

Los Comentarios están cerrados