






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
En este documento se presenta la implementación de las clases abstracta Persona y su subclase Profesor en PHP. Las clases definen los atributos y métodos básicos de un objeto persona y profesor respectivamente. Además, se muestra cómo se utiliza cada clase en el contexto de un sistema de gestión de profesores.
Tipo: Ejercicios
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Archivos del proyecto: alumnoCtrl.php (captura de eventos, las ejecuta los comandos y muestra las vistas) profesorCtrl.php (captura de eventos, las ejecuta los comandos y muestra las vistas) cursoCtrl.php (captura de eventos, las ejecuta los comandos y muestra las vistas) vistas/alumnoFormView.php (Formulario de inserción de alumno) vistas/alumnoListView.php (Formulario para listar alumno) vistas/cursoFormView.php (Formulario de inserción de Curso) vistas/profesorFormView.php (Formulario de inserción de Profesores) vistas/profesorListView.php (Formulario para listar Profesores)
**1. Primero se debe analizar los archivos PHP utilizados en sesiones anteriores.
3. Creamos la función de autocarga de objetos autoload.php
**4. Implementamos la clase abstracta Persona:** abstract class logic_Persona { protected $nombre = ''; protected $apellido = ''; public function __construct($nombre, $apellidos){ **$this->nombre = $nombre;** **$this->apellido = $apellidos;** } public function getNombre(){ $returnValue = (string) ''; **$returnValue = $this->nombre;** return (string) $returnValue; } public function setNombre($pNombre) { **$this->nombre = $pNombre;** } public function getApellido() { $returnValue = (string) ''; **$returnValue = $this->apellido;** return (string) $returnValue; } public function setApellido($pApellido) { **$this->apellido = $pApellido;** } public function __toString() { $returnValue = (string) ''; **$returnValue = "{$this->apellido}, {$this->nombre}";** return (string) $returnValue; } } /* end of abstract class logic_Persona */**7. Testeamos: Abrimos el archivo test.php de la raiz
public function __construct() { $this->puntero = 0; } public function load() { //TODO falta } public function __get ($propiedad) { if(isset($this->$propiedad) ) $returnValue = $this->$propiedad; else $returnValue = null; } public function __set ($propiedad, $valor) { $returnValue = (bool) false; if(isset($this->$propiedad)) $this->$propiedad = $valor; else $returnValue = false; return (bool) $returnValue; } public function append( logic_Alumno $oAlumno) { $this->oAlumnos[] = $oAlumno; } public function getProfesor() { $returnValue = null; $returnValue = $this->oProfesor; return $returnValue; } public function setProfesor(logic_Profesor $pProfesor) { $this->oProfesor = $pProfesor; } public function getArrayCopy(){ return (array) $this->oAlumnos; } public function exchangeArray($array){ $this->oAlumnos = $array; } } /* end of class logic_Curso */ Getter y Setters
function borrarProfesor($id=-1){ global $errorMessage; if($_SESSION['Profesores']->offsetExists($id)){ $_SESSION['Profesores']->offsetUnset($id); header("Location: profesorCtrl.php"); }else { $errorMessage = 'Error el código no existe'; listarProfesores(); } } function insertarProfesor($espec='',$nombre='',$apellido=''){ global $errorMessage; if(strlen($nombre)<=2) $errorMessage = 'Error Insertando el Nombre'; elseif(strlen($apellido)<=2) $errorMessage = 'Error Insertando el Apellido'; if(strlen($espec)<=2) $errorMessage = 'Error Insertando el Especialidad'; else{ $pro = new logic_Profesor(); $pro->setNombre($nombre); $pro->setApellido($apellido); $pro->setNoEspecialidad($espec); $_SESSION['Profesores']->append($pro); header("Location: profesorCtrl.php"); return 0; } verForminsercion($espec,$nombre,$apellido); } if(!isset($_GET['cmd']))$_GET['cmd']=''; switch ($_GET['cmd']){ case 'listar' : listarProfesores();break; case 'insertar' : insertarProfesor($_POST['fEspecialidad'], $_POST['fNombre'], $_POST['fApellido']);break; case 'actualizar' : break; case 'borrar' : borrarProfesor($_GET['id']);break; case 'verforminsert' : verForminsercion();break; default: listarProfesores(); } ?>
11. Implementar cursoCtrl.php
getArrayCopy(); if(isset($_SESSION['Curso'])){ if($nombre == '')$nombre = $_SESSION['Curso']->noCurso; if($idProfesor == ''){ $prof= $_SESSION['Curso']->getProfesor(); $idProfesor = $prof->getCoProfesor(); } }** include 'vistas/cursoFormView.php'; } function insertarCurso($coCurso=0,$noCurso='',$idProf = 0){ global $errorMessage; if(strlen($coCurso)<=0) $errorMessage = 'Error Insertando el Codigo del curso'; elseif(strlen($noCurso)<=2) $errorMessage = 'Error Insertando el Nombre del Curso'; elseif(!$_SESSION['Profesores']->offsetExists($idProf)) $errorMessage = 'Error Insertando el Profesor '.$idProf; else{ **$profesor = $_SESSION['Profesores']->offsetGet($idProf); if(isset($_SESSION['Curso'])){ $_SESSION['Curso']->cocurso = $coCurso; $_SESSION['Curso']->nocurso = $noCurso; $_SESSION['Curso']->setProfesor($profesor); }else{ $_SESSION["Curso"] = new logic_Curso($coCurso,$noCurso,$profesor); $_SESSION['Curso']->cocurso = $coCurso; $_SESSION['Curso']->nocurso = $noCurso; $_SESSION['Curso']->setProfesor($profesor); }** } verForminsercion($noCurso,$idProf); } … …Notas previas:
3. Modificando la clase abstracta Profesor: class logic_Profesor extends logic_Persona { protected $coprofesor = 0; protected $noespecialidad = ''; public $_table = 'Profesor'; public function __construct() { parent::__construct('',''); } ... 4. Modificando la clase abstracta ColeccionProfesores: class logic_ColeccionProfesores extends ArrayObject{ public function __construct(){ parent::__construct(); $this->load(); }
try{ $oProfesor->Save(); parent::append($oProfesor); } catch (ADODB_Exception $e) { return false; } catch (Exception $e) { return false; } return true; }
$table = 'Profesor'; try{ $conn = logic_DB::conn(); if($this->offsetExists($offset)){ $profesor = $this->offsetGet($offset); $conn->Execute("DELETE FROM $table WHERE coPro- fesor={$profesor->getCoProfesor()}"); parent::offsetUnset($offset); } } catch (ADODB_Exception $e) { return false; } catch (Exception $e) { return false; } return true; } public function load(){ $table = 'Profesor'; $conn = logic_DB::conn(); $array = $conn->GetActiveRecordsClass('logic_Profesor',$table); $this->exchangeArray($array);