Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/php/POO/Herencia/EjemploAmbulatorio»
De WikiEducator
(→Gestión de personal de un ambulatorio) |
|||
| (4 revisiones intermedias por el mismo usuario no mostrado) | |||
| Línea 1: | Línea 1: | ||
| − | [Usuario:ManuelRomero/ProgramacionWeb/php/POO/introduccion#Herencia | | + | <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 /> | ||
| + | --> | ||
| + | ===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 | ||
| + | <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 />"; | ||
| + | |||
| + | } | ||
| + | |||
| + | /** | ||
| + | * @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; | ||
| + | } | ||
| + | } | ||
| + | </source> | ||
| + | ;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 | ||
| + | <source lang=php> | ||
| + | public function __construct($n, $a, $d, $e, $esp) { | ||
| + | $this->nombre = $n; | ||
| + | $this->apellido=$a; | ||
| + | $this->direccion=$d; | ||
| + | $this->edad=$e; | ||
| + | $this->especialidad = $esp; | ||
| + | } | ||
| + | </source> | ||
| + | *En lugar de ello, se llama al constructor de la clase de la que heredo | ||
| + | {{Tip|Observar que para acceder a una clase de la que heredo uso la palabra reservada '''''parent''''' que corresponde a un operador}} | ||
| + | <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) { | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | /** | ||
| + | * @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; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </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){ | ||
| + | |||
| + | } | ||
| + | |||
| + | /** | ||
| + | * @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; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </source> | ||
| + | ;Clase Conserje | ||
| + | <source lang=php> | ||
| + | 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); | ||
| + | } | ||
| + | } | ||
| + | </source> | ||
| + | *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 | ||
| + | <source lang=php> | ||
| + | <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> | ||
| + | </source> | ||
| + | *La salida que muestra este código son los '''''echo ''''', que podríamos ver en la siguiente imagen | ||
| + | [[Imagen:EjemploAmbulatorioIndex.png]] | ||
| + | <font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red> | ||
| + | [[Usuario:ManuelRomero/ProgramacionWeb/php/POO/introduccion#Herencia |Volver temario]] | ||
| + | </font> | ||
| + | <hr /> | ||
Última revisión de 16:25 16 abr 2018
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
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
