Autor Tema: Crear clase y hereda (PHP)  (Leído 9503 veces)

Mac

  • Intermedio
  • ***
  • Mensajes: 174
  • Java-Php
    • Ver Perfil
Crear clase y hereda (PHP)
« en: 10 de Mayo 2014, 18:39 »
-----------------------------------------------------------------------------------------------------------
Hola comunidad !!! Tengo esta actividad y tengo que terminarla lo mas pronto posible ! !,   :) ...  He adelantado Bastante pero no se por que no puedo lograr sacra el 25% en la descripción de la actividad.. Quisiera que por favor me ayudaran compartiendo sus conocimientos para poderle darle solución a toda esta actividad que la tendré que entregar a tiempo.

- He echo Bastante del el programa !!!  pero tengo problemas.

-Colocare el enunciado y el código que he realizado todas las clases  y el probador para ejecutar el programa !  !.  :D

-Solo basta una ayuda.
---------------------------------------------------------------------------------------------------------

Gracias muchísimas Gracias de antemano !  ;)  :)
---------------------------------------------------------------------------------------------------------

Crear una clase Persona (cédula, nombre, apellido, edad)

Crear una clase derivada Estudiante (Código, Programa,  Semestre, ValorMatricula)

Crear una clase Empleado (Código,Empleado, dependencia, Salario, Vinculación)

Crear una clase EstudianteEmpleado.

Además crear una Interfaz llamada PazySalvo que tenga el método saldo y el método mostrar.  Implementar la interfaz en la clase EstudianteEmpleado para el método saldo restar del valor de la matricula el salario y para el método mostrar si el empleado gana el 25% del salario decir que tiene fondos con que pagar la matricula, sino diga que no tiene fondos.

Cree un probador en el cual tenga un listado de Estudiantes, Empleados y de Estudiantes Empleados, ingresarlos en un vector y luego muestre la información relacionada a cada uno de ellos.
----------------------------------------------------------------------------------------------------------------
De aquí se deriva el programa
----------------------------------------------------------------------------------------------------------------
---------------------------------
Esta es la clase Persona !
----------------------------------
Código: [Seleccionar]
<?php

// final no deja sobre escribir 
class Persona {

    
//put your code here

    
private $cedula;
    private 
$nombre;
    private 
$apellido;
    private 
$edad;

    function 
__construct($cedula$nombre$apellido$edad) {

        
$this->cedula $cedula;
        
$this->nombre $nombre;
        
$this->apellido $apellido;
        
$this->edad $edad;
    }

    public final function 
getCedula() {
        return 
$this->cedula;
    }

    public final function 
getNombre() {
        return 
$this->nombre;
    }

    public function 
getApellido() {
        return 
$this->apellido;
    }

    public final function 
getEdad() {
        return 
$this->edad;
    }

    public final function 
setCedula($cedula) {
        
$this->cedula $cedula;
    }

    public final function 
setNombre($nombre) {
        
$this->nomre $nombre;
    }

    public function 
setApellido($apellido) {
        
$this->apellido $apellido;
    }

    public final function 
setEdad($edad) {
        
$this->edad $edad;
    }

}

?>

-------------------------------------
Esta Es la clase Estudiante
------------------------------------
Código: [Seleccionar]
<?php

include_once 'Persona.php';

class 
Estudiante extends Persona {

    
//put your code here

    
private $codigo;
    private 
$programa;
    private 
$semestre;
    private 
$valormatri;

    function 
__construct($cedula$nombre$apellido$edad$codigo$programa$semestre$valormatri) {

        
parent::__construct($cedula$nombre$apellido$edad);

        
$this->codigo $codigo;
        
$this->programa $programa;
        
$this->semestre $semestre;
        
$this->valormatri $valormatri;
    }

    public function 
getCodigo() {
        return 
$this->codigo;
    }

    public function 
getPrograma() {
        return 
$this->programa;
    }

    public function 
getSemestre() {
        return 
$this->semestre;
    }

    public function 
getValormatri() {
        return 
$this->valormatri;
    }

    public function 
setCodigo($codigo) {
        
$this->codigo $codigo;
    }

    public function 
setPrograma($programa) {
        
$this->programa $programa;
    }

    public function 
setSemestre($semestre) {
        
$this->semestre $semestre;
    }

    public function 
setValormatri($valormatri) {
        
$this->valormatri $valormatri;
    }

}

?>
------------------------------------------------------
Esta es la clase Empleado
------------------------------------------------------
Código: [Seleccionar]
<?php

include_once 'Persona.php';

class 
Empleado extends Persona {

    
//put your code here

    
private $codigoemp;
    private 
$cargo;
    private 
$salario;
    private 
$vinculacion;

    function 
__construct($cedula$nombre$apellido$edad$codigoemp$cargo$salario$vinculacion) {

        
parent::__construct($cedula$nombre$apellido$edad);

        
$this->codigoemp $codigoemp;
        
$this->cargo $cargo;
        
$this->salario $salario;
        
$this->vinculacion $vinculacion;
    }

    public function 
getCodigoemp() {
        return 
$this->codigoemp;
    }

    public function 
getSalario() {
        return 
$this->salario;
    }

    public function 
getVinculacion() {
        return 
$this->vinculacion;
    }

    public function 
getCargo() {
        return 
$this->cargo;
    }

    public function 
setCodigoemp($codigoemp) {
        
$this->codigoemp $codigoemp;
    }

    public function 
setSalario($salario) {
        
$this->salario $salario;
    }

    public function 
SetCargo($cargo) {
         
$this->cargo$cargo;
    }

    public function 
setVinculacion($vinculacion) {
        
$this->vinculacion $vinculacion;
    }

}

?>
-------------------------------------------------------------
Esta es la clase EstudianteEmpleado
-------------------------------------------------------------
Código: [Seleccionar]
<?php

include_once 'Persona.php';
include_once 
'Empleado.php';
include_once 
'Estudiante.php';

class 
EstudianteEmpleado extends Empleado {
 
   private 
$codigo;
    private 
$programa;
    private 
$semestre;
    private 
$valormatri;

    function 
__construct($cedula$nombre$apellido$edad$codigo$programa$cargo$semestre$salario$codigoemp$vinculacion$valormatri) {
        
parent::__construct($cedula$nombre$apellido$edad$codigoemp$cargo$salario$vinculacion);

        
$this->codigo $codigo;
        
$this->programa $programa;
        
$this->semestre $semestre;
        
$this->valormatri $valormatri;
    }

}

?>
-------------------------------------------
Este es el Probador
------------------------------------------
Código: [Seleccionar]
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
       
        <?php
        
include_once 'EstudianteEmpleado.php';
        include_once 
'Empleado.php';
        include_once 
'Estudiante.php';
        include_once 
'Persona.php';


        
$v = array();

        
$est = new Estudiante(88824"Ana""Lazuli"18151310178"Ingenieria"41800000);

        
$emp = new Empleado(46548"Luisa""Perez"1918902453"secretaria"1000000"medio tiempo");


        
$est1 = new Estudiante(88858"Julio""Osorio"18151311178"Ingenieria"31750000);

        
$emp1 = new Empleado(88824"Ana""Lazuli"18151310128"jardinero"800000"tiempo completo");

        
$ee = new EstudianteEmpleado(88824"Ana""Lazuli"18151310178"Ingenieria""jardinero"4800000151310128"tiempo completo"1800000);


        
$v[0] = $est;
        
$v[1] = $emp;
        
$v[2] = $est1;
        
$v[3] = $emp1;
        
$v[4] = $ee;

        for (
$i 0$i count($v); $i++) {

            if (
$v[$i]instanceof Estudiante) {


                echo 
'ESTUDIANTE </br>';
                echo
'La Cedula Es --->' "  " $v[$i]->getCedula() . "</br>";
                echo
'El Nombre Es --->' "  " $v[$i]->getNombre() . "</br>";
                echo
'El Apellido Es --->' "  " $v[$i]->getApellido() . "</br>";
                echo
'La Edad Es --->' "  " $v[$i]->getEdad() . "</br>";
                echo
'El Codigo Es --->' "  " $v[$i]->getCodigo() . "</br>";
                echo
'El Programa Es --->' " " $v[$i]->getPrograma() . "</br>";
                echo
'El Semestre Es --->' "  " $v[$i]->getSemestre() . "</br>";
                echo
'El Valor De La Matricula Es --->' "  " $v[$i]->getValormatri() . "</br>";
                echo 
'</br>';
            } else if (
$v[$i]instanceof EstudianteEmpleado) {


                echo 
'ESTUDIANTE & EMPLEADO </br>';
                echo
'La Cedula Es --->' "  " $v[$i]->getCedula() . "</br>";
                echo
'El Nombre Es --->' "  " $v[$i]->getNombre() . "</br>";
                echo
'El Apellido Es --->' "  " $v[$i]->getApellido() . "</br>";
                echo
'La Edad Es --->' "  " $v[$i]->getEdad() . "</br>";
                echo
'El Codigo Es --->' "  " $v[$i]->getCodigo() . "</br>";
                echo
'El Programa Es --->' " " $v[$i]->getPrograma() . "</br>";
                echo
'El Cargo Es --->' "  " $v[$i]->getCargo() . "</br>";
                echo
'El Semestre Es --->' "  " $v[$i]->getSemestre() . "</br>";
                echo
'El Salario Es --->' "  " $v[$i]->getSalario() . "</br>";
                echo
'El Codigo de empleado Es --->' "  " $v[$i]->getCodigoemp() . "</br>";
                echo
'Su Vinculacion Es --->' "  " $v[$i]->getVinculacion() . "</br>";
                echo
'El Valor De La Matricula Es --->' "  " $v[$i]->getValormatri() . "</br>";
                echo 
'</br>';
                
                if (
$v[$i]->getSalario()>= ($v[$i]->getValormatri()*0.25)){
                
                    
                    echo 
'Si alcanza';
                    
                }
                else {
                    echo 
'No alcanza ';
                }
            } else   {

                echo 
'</br>';
                echo 
'Empleado </br>';
                echo
'La Cedula Es --->' "  " $v[$i]->getCedula() . "</br>";
                echo
'EL Nombre Es --->' "  " $v[$i]->getNombre() . "</br>";
                echo
'El Apellido Es --->' "  " $v[$i]->getApellido() . "</br>";
                echo
'La Edad Es --->' "  " $v[$i]->getEdad() . "</br>";

                echo
'El Codigo de empleado Es --->' "  " $v[$i]->getCodigoemp() . "</br>";
                echo
'El Cargo Es --->' "  " $v[$i]->getCargo() . "</br>";
                echo
'El Salario Es --->' "  " $v[$i]->getSalario() . "</br>";
                echo
'Su Vinculacion Es --->' "  " $v[$i]->getVinculacion() . "</br>";
                echo 
'</br>';
            
                
                
                
                
                
                
            }
        }
        
?>


    </body>
</html>

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Crear clase y hereda (PHP)
« Respuesta #1 en: 10 de Mayo 2014, 22:11 »
Hola Mac, todavía no he visto el código pero tampoco veo cuál es la pregunta, es decir, qué es lo que te falta por hacer o qué mensaje de error es el que obtienes ¿?
Responsable de departamento de producción aprenderaprogramar.com

Mac

  • Intermedio
  • ***
  • Mensajes: 174
  • Java-Php
    • Ver Perfil
Re:Crear clase y hereda (PHP)
« Respuesta #2 en: 11 de Mayo 2014, 01:23 »
Hola cesar ... Bueno mas que todo lo que me falta hacer es esto ! y es lo siguiente ..

1-Crear una Interfaz llamada PazySalvo que tenga el método saldo y el método mostrar.  2-Implementar la interfaz en la clase EstudianteEmpleado para el método saldo.
3-Restar del valor de la matricula con el salario y para el método mostrar que diga si el empleado gana el 25% del salario decir que tiene fondos con que pagar la matricula, sino diga que no tiene fondos....

ya yo Cree un probador en el cual tenga un listado de Estudiantes, Empleados y de Estudiantes Empleados, los ingrese en un vector y luego mostré  la información relacionada a cada uno de ellos.

Pero no me se como hacer con los puntos anteriores que te menciones de primero Cesar!

Gracias de verdad por tu pronta ayuda y orientación !    :D  ya que estoy corto de tiempo   :(


Mas que todo el objetivo del programa es que: cuando lo ejecute me saque el listado de Estudiantes , Empleado y del EstudianteEmpleado que ya me sale .. Mas no me dice o no se como hacer para que me diga esto --> si el empleado gana el 25% del salario decir que tiene fondos con que pagar la matricula,  y sino que  diga que no tiene fondos.. Yo coloque el Código que dice Probador...
« Última modificación: 11 de Mayo 2014, 01:29 por Mac »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Crear clase y hereda (PHP)
« Respuesta #3 en: 11 de Mayo 2014, 22:05 »
Hola al ejecutar el código me han saltado errores,


En la clase prueba tenías:
Código: [Seleccionar]
echo 'ESTUDIANTE & EMPLEADO </br>';
...
echo'El Codigo Es --->' . "  " . $v[$i]->getCodigo() . "</br>";

Y ahí me saltaba un error.

Para corregirlo lo he cambiado por
Código: [Seleccionar]
echo'El Codigo Es --->' . "  " . $v[$i]->getCodigoemp() . "</br>";

Otras líneas con error en la clase prueba eran:

Código: [Seleccionar]
echo'El Programa Es --->' . " " . $v[$i]->getPrograma() . "</br>";

 echo'El Semestre Es --->' . "  " . $v[$i]->getSemestre() . "</br>";

echo'El Valor De La Matricula Es --->' . "  " . $v[$i]->getValormatri() . "</br>";

Para corregirlos he añadido en la clase EstudianteEmpleado este código:

 public function getPrograma() { return $this->programa; }

public function getSemestre() { return $this->semestre; }

public function getValormatri() {return $this->valormatri; }


El problema es que no puedes hacer que EstudianteEmpleado herede de dos clases porque php no admite la herencia de más de una clase. De ahí que tengas o bien que rediseñar las clases y hacerlo de otra manera, o bien que repetir métodos como te he indicado.

Para la interface Pazysalvo.php he creado esto:

<?php
interface PazySalvo {
public function saldo();
public function mostrar();
}
?>

Y luego se implementa en la clase EstudianteEmpleado:

Código: [Seleccionar]
<?php
include_once 'Persona.php';
include_once 
'Empleado.php';
include_once 
'Estudiante.php';
include_once 
'PazySalvo.php';

class 
EstudianteEmpleado extends Empleado implements PazySalvo {
 
   private 
$codigo;
    private 
$programa;
    private 
$semestre;
    private 
$valormatri;

    function 
__construct($cedula$nombre$apellido$edad$codigo$programa$cargo$semestre$salario$codigoemp$vinculacion$valormatri) {
        
parent::__construct($cedula$nombre$apellido$edad$codigoemp$cargo$salario$vinculacion);

        
$this->codigo $codigo;
        
$this->programa $programa;
        
$this->semestre $semestre;
        
$this->valormatri $valormatri;
    }

    public function getPrograma() { return $this->programa; }

    public function getSemestre() { return $this->semestre; }

    public function getValormatri() {return $this->valormatri; }

public function saldo() { return 'Respuesta del metodo saldo aqui'; }
public function mostrar() { return 'Respuesta del método mostrar'; }

}
?>


Sin embargo no sé qué código poner en el método saldo ni en el método mostrar ya que no sé qué es lo que tienen que hacer estos métodos ¿qué tienen que hacer estos métodos?
Responsable de departamento de producción aprenderaprogramar.com

Mac

  • Intermedio
  • ***
  • Mensajes: 174
  • Java-Php
    • Ver Perfil
Re:Crear clase y hereda (PHP)
« Respuesta #4 en: 12 de Mayo 2014, 01:10 »
Hola cesar   ;D

Bueno primero que nada gracias por ayudarme y a saber esos errores que encontraste tenia otro concepto yo por aparte !  :-\ de igual forma te he entendido lo que planteas se que ahora php no se puede heredar dos clases ----No conocía ese concepto pensé que si se podía .  ;)

Ahora cesar lo que falta es pues lo que e comentado arriba es que :

Para el método saldo -- > restar del valor de la matricula el salario.

Para el método mostrar que diga -> si el empleado gana el 25% del salario decir que tiene fondos con que pagar la matricula, sino diga que no tiene fondos. Pues esto se realiza por un ciclo if , else.

Eso es todo que ya lo tengo echo y que lo e puesto en el código de prueba pero no sale Cesar !

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Crear clase y hereda (PHP)
« Respuesta #5 en: 14 de Mayo 2014, 13:08 »
He estado mirándolo y si tratas de acceder a salario desde un EstudianteEmpleado no te deja por el modo de declaración de las variables en la clase padre (Empleado). Para darle visibilidad a salario desde la clase EstudianteEmpleado tienes que declarar en la clase Empleado la variable salario con modificador de acceso protected. En otro caso lo considera un atributo no accesible desde la subclase.

Es decir, en la clase Empleado en vez de private $salario; declaramos protected $salario;


Luego ya tienes visible el atributo desde la clase hija (EstudianteEmpleado).

Ahora en la clase EStudianteEmpleado podemos escribir:

   public function saldo() {   
   $calculo = $this->valormatri - $this->salario;
   return $calculo;   }


Y en la clase de prueba podemos escribir:

                echo'El Valor De La Matricula Es --->' . "  " . $v[$i]->getValormatri() . "</br>";
      echo'El metodo saldo devuelve --->' . "  " . $v[$i]->saldo() . "</br>";


El resultado que me sale a mí por pantalla es:

ESTUDIANTE & EMPLEADO
La Cedula Es ---> 88824
El Nombre Es ---> Ana
El Apellido Es ---> Lazuli
La Edad Es ---> 18
El Codigo Es ---> 151310128
El Programa Es ---> Ingenieria
El Cargo Es ---> jardinero
El Semestre Es ---> 4
El Salario Es ---> 800000
El Codigo de empleado Es ---> 151310128
Su Vinculacion Es ---> tiempo completo
El Valor De La Matricula Es ---> 1800000
El metodo saldo devuelve ---> 1000000

De todas formas no acabo de verle sentido a lo que hace este método, no sé si no he entendido lo que hay que hacer, porque lo que está haciendo es restarle al valor de la matrícula el salario pero a eso no le veo significado.  ::)
Responsable de departamento de producción aprenderaprogramar.com

Mac

  • Intermedio
  • ***
  • Mensajes: 174
  • Java-Php
    • Ver Perfil
Re:Crear clase y hereda (PHP)
« Respuesta #6 en: 17 de Mayo 2014, 14:50 »
Cesar Excelente estubo tu ayuda .... Problea del foro resuelto Me salio Muy Bien y pues le modifique una que otra cosita ... no me habia fijado en esos pequeñitos errores  ;D ;D;)  Muchisimas Gracias Cesar Krall   ;)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".