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

De WikiEducator
Saltar a: navegación, buscar
Línea 1: Línea 1:
[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/introduccion#Herencia |volver]]
+
<font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red>
 +
[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/introduccion#Herencia |Volver temario]]
 +
</font>
 +
<hr />
 +
 
 
===Gestión de personal de un ambulatorio===
 
===Gestión de personal de un ambulatorio===
 
Siguiendo el ejemplo planteado en el apartado de herencia, implementamos las clases
 
Siguiendo el ejemplo planteado en el apartado de herencia, implementamos las clases
Línea 247: Línea 251:
 
*La salida que muestra este código son los '''''echo ''''', que podríamos ver en la siguiente imagen
 
*La salida que muestra este código son los '''''echo ''''', que podríamos ver en la siguiente imagen
 
[[Imagen:EjemploAmbulatorioIndex.png]]
 
[[Imagen:EjemploAmbulatorioIndex.png]]
 +
<font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red>
 +
[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/introduccion#Herencia |Volver temario]]
 +
</font>
 +
<hr />

Revisión de 12:50 6 dic 2016

Volver temario


Gestión de personal de un ambulatorio

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

Clase PersonalAmbulatorio
  • Esta es la clase que contiene los atributos y métodos comunes para el resto e las clases
<?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
  • La clase para crear un médico. En el constructor alternativamente a lo planteado se puede dar valores a los atributos nombre, apellido y edad, pues también son atrbutos de esta clase
  • Es decir, el constructor podría ser
    public function __construct($n, $a, $d, $e, $esp) {
        $this->nombre = $n;
        $this->apellido=$a;
        $this->direccion=$d;
        $this->edad=$e;
        $this->especialidad = $esp;
    }
  • En lugar de ello, se llama al constructor de la clase de la que heredo
Icon present.gif
Tip: Observar que para acceder a una clase de la que heredo uso la palabra reservada parent que corresponde a un operador


<?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);
    }
}
  • Un posible uso podría ser el siguiente index.php; simplemente crea unos objetos y luego visualizamos los valores de tres médicos que creamos.
  • Añadimos un pequeño css para dar a la salida un poco de visualización
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .medico{
                font-family: sans-serif;
                font-size: 22px;
                font-weight: 400;
                color:  #000033;
                background: 	#e6e6e6;
                width: 80%;
                margin: 0 0 0px;
                overflow: hidden;
                padding: 0px;
            }            
            .tituloAcciones{
                font-family: Times;
                font-size: 20px;
                font-weight: 400;
                color: #0000b3;
                margin: 0 0 0 20px;
                overflow: hidden;
                padding: 0px;
            }
            .contenidoAcciones{
                font-family: Times;
                font-size: 18px;
                font-weight: 400;
                border :1px solid black;
                width: 90%;
                color:  #0000e6;
                margin: 10px 10px 10px 30px;
                overflow: hidden;
                padding: 0px;
 
            }
        </style>
    </head>
    <body>
        <?php
        spl_autoload_register(function ($nombre_clase) {
            include $nombre_clase . '.php';
        });
 
        $medico1 = new Medica("María", "Martínez", "Casa de María", 29, "Cardiólogía");
        $medico2 = new Medica("Luis", "Pérez", "Casa de Luis", 38, "Pediatría");
        $medico3 = new Medica("Nieves", "Ruiz", "Casa de Nieves", 44, "Dermatología");
        $conserje = new Conserje("Soledad", "Viruela", "Casa de Soledad", 58, "Mostrador Entrada");
        $enfermera = new Enfermera("Javier", "Moreno", "Casa de Javier", 1990);
        $enfermera2 = new Enfermera("Luis", "Perez", "Casa de Javier", 1990);
 
 
        $conserje->avisoEnfermera($enfermera, "Realizar cura en brazo Señor Martínez NSS 50/2155441/35");
 
        $enfermera->avisoMedico($medico3, "Paciente con toss y fiebre");
 
        $enfermera2->avisoMedico($medico2, "Paciente con toss y fiebre");
        $enfermera2->avisoMedico($medico2, "Paciente con Vómitos");
        $enfermera2->avisoMedico($medico3, "Paciente con pie torcido, impresión de rotura");
 
 
        $conserje->avisoMedico($medico1, "Visitar en casa con mucha fiebre", "Visita");
        $conserje->avisoMedico($medico1, "Problemas para desplazarse ", "Visita");
        $conserje->avisoMedico($medico2, "Mareos y vétigos", "Visita");
        $conserje->avisoMedico($medico2, "Persona mayor con poca mobilidad", "Visita");
        $conserje->avisoMedico($medico3, "Niño pequeño con fiebre", "Visita");
        $conserje->avisoMedico($medico1, "Caída en el parque", "Consulta");
 
        echo "$medico3";
        echo "$medico1";
        echo "$medico2";
// put your code here
        ?>
    </body>
</html>
  • La salida que muestra este código son los echo , que podríamos ver en la siguiente imagen

EjemploAmbulatorioIndex.png Volver temario