Tania Teran Carreon
/*Cliente: GestorDeCuenta*/
abrirConn();
//Aquí se usa la abstracción concreta de CrearCuentaAlumno
$creador= new CrearCuentaAlumno();
$alumno=$creador->crearAl($nombre,$apellidoP,$apellidoM,$estado,$contrasena,$matricula);
$sql=sprintf("INSERT INTO usuario (nombre, apellidoP, apellidoM, estado) VALUES ('%s', '%s', '%s', %s);",
mysqli_real_escape_string($conn, $alumno->getNombre()), mysqli_real_escape_string($conn, $alumno->getApellidoP()),
mysqli_real_escape_string($conn, $alumno->getApellidoM()), mysqli_real_escape_string($conn, $alumno->getEstado()));
$usuario=mysqli_query($conn, $sql);
$sql=sprintf("SELECT idUsuario FROM usuario WHERE nombre = '%s';",
mysqli_real_escape_string($conn, $alumno->getNombre()));
$datos=mysqli_query($conn, $sql);
$fila=mysqli_fetch_assoc($datos);
$fila['idUsuario'];
$sql=sprintf("INSERT INTO alumno (matricula, contrasena, UsuarioAl) VALUES (%s, '%s', %s);",
mysqli_real_escape_string($conn, $alumno->getMatricula()), mysqli_real_escape_string($conn, $alumno->getContrasena()), mysqli_real_escape_string($conn, $fila['idUsuario']));
$alu=mysqli_query($conn, $sql);
if ($usuario==true&&$alu==true) {
echo "registrado";
} else {
echo "fallo algo";
}
$conector->cerrarConn();
}
public function registrarCuentaAd($nombre,$apellidoP,$apellidoM,$estado,$contrasena,$matriculaAd) {
$conector = new Conector();
$conn = $conector->abrirConn();
//Aquí se usa la abstracción concreta de CrearCuentaAdministrador
$creador= new CrearCuentaAdministrador();
$administrador=$creador->crearAd($nombre,$apellidoP,$apellidoM,$estado,$contrasena,$matriculaAd);
$sql=sprintf("INSERT INTO usuario (nombre, apellidoP, apellidoM, estado) VALUES ('%s', '%s', '%s', %s);",
mysqli_real_escape_string($conn, $administrador->getNombre()), mysqli_real_escape_string($conn, $administrador->getApellidoP()),
mysqli_real_escape_string($conn, $administrador->getApellidoM()), mysqli_real_escape_string($conn, $administrador->getEstado()));
$usuario=mysqli_query($conn, $sql);
$sql=sprintf("SELECT idUsuario FROM usuario WHERE nombre = '%s';",
mysqli_real_escape_string($conn, $administrador->getNombre()));
$datos=mysqli_query($conn, $sql);
$fila=mysqli_fetch_assoc($datos);
$fila['idUsuario'];
$sql=sprintf("INSERT INTO administrador (matriAd, contrasena, UsuarioAd) VALUES (%s, '%s', %s);",
mysqli_real_escape_string($conn, $administrador->getMatriculaAd()), mysqli_real_escape_string($conn, $administrador->getContrasena()), mysqli_real_escape_string($conn, $fila['idUsuario']));
$alu=mysqli_query($conn, $sql);
if ($usuario==true&&$alu==true) {
echo "registrado";
} else {
echo "fallo algo";
}
$conector->cerrarConn();
}
public function registrarCuentaEx($nombre,$apellidoP,$apellidoM,$estado,$contrasena,$correoExterno) {
$conector = new Conector();
$conn = $conector->abrirConn();
//Aquí se usa la abstracción concreta de CrearCuentaExterno
$creador= new CrearCuentaExterno();
$externo=$creador->crearE($nombre,$apellidoP,$apellidoM,$estado,$contrasena,$matriculaAd);
$sql=sprintf("INSERT INTO usuario (nombre, apellidoP, apellidoM, estado) VALUES ('%s', '%s', '%s', %s);",
mysqli_real_escape_string($conn, $externo->getNombre()), mysqli_real_escape_string($conn, $externo->getApellidoP()),
mysqli_real_escape_string($conn, $externo->getApellidoM()), mysqli_real_escape_string($conn, $externo->getEstado()));
$usuario=mysqli_query($conn, $sql);
$sql=sprintf("SELECT idUsuario FROM usuario WHERE nombre = '%s';",
mysqli_real_escape_string($conn, $externo->getNombre()));
$datos=mysqli_query($conn, $sql);
$fila=mysqli_fetch_assoc($datos);
$fila['idUsuario'];
$sql=sprintf("INSERT INTO administrador (correoEx, contrasena, UsuarioEx) VALUES (%s, '%s', %s);",
mysqli_real_escape_string($conn, $externo->getCorreoEx()), mysqli_real_escape_string($conn, $externo->getContrasena()), mysqli_real_escape_string($conn, $fila['idUsuario']));
$alu=mysqli_query($conn, $sql);
if ($usuario==true&&$alu==true) {
echo "registrado";
} else {
echo "fallo algo";
}
$conector->cerrarConn();
}
}
?>
/* Abstracción: CrearCuenta*/
/*Abstracción refinada1: CrearCuentaAdministrador*/
/*Abstracción refinada2: CrearCuentaExterno*/
/*Abstracción refinada3: CrearCuentaAlumno*/
/*Implementador: Usuario */
nombre = $nombre;
$this->apellidoP = $apellidoP;
$this->apellidoM = $apellidoM;
$this->estado = $estado;
$this->contrasena = $contrasena;
}
// Getters
public function getNombre() {
return $this->nombre;
}
public function getApellidoP() {
return $this->apellidoP;
}
public function getApellidoM() {
return $this->apellidoM;
}
public function getEstado() {
return $this->estado;
}
public function getContrasena() {
return $this->contrasena;
}
// Setters
public function setNombre($nombre) {
$this->nombre = $nombre;
}
public function setApellidoP($apellidoP) {
$this->apellidoP = $apellidoP;
}
public function setApellidoM($apellidoM) {
$this->apellidoM = $apellidoM;
}
public function setEstado($estado) {
$this->estado = $estado;
}
public function setContrasena($contrasena) {
$this->contrasena = $contrasena;
}
}
?>
/*Implementador concreto A: Administrador */
matriculaAd = $matriculaAd;
}
// Getters
public function getMatriculaAd() {
return $this->matriculaAd;
}
// Setters
public function setMatriculaAd($matriculaAd) {
$this->matriculaAd = $matriculaAd;
}
public function setUsuario($usuario){
}
}
?>
/*Implementador concreto B: Externo */
correoExterno = $correoExterno;
}
// Getters
public function getCorreoExterno() {
return $this->correoExterno;
}
// Setters
public function setCorreoExterno($correoExterno) {
$this->correoExterno = $correoExterno;
}
public function setUsuario($usuario){
}
}
?>
/*Implementador concreto C: Alumno */
matricula = $matricula;
}
// Getters
public function getMatricula() {
return $this->matricula;
}
// Setters
public function setMatricula($matricula) {
$this->matricula = $matricula;
}
public function setUsuario($matricula){
$conector = new Conector();
$query = $conector->connect()->prepare('SELECT * FROM Alumno WHERE matricula = :matricula');
$query->execute(['matricula' => $matricula]);
foreach ($query as $sesionUsuario) {
$this->matricula = $sesionUsuario['matricula'];
$id = $sesionUsuario['UsuarioAl'];
}
$query = $conector->connect()->prepare("SELECT * FROM Usuario WHERE idUsuario = '$id' ");
}
public function Existe($matricula, $contrasena){
$conector = new Conector();
$query = $conector->connect()->prepare('SELECT * FROM Alumno WHERE matricula = :matricula AND contrasena = :contrasena');
$query->execute(['matricula' => $matricula, 'contrasena' => $contrasena]);
if($query->rowCount()){
return true;
}else{
return false;
}
}
}
?>
En el proyecto UAMAZON que es una aplicación que permite la compra y venta de productos a alumnos de la unidad cuajimalpa y externos. Se aplicó el patron Bridge que se muestra en la imagen para crear cuentas de usuario. En este patron se separa la abstracción de la implementación. En este caso se separo la abstracción que corresponde a la creación de cuentas, de la implementación pues cada implementador concreto mediante la implementación de su constructor se asigna atributos y crea una cuenta, mientras que el cliente, que en este caso es el GestorDeCuenta, puede pedir que se cree una cuenta mediante las abstracciones refinadas. Que en realidad no implementan nada pero acceden a la implementación mediante los implementadores concretos que en este caso son Administrador, Externo y Alumno. Dejo el código correspondiente.
Comments (1)
Noté que se borraron partes del código las dejo en este comentario. /* Abstracción: CrearCuenta*/ /*Abstracción refinada1: CrearCuentaAdministrador*/ /*Abstracción refinada2: CrearCuentaExterno*/ /*Abstracción refinada3: CrearCuentaAlumno*/