Usuario:ManuelRomero/ProgramacionWeb/php/POO/Herencia/EjemploAmbulatorio

De WikiEducator
< Usuario:ManuelRomero‎ | ProgramacionWeb/php‎ | POO
Revisión a fecha de 05:25 17 abr 2018; ManuelRomero (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Volver temario


Gestión de personal de un ambulatorio

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

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 />";
 
    }
 
    /**
     * @param $msg
     * creamos una incidencia especificando
     * La persona que la crea
     * La hora en la que se crea
     * El mensaje propio de la incidencia pasado por pantalla
     */
    public function hacerIncidencia($msg){
        $incidencia ="Persona que crea incidencia ...."
 
        return $incidencia;
    }
}
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) {
 
 
    }
 
 
    /**
     * @param $enfermera
     * @param $mensaje
     * Pasar consulta creará un nuevo elemento en el array de consultas
     * Es un mensaje con la información
     * Fecha
     * Emfermera/o que pasa consulta
     * El mensaje propio
     */
    public function pasarConsulta($enfermera, $mensaje) {
 
        $msj = "....";
        $this->consultas[] =$msj;
 
    }
 
    /**
     * @param $ordenante
     * @param $aviso
     *      * Realizar visitas creará un nuevo elemento en el array de visitas
     * Es un mensaje con la información
     * Fecha
     * Quién envía la orden de visita
     * El mensaje propio del aviso
 
     */
    public function realizarVisita($ordenante, $aviso) {
 
        $msj = "Fecha : " . date("d-m-y H:i:s", time()) . "";
        $msj.=". Envía  ....";
        $msj.=". Aviso: ....";
        $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){
 
    }
 
    /**
     * @param Medica $medico
     * @param $mensaje
     * invocaremos al método de pasar consulta de la Medica especificada
     * Con el mensaje
     */
    public function avisoMedico(Medica $medico, $mensaje){
 
 
    }
 
    /**
     * @param $ordenante
     * @param $tipoCura
     * Crearemos un nuevo elemento en el array de curas
     * Espeficicando
     * Fecha
     * Quien ordena la cura
     * Tipo de cura (un string)
     */
    public function hacerCura($ordenante, $tipoCura){
        $msj="...";
        $this->curas[]=$msj;
    }
}
Clase Conserje
class Conserje extends PersonalAmbulatorio {
    //put your code here
    private $ubicacion;
 
    public function  __construct($n, $a, $d, $e, $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