Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Utilizar clases extendidas y Constructores

Estas en el tema de Utilizar clases extendidas y Constructores en el foro de PHP en Foros del Web. Buenas, he comenzado a aprender a programar en PHP inclinándome desde un principio a orientado a objeto, bueno en el trayecto de estudio pase por ...
  #1 (permalink)  
Antiguo 07/05/2015, 13:16
 
Fecha de Ingreso: octubre-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Información Utilizar clases extendidas y Constructores

Buenas, he comenzado a aprender a programar en PHP inclinándome desde un principio a orientado a objeto, bueno en el trayecto de estudio pase por las clases y clases extendidas y por los constructores, pero estos conocimientos lo he aplicado por separado, ahora estoy explorando un poco mas lo que he aprendido.

Resulta que quiero saber si es posible extender el constructor de la clase principal. Hay maneras mas fáciles para obtener el resultado, pero quisiera aplicar los 2 conceptos, he buscado información pero no he encontrado nada referente a lo que deseo hacer.

Código PHP:
<html>
    <head>
        <title>Examen de POO</title>
        <link rel="stylesheet" type="text/css" href="">
    </head>
    <body>
        <p>
            <?php
                
Class Alumno 
                
{
                    public 
$Nombre;
                    public 
$Nota;
                public function 
__construct($Nombre,$Nota
                {
                    
$this->Cnombre $Nombre;
                    
$this->Cnota $Nota;
                }
                public function 
respuestaAlumn()
                {
                    return 
"Mi nombre es " $this->Cnombre " y mi calificacion para este examen fue de " $this->Cnota ", encantado de hacer este examen </br>";
                }

                }

                
/**
                * 
                */
                
class Profesor extends Alumno
                
{
                    public 
$Profe;
                    public function 
__construct($Profe
                    {
                    
$this->Cprofe $Profe;
                    }
                    public function 
respuestaProfe()
                    {
                        return 
"Soy el Profesor " $this->Cprofe " y al alumno " $this->Cnombre " le he puesto la nota de " $this->Cnota " felicidades pasaste";
                    }
                }

                
$llamadaAlumn = new Alumno("Xavier"79);
                
$llamadaProfe = new Profesor("Prueba","Xavier"79);
                echo 
$llamadaAlumn->respuestaAlumn();
                echo 
$llamadaProfe->respuestaProfe();
            
?>
        </p>
    </body>
</html>
El error que tengo es que no me reconoce las variables de mi contructor principal

Código PHP:
NoticeUndefined propertyProfesor::$Cnombre in C:xampphtdocsexamen.php on line 37

Notice
Undefined propertyProfesor::$Cnota in C:xampphtdocsexamen.php on line 37 
  #2 (permalink)  
Antiguo 07/05/2015, 13:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Utilizar clases extendidas y Constructores

Si en el método constructor de hijo no invocas el constructor del padre entonces las propiedades que definiste dentro del constructor padre no se aplicarán en el constructor hijo.

Además usas public $Nombre e internamente defines $Cnombre lo cual es incorrecto.

Por favor, consulta un manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/05/2015, 13:35
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Utilizar clases extendidas y Constructores

Esto no esta bien por que no tienes declaradas estas propiedades:
Código PHP:
Ver original
  1. $this->Cnombre = $Nombre;
  2. $this->Cnota = $Nota;
Lo mismo con
Código PHP:
Ver original
  1. $this->Cprofe = $Profe;
Si usas variables publicas de nada te sirve el constructor, Por otro lado por que profesor hereda de alumno ?,
Si explicas que quieres hacer seria mas sencillo.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 07/05/2015, 15:24
 
Fecha de Ingreso: octubre-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Utilizar clases extendidas y Constructores

Bueno estaba siguiendo los ejemplos de CodeAcademy, pero al final estoy comprendiendo un poco mejor con la documentación de PHP.

El problema es que estaba confundido con el concepto __construct y en CodeAcademy por alguna razón te ensañan hacer la declaración public y luego nuevamente la pones interna.

a la final cambie casi por completo la logica anterior para quedar de esta manera.
Código PHP:
<?php

class Datos {

  public function 
DatosGenerales($nombre,$apellido,$nota)
  {
    
$this->nombre=$nombre;
    
$this->apellido=$apellido;
    
$this->nota=$nota;
  }

  public function 
imprimirResultado()
  {
    echo 
$this->resultado.'<br>';
  }
}

class 
Profesor extends Datos{
  public function 
DatosProfe($nombreProfe)
  {
      
$this->profe $nombreProfe;
    
$this->resultado"El estudiante " $this->nombre " " $this->apellido " tiene la nota de " $this->nota " con la Profesora " $this->profe;
  }
}
$NuevoProfesor "PruebaProfesor";
$imprimir=new Profesor();
$imprimir->DatosGenerales("PruebaNombre","PruebaApellido",10);
$imprimir->DatosProfe($NuevoProfesor);
$imprimir->imprimirResultado();
?>
Gracias!

Etiquetas: clases, class, extends
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 15:21.