Foros del Web » Programando para Internet » PHP »

Funciona Polimorfismo en PHP actualmente ???

Estas en el tema de Funciona Polimorfismo en PHP actualmente ??? en el foro de PHP en Foros del Web. Hola a todos de nuevo Tengo una duda en un articulo lei que si funcionaba polimorfimo en php, pero en otros me dicen que no ...
  #1 (permalink)  
Antiguo 03/09/2003, 20:15
Avatar de estanislaorc  
Fecha de Ingreso: abril-2003
Ubicación: Peru
Mensajes: 58
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Funciona Polimorfismo en PHP actualmente ???

Hola a todos de nuevo

Tengo una duda en un articulo lei que si funcionaba polimorfimo en php, pero en otros me dicen que no funciona.

mi codigo que estoy probando es el siguiente

class Figura
{ function calculo($obj)
{ $obj->area() ; }

}

class Rectangulo
{
function area()
{ return "Calculo del area de un rectangulo" ;
}
}

class Circulo
{
function area()
{ return "Calculo del area de un circulo" ;
}
}

$f = new Figura ;
$r = new Rectangulo ;
$c = new Circulo ;


echo $f->calculo($c) ;

SI por ahi me equivoce, agamelo saber.

Gracias
__________________
Web developer
  #2 (permalink)  
Antiguo 03/09/2003, 21:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No es mi fuerte OOP .. pero ..

Te invito a leer estos articulos de zonaphp.com que hablan sobre las novedades de PHP 5 (en cuanto al modelo de datos nuevo para objetos) y sobre el actual tratamiento de objetos en PHP 4.x:

OOP para PHP 4.x
http://www.zonaphp.com/index.php?mod...cion=tema&id=5

Sobre el Nuevo PHP 5
http://www.zonaphp.com/index.php?mod...ion=leer&id=21

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 03/09/2003 a las 21:26
  #3 (permalink)  
Antiguo 03/09/2003, 21:30
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 14 años, 5 meses
Puntos: 1
Hola,

En el ejemplo que has compartido con nosotros, podrías usar la construcción `return' dentro de la función calculo() de la clase Figura para lograr el efecto que creo que buscas.

Código:
<?php

class Figura
{
    function calculo($obj)
    { return $obj->area (); }
    
}


class Rectangulo
{
    function area()
    { return 'Calculo del area de un rectangulo'; }
}

class Circulo
{
    function area()
    { return 'Calculo del area de un circulo'; }
}


$f = new Figura;
$r = new Rectangulo;
$c = new Circulo;

echo $f->calculo ($c);

?>

Aunque, como verás, en este ejemplo no se aprecia una de las características típicas del polimorfismo (al menos aquello que conocen como polimorfismo los programadores de C++, por ejemplo), y es el polimorfismo en objetos que son instancias de clases que heredan funcionalidad de una clase padre.

En realidad, en lenguajes que no son "fuertemente tipados", el concepto de polimorfismo resulta mucho más natural debido a la flexibilidad misma que ofrece el hecho de contar con variables sin tipos rígidos.

Una ejemplo clásico de polimorfismo en PHP podría ser el siguiente:

Código:
<?php

class Figura
{
    function area()
    { return 'Calculo del area de una figura cualquiera'; }
    
}


class Rectangulo extends Figura
{
    function area()
    { return 'Calculo del area de un rectangulo'; }
}

class Circulo extends Figura
{
    function area()
    { return 'Calculo del area de un circulo'; }
}

class Triangulo extends Figura
{
    // Notese que esta clase no redefine la funcion area()
}


function calcular_area ($obj)
{
    return $obj->area ();
}


$f = new Figura;
$r = new Rectangulo;
$c = new Circulo;
$t = new Triangulo;

echo calcular_area ($f) . ' - ' .
     calcular_area ($r) . ' - ' .
     calcular_area ($c) . ' - ' .
     calcular_area ($t);

?>
Es un ejemplo extremadamante simple, claro está, pero permite apreciar el modo en que las referencias operan como es de esperarse. También es una muestra de la simplicidad proveniente de los tipos de datos (o la falta misma de éstos) en PHP.

Este mismo ejemplo en lenguajes como C++ requeriría que la función calcular_area() recibiera una referencia a un objeto del tipo de la clase padre, y se necesitaría del uso de funciones virtuales, un requerimiento inexistente en lenguajes como PHP, por ejemplo.


Un cordial saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 06:44.