Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/php/POO/ejercicios»

De WikiEducator
Saltar a: navegación, buscar
Línea 132: Línea 132:
 
</source>
 
</source>
 
}}
 
}}
 +
 +
===Gestión de personal de un ambulatorio===
 +
Siguiendo el ejemplo planteado en el apartado de herencia, implementamos las clases
 +
;Clase PersonalAmbulatorio
 +
<source lang=php>
 +
<?php
 +
/**
 +
* Description of personalAmbulatorio
 +
* @author manuel
 +
*/
 +
class PersonalAmbulatorio {
 +
    //put your code here
 +
    protected $nombre;
 +
    protected $apellido;
 +
    protected $direccion;
 +
    protected $edad;
 +
   
 +
    public function __construct($n,$a, $d,$e){
 +
        $this->nombre = $n;
 +
        $this->apellido=$a;
 +
        $this->direccion=$d;
 +
        $this->edad=$e;
 +
    }
 +
    public function hacerTurno($turno){
 +
        return "turno de esta semana es $turno<br />";
 +
       
 +
    }
 +
    public function hacerIncidencia($msg){
 +
        $incidencia ="Persona que crea incidencia $this->apellido, $this->nombre  <br />";
 +
        $incidencia .="incidencia creada con fecha ".date("d-m-y", time())."<hr />";
 +
        $incidencia .="<strong>$msg</strong>";
 +
    }
 +
}
 +
</source>
 +
;Clase Medica
 +
<source lang=php>
 +
<?php
 +
 +
/**
 +
* Description of Medica
 +
* @author manuel
 +
*/
 +
class Medica extends PersonalAmbulatorio {
 +
 +
    //put your code here
 +
 +
    private $especialidad;
 +
    private $visitas = [];
 +
    private $consultas = [];
 +
 +
    public function __construct($n, $a, $d, $e, $esp) {
 +
        parent::__construct($n, $a, $d,$e);
 +
        $this->especialidad = $esp;
 +
    }
 +
 +
/*    public function pasarConsulta($enfermera, $mensaje) {
 +
 +
        $msj = "<div style=margin-left:5em> Fecha : " . date("d-m-y", time()) . "</div>";
 +
        $msj.="<div style=margin-left:5em>Enfermera $enfermera</div>";
 +
        $msj.="<div style=margin-left:5em>Tipo de consulta  " . $mensaje ."</div>";
 +
        $this->consultas[] =$msj;
 +
       
 +
    }
 +
*
 +
*/
 +
    public function pasarConsulta($enfermera, $mensaje) {
 +
 +
        $msj = "Fecha : " . date("d-m-y H:i:s", time()) ;
 +
        $msj.=".  Enfermero/a :  $enfermera";
 +
        $msj.=".  Tipo de consulta  <strong>" . $mensaje."</strong>" ;
 +
        $this->consultas[] =$msj;
 +
       
 +
    }
 +
 +
    public function realizarVisita($ordenante, $aviso) {
 +
       
 +
        $msj = "Fecha : " . date("d-m-y H:i:s", time()) . "";
 +
        $msj.=". Envía  <strong> $ordenante</strong>";
 +
        $msj.=". Aviso: <strong>$aviso</strong>";
 +
        $this->visitas[] = $msj;
 +
    }
 +
 +
    public function __toString() {
 +
        $msj = "<div class='medico'> Medico : <strong>$this->apellido, $this->nombre</strong> de $this->edad años de edad";
 +
        $msj.=".  Especialidad <strong>$this->especialidad</strong>";
 +
        $msj.="<div class='tituloAcciones'>Consultas realizadas  " . count($this->consultas) . " consultas :</div>";
 +
        $msj.="<div class='contenidoAcciones'>";
 +
        foreach ($this->consultas as $num => $consulta) {
 +
            $msj.="Consulta $num: ";
 +
            $msj.=  "$consulta<br />";
 +
        }
 +
        $msj.="</div>";
 +
        $msj.="<div class='tituloAcciones'>Visitas realizadas : " . count($this->visitas) . " visitas.</div>";
 +
        $msj.="<div class='contenidoAcciones'>";
 +
        foreach ($this->visitas as $num => $visita) {
 +
            $msj.=" Visita $num: ";
 +
            $msj.= " $visita <br />";
 +
        }
 +
        $msj.="</div>" ;
 +
        $msj.="</div>" ;
 +
        return $msj;
 +
    }
 +
 +
}
 +
</source>
 +
;Clase Enfermera
 +
<source lang=php>
 +
class Enfermera extends PersonalAmbulatorio {
 +
    //put your code here
 +
  private $anyoTitulacion;
 +
  private $curas=[];
 +
   
 +
  public function  __construct($n, $a, $d, $e, $aT){
 +
        parent::__construct($n,$a,$d,$e);
 +
        $this->anyoTitulacion=$aT;
 +
    }
 +
    public function avisoMedico(Medica $medico, $mensaje){
 +
        $medico->pasarConsulta($this->apellido, $mensaje, 1);
 +
    }
 +
   
 +
    public function hacerCura($ordenante, $tipoCura){
 +
        $msj="Fecha : ".date("d-m-y", time())."<br/>";
 +
        $msj.="Ordenante $ordenante<br />";
 +
        $msj.="Tipo de cura $cura <hr />";
 +
        $this->curas[]=$msj;
 +
    }
 +
}
 +
 +
</source>
 +
;Clase Conserje
 +
<source lang=php>
 +
class Conserje extends PersonalAmbulatorio {
 +
    //put your code here
 +
    private $ubicacion;
 +
   
 +
    public function  __construct($n, $a, $d, $e, $u){
 +
        parent::__construct($n,$a,$d);
 +
        $this->ubicacion=$u;
 +
    }
 +
   
 +
    public function avisoMedico(Medica $medico, $mensaje,$tipoAviso){
 +
        if ($tipoAviso=="Consulta")
 +
            $medico->pasarConsulta($this->apellido, $mensaje, 2);
 +
        if ($tipoAviso =="Visita")
 +
            $medico->realizarVisita($this->apellido, $mensaje);
 +
    }
 +
    public function avisoEnfermera(Enfermera $enfermera, $mensaje){
 +
        $enfermera->hacerCura($this->apellido, $mensaje);
 +
    }
 +
}
 +
</source>

Revisión de 11:16 6 dic 2016



Icon activity.jpg
Actividad
Empleado
  • Confeccionar una clase Empleado, definir como atributos su nombre y sueldo.
  • Definir un método inicializarlo para que lleguen como dato el nombre y sueldo.
  • Plantear un segundo método que imprima el nombre y un mensaje si debe o no pagar impuestos (si el sueldo supera a 3000 paga impuestos)




<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Empleado {
  private $nombre;
  private $sueldo;
 
  public function asigna($nom,$sue)
  {
    $this->nombre=$nom;
    $this->sueldo=$sue;
  }
  public function pagaImpuestos()
  {
    echo $this->nombre;
    echo '-';
    if ($this->sueldo>3000)
      echo 'Debe pagar impuestos';
    else
      echo 'No paga impuestos';
    echo '<br>';
  }
}
 
$empleado1=new Empleado();
$empleado1->inicializar('Luis',2500);
$empleado1->pagaImpuestos();
$empleado1=new Empleado();
$empleado1->inicializar('Carla',4300);
$empleado1->pagaImpuestos();
?>
</body>
</html>



Icon activity.jpg
Actividad

Confeccionar una clase Menu. Permitir añadir la cantidad de opciones que necesitemos. Mostrar el menú en forma horizontal o vertical (según que método llamemos)



<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Menu {
  private $enlaces=array();
  private $titulos=array();
  public function cargarOpcion($en,$tit)
  {
    $this->enlaces[]=$en;
    $this->titulos[]=$tit;
  }
  public function mostrarHorizontal()
  {
    for($f=0;$f<count($this->enlaces);$f++)
    {
      echo '<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>';
      echo "-";
    }
  }
  public function mostrarVertical()
  {
    for($f=0;$f<count($this->enlaces);$f++)
    {
      echo '<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>';
      echo "<br>";
    }
  }
}
 
$menu1=new Menu();
$menu1->cargarOpcion('http://www.google.com','Google');
$menu1->cargarOpcion('http://www.yahoo.com','Yhahoo');
$menu1->cargarOpcion('http://www.msn.com','MSN');
$menu1->mostrarVertical();
?>
</body>
</html>



Icon activity.jpg
Actividad

Construir una clase llamado racional que podamos inicializar con un string del tipo por ejemplo "8/5"



<?php
class racional {
    //put your code here
    private $numRacional;
    public function __construct($cadena) {
        $this->numRacional = $cadena;
    }
    public function __toString()(){
        return $this->numRacional;
    }
}
 
$a=new racional("8/5");
$b=new racional("6/4");
echo "<br>valor de \$a: $a <br />";
echo "<br>valor de \$b: $b";
?>




Icon activity.jpg
Actividad

Creamos la clase factura

  • Constantes IVA
  • Atributos Importe Base, fecha, impuestos, Importe bruto, estado (pagada o pendiente)
  • Métodos: imprime




Icon activity.jpg
Sobrecargar el constructor de un racional

Siguiendo el ejemplo establecido anteriormente realiza un constructor que permita instanciar un objeto de la clase racional de la siguiente manera

$a = new racional ("8/5");/*   8/5  */
$b = new racional (5,4);  /*   5/6  */
$c = new racional (5);    /*   5/1  */
$d = new racional ();     /*   1/1   */




Gestión de personal de un ambulatorio

Siguiendo el ejemplo planteado en el apartado de herencia, implementamos las clases

Clase PersonalAmbulatorio
<?php
/**
 * Description of personalAmbulatorio
 * @author manuel
 */
class PersonalAmbulatorio {
    //put your code here
    protected $nombre;
    protected $apellido;
    protected $direccion;
    protected $edad;
 
    public function __construct($n,$a, $d,$e){
        $this->nombre = $n;
        $this->apellido=$a;
        $this->direccion=$d;
        $this->edad=$e;
    }
    public function hacerTurno($turno){
        return "turno de esta semana es $turno<br />";
 
    }
    public function hacerIncidencia($msg){
        $incidencia ="Persona que crea incidencia $this->apellido, $this->nombre  <br />";
        $incidencia .="incidencia creada con fecha ".date("d-m-y", time())."<hr />";
        $incidencia .="<strong>$msg</strong>";
    }
}
Clase Medica
<?php
 
/**
 * Description of Medica
 * @author manuel
 */
class Medica extends PersonalAmbulatorio {
 
    //put your code here
 
    private $especialidad;
    private $visitas = [];
    private $consultas = [];
 
    public function __construct($n, $a, $d, $e, $esp) {
        parent::__construct($n, $a, $d,$e);
        $this->especialidad = $esp;
    }
 
/*    public function pasarConsulta($enfermera, $mensaje) {
 
        $msj = "<div style=margin-left:5em> Fecha : " . date("d-m-y", time()) . "</div>";
        $msj.="<div style=margin-left:5em>Enfermera $enfermera</div>";
        $msj.="<div style=margin-left:5em>Tipo de consulta   " . $mensaje ."</div>";
        $this->consultas[] =$msj;
 
    }
 * 
 */
    public function pasarConsulta($enfermera, $mensaje) {
 
        $msj = "Fecha : " . date("d-m-y H:i:s", time()) ;
        $msj.=".  Enfermero/a :   $enfermera";
        $msj.=".  Tipo de consulta   <strong>" . $mensaje."</strong>" ;
        $this->consultas[] =$msj;
 
    }
 
    public function realizarVisita($ordenante, $aviso) {
 
        $msj = "Fecha : " . date("d-m-y H:i:s", time()) . "";
        $msj.=". Envía  <strong> $ordenante</strong>";
        $msj.=". Aviso: <strong>$aviso</strong>";
        $this->visitas[] = $msj;
    }
 
    public function __toString() {
        $msj = "<div class='medico'> Medico : <strong>$this->apellido, $this->nombre</strong> de $this->edad años de edad";
        $msj.=".  Especialidad <strong>$this->especialidad</strong>";
        $msj.="<div class='tituloAcciones'>Consultas realizadas  " . count($this->consultas) . " consultas :</div>";
        $msj.="<div class='contenidoAcciones'>";
        foreach ($this->consultas as $num => $consulta) {
            $msj.="Consulta $num: ";
            $msj.=  "$consulta<br />";
        }
        $msj.="</div>";
        $msj.="<div class='tituloAcciones'>Visitas realizadas : " . count($this->visitas) . " visitas.</div>";
        $msj.="<div class='contenidoAcciones'>";
        foreach ($this->visitas as $num => $visita) {
            $msj.=" Visita $num: ";
            $msj.= " $visita <br />";
        }
        $msj.="</div>" ;
        $msj.="</div>" ;
        return $msj;
    }
 
}
Clase Enfermera
class Enfermera extends PersonalAmbulatorio {
    //put your code here
   private $anyoTitulacion;
   private $curas=[];
 
   public function  __construct($n, $a, $d, $e, $aT){
        parent::__construct($n,$a,$d,$e);
        $this->anyoTitulacion=$aT;
    }
    public function avisoMedico(Medica $medico, $mensaje){
        $medico->pasarConsulta($this->apellido, $mensaje, 1);
    }
 
    public function hacerCura($ordenante, $tipoCura){
        $msj="Fecha : ".date("d-m-y", time())."<br/>";
        $msj.="Ordenante $ordenante<br />";
        $msj.="Tipo de cura $cura <hr />";
        $this->curas[]=$msj;
    }
}
Clase Conserje
class Conserje extends PersonalAmbulatorio {
    //put your code here
    private $ubicacion;
 
    public function  __construct($n, $a, $d, $e, $u){
        parent::__construct($n,$a,$d);
        $this->ubicacion=$u;
    }
 
    public function avisoMedico(Medica $medico, $mensaje,$tipoAviso){
        if ($tipoAviso=="Consulta")
            $medico->pasarConsulta($this->apellido, $mensaje, 2);
        if ($tipoAviso =="Visita")
            $medico->realizarVisita($this->apellido, $mensaje);
    }
    public function avisoEnfermera(Enfermera $enfermera, $mensaje){
        $enfermera->hacerCura($this->apellido, $mensaje);
    }
}