Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Ayuda sobre POO

Estas en el tema de Ayuda sobre POO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, se me presento el siguiente problema con la POO, resulta que cuando llamo a un metodo de la clase hija que esta ...
  #1 (permalink)  
Antiguo 09/10/2006, 15:45
Avatar de navy  
Fecha de Ingreso: febrero-2006
Mensajes: 36
Antigüedad: 18 años, 2 meses
Puntos: 1
Ayuda sobre POO

Hola a todos, se me presento el siguiente problema con la POO, resulta que cuando llamo a un metodo de la clase hija que esta redefinido en la clase padre, me imprime los 2 metodos, el del padre y el del hijo.
Gracias de antemano.

aqui esta el codigo:

<?php
class Estutiantes
{
private $nombre;
private $ano;
private $sexo;
private $num_solapin;

function __construct($nom,$ano,$sex,$num)
{
$this->nombre=$nom;
$this->ano=$ano;
$this->sexo=$sex;
$this->num_solapin=$num;
}
function Estipendio()
{
switch ($this->ano)
{
case 1:return 20;
case 2:return 30;
case 3:return 30;
case 4:return 40;
case 5:return 40;
}
}
}
class Alumno_ayudante extends Estutiantes
{
private $estipendio;
function __construct($nom,$ano,$sex,$num,$est)
{
parent::__construct($nom,$ano,$sex,$num);
$this->estipendio=$est;
}

function Estipendio()
{
return parent::Estipendio()+50;
}

}


$nom=$_POST['nom'];
$ano=$_POST['ano'];
$sex=$_POST['sex'];
$num=$_POST['num'];
$checkbox=$_POST['checkbox'];
if(isset($_POST['submit']))
{
if(isset($checkbox))
{
$ayu = new Alumno_ayudante($nom,$ano,$sex,$num,$checkbox);
echo 'Su estipendio por ser alumno ayudante es de $: ', $ayu->Estipendio();
echo "<br>";
}
$est= new Estutiantes($nom,$ano,$sex,$num);
echo 'Su estipendio es de: $',$est->Estipendio();
}

?>

Saludos.
  #2 (permalink)  
Antiguo 09/10/2006, 20:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
No le veo problema esta realizando justo lo que le pides, al usar la instruccion parent:: estas refiriendote al metodo de la clase padre, por lo cual van a trabajar los dos metodos.
  #3 (permalink)  
Antiguo 09/10/2006, 21:28
Avatar de navy  
Fecha de Ingreso: febrero-2006
Mensajes: 36
Antigüedad: 18 años, 2 meses
Puntos: 1
Gracias, por responder

Mira el problema esta aqui en este codigo cuando quiero que se imprima el metodo de la clase hija y no el de la padre

if(isset($checkbox))
{
$ayu = new Alumno_ayudante($nom,$ano,$sex,$num,$checkbox);
echo 'Su estipendio por ser alumno ayudante es de $: ', $ayu->Estipendio();
echo "<br>";
}

Saludos
  #4 (permalink)  
Antiguo 10/10/2006, 08:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
entonces usa:
Código PHP:
if( algo ) {
    
unas_cosas();
} else {
    
otras_coasas();

Creo que este problema es conceptual de como trabaja el flujo de un programa mas que de programacion orientada a objetos.
  #5 (permalink)  
Antiguo 10/10/2006, 11:42
Avatar de navy  
Fecha de Ingreso: febrero-2006
Mensajes: 36
Antigüedad: 18 años, 2 meses
Puntos: 1
aclaracion

Dejame explicarme mejor:
Si yo en la pagina html, marco el checkbox, entoces creo un objeto de la clase hijo($ayu), sino creo un objeto de la clase padre($est).
Mi problema consiste cuando marco el checkbox, entoces me crea los dos objetos(el de la clase hija y el de la padre), por lo tanto me imprime dos cosas en ves de una.

No se si usar el operador instanceof.

Saludos.
  #6 (permalink)  
Antiguo 10/10/2006, 12:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Amigo, lee bien mis mensajes tu duda es conceptual tienes que usar el if/else para poder diferenciar, tu mismo lo dices, si marcas el checkbox, crear una clase, si no crear la otra el pseudocodigo de esto es:

Código:
IF CHECKBOX_MARKED THEN
     CREATE ALUMNO_ESTUDIANTE;
ELSE
     CREATE ESTUTIANTES;
END IF
Esto traducido a PHP es:
Código PHP:
$nom=$_POST['nom'];
$ano=$_POST['ano'];
$sex=$_POST['sex'];
$num=$_POST['num'];
$checkbox=$_POST['checkbox'];
if(isset(
$_POST['submit']))
{
if(isset(
$checkbox))
{
$ayu = new Alumno_ayudante($nom,$ano,$sex,$num,$checkbox);
echo 
'Su estipendio por ser alumno ayudante es de $: '$ayu->Estipendio();
echo 
"<br>";
} else {
$est= new Estutiantes($nom,$ano,$sex,$num);
echo 
'Su estipendio es de: $',$est->Estipendio();
}

  #7 (permalink)  
Antiguo 11/10/2006, 21:06
Avatar de navy  
Fecha de Ingreso: febrero-2006
Mensajes: 36
Antigüedad: 18 años, 2 meses
Puntos: 1
GatorV Gracias por tu tiempo, no me habia dado cuenta del "else", ya me funciono!!.
  #8 (permalink)  
Antiguo 11/10/2006, 21:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
no de que, pero si ten en cuenta como es la programacion en si, y como fluyen las instrucciones de un programa
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:31.