0% encontró este documento útil (0 votos)
17 vistas9 páginas

GUIDE

El documento detalla la implementación de funcionalidades clave en un sistema de reservas de guías, incluyendo la búsqueda de guías por nombre, ciudad o país, y la gestión de reservas. Se describen los métodos necesarios para realizar reservas, aceptar o cancelar las mismas, y cómo se actualizan los estados de los guías y reservas. Además, se menciona que la implementación sigue un diagrama UML y utiliza el patrón Adapter para la autenticación de usuarios.

Cargado por

franchinabro123
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas9 páginas

GUIDE

El documento detalla la implementación de funcionalidades clave en un sistema de reservas de guías, incluyendo la búsqueda de guías por nombre, ciudad o país, y la gestión de reservas. Se describen los métodos necesarios para realizar reservas, aceptar o cancelar las mismas, y cómo se actualizan los estados de los guías y reservas. Además, se menciona que la implementación sigue un diagrama UML y utiliza el patrón Adapter para la autenticación de usuarios.

Cargado por

franchinabro123
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Vamos a continuar con la implementación de las funcionalidades más

importantes del sistema, siguiendo el diagrama UML que proporcionaste. Aquí


te presento los pasos necesarios para implementar estas funcionalidades:

1. Búsqueda de Guía por Nombre, Ciudad o País:

Implementar un método en UsuarioController para buscar guías por


nombre, ciudad o país.

2. Hacer una Reserva:

Implementar el método hacerReserva en Turista que crea una instancia


de Reserva y la asocia a un Viaje .

Actualizar el estado del Guía a Reservado .

3. Aceptar o Cancelar Reserva:

Implementar los métodos aceptarReserva y cancelarReserva en Guía para


manejar el estado de la reserva.

Código Implementado
1. Búsqueda de Guía:
Añadimos el método de búsqueda en UsuarioController :

package CONTROLLERS;

import [Link];
import [Link];

public class UsuarioController {

private List<Usuario> usuarios;

public UsuarioController() {
[Link] = new ArrayList<>();
}

public void registrarUsuario(usuarioDTO uDTO) {


// Lógica para registrar un usuario
// ...

Untitled 1
}

public Usuario buscarUsuarioPorEmail(String email) {


// Lógica para buscar un usuario por email
// ...
}

public boolean verificarContraseña(Usuario usuario, Str


ing contraseña) {
// Lógica para verificar la contraseña
// ...
}

public List<Guia> buscarGuiasPorNombre(String nombre) {


return [Link]()
.filter(u -> u instanceof Guia)
.map(u -> (Guia) u)
.filter(g -> [Link]().equalsIgnoreCase
(nombre))
.collect([Link]());
}

public List<Guia> buscarGuiasPorCiudad(String ciudad) {


return [Link]()
.filter(u -> u instanceof Guia)
.map(u -> (Guia) u)
.filter(g -> [Link]().contains(ciuda
d))
.collect([Link]());
}

public List<Guia> buscarGuiasPorPais(String pais) {


return [Link]()
.filter(u -> u instanceof Guia)
.map(u -> (Guia) u)
.filter(g -> [Link]().contains(pais))
.collect([Link]());

Untitled 2
}
}

2. Hacer una Reserva:


Actualizamos la clase Turista y Guia para manejar las reservas:

package CLASES;

import [Link];

public class Turista extends Usuario {

public Turista(String nombre, String apellido, String s


exo, int dni, String email, int telefono) {
super(nombre, apellido, sexo, dni, email, telefono,
[Link]);
}

public Reserva hacerReserva(Date fechaInicio, Date fech


aFin, int montoAnticipo, Guia guia, ServicioOfrecido servic
ioOfrecido) {
Reserva reserva = new Reserva("Reservado", fechaIni
cio, fechaFin, montoAnticipo, new Viaje(servicioOfrecido, g
uia, fechaInicio, fechaFin));
[Link](new EstadoReservado());
return reserva;
}

public void cancelarReserva(Reserva reserva) {


[Link]();
}
}

package CLASES;

import [Link];

Untitled 3
public class Guia extends Usuario {

private List<String> ciudades;


private List<String> paises;
private List<ServicioOfrecido> servicios;
private Credencial credencial;
private Estado estado;

public Guia(String nombre, String apellido, String sex


o, int dni, String email, int telefono, List<String> ciudad
es, List<String> paises, List<ServicioOfrecido> servicios,
Credencial credencial) {
super(nombre, apellido, sexo, dni, email, telefono,
[Link]);
[Link] = ciudades;
[Link] = paises;
[Link] = servicios;
[Link] = credencial;
[Link] = new EstadoDisponible();
}

public void cambiarEstado(Estado nuevoEstado) {


[Link] = nuevoEstado;
}

public void aceptarReserva(Reserva reserva) {


[Link]();
[Link](new EstadoReservado());
}

public void cancelarReserva(Reserva reserva) {


[Link]();
[Link](new EstadoDisponible());
}

public List<String> getCiudades() {


return ciudades;
}

Untitled 4
public List<String> getPaises() {
return paises;
}

public List<ServicioOfrecido> getServicios() {


return servicios;
}
}

3. Manejo de Estado de la Reserva:

Actualizamos la clase Reserva :

package CLASES;

import [Link];

public class Reserva {

private String estado;


private Date fechaDelInicio;
private Date fechaFin;
private int montoDeAnticipo;
private Viaje viaje;

public Reserva(String estado, Date fechaDelInicio, Date


fechaFin, int montoDeAnticipo, Viaje viaje) {
[Link] = estado;
[Link] = fechaDelInicio;
[Link] = fechaFin;
[Link] = montoDeAnticipo;
[Link] = viaje;
}

public void confirmarReserva() {


[Link] = "Confirmado";
[Link]().cambiarEstado(new Esta
doReservado());

Untitled 5
}

public void cancelarReserva() {


[Link] = "Cancelado";
[Link]().cambiarEstado(new Esta
doDisponible());
}

public void rechazarReserva() {


[Link] = "Rechazado";
}
}

4. Actualización en el Sistema :

Actualizamos el flujo principal en la clase Sistema para incluir estas


funcionalidades:

package CLASES;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class Sistema {


private static List<Usuario> usuarios;
private static UsuarioController usuarioController;

public Sistema() {
[Link] = new ArrayList<>();
[Link] = new UsuarioController();
}

public static void main(String[] args) {


Sistema sistema = new Sistema();

Untitled 6
Scanner scanner = new Scanner([Link]);

// Usuarios de ejemplo
// ...

while (true) {
[Link]("¡Bienvenido a FindYourGuid
e!");
[Link]("1- Crear nueva cuenta");
[Link]("2- Iniciar sesion");
[Link]("3- Buscar guía");
[Link]("4- Salir");

int opcionAcceso = [Link]();

switch (opcionAcceso) {
case 1:
// Registro de usuario
// ...
break;
case 2:
// Inicio de sesión
// ...
break;
case 3:
[Link]("Buscar guía por: 1-
Nombre, 2-Ciudad, 3-País");
int opcionBusqueda = [Link]();
[Link](); // Consumir el salt
o de línea

List<Guia> guiasEncontrados = new Array


List<>();
switch (opcionBusqueda) {
case 1:
[Link]("Ingrese el
nombre del guía:");
String nombre = [Link]

Untitled 7
e();
guiasEncontrados = usuarioContr
[Link](nombre);
break;
case 2:
[Link]("Ingrese la
ciudad:");
String ciudad = [Link]
e();
guiasEncontrados = usuarioContr
[Link](ciudad);
break;
case 3:
[Link]("Ingrese el
país:");
String pais = [Link]
();
guiasEncontrados = usuarioContr
[Link](pais);
break;
default:
[Link]("Opción no v
álida.");
}

if ([Link]()) {
[Link]("No se encontrar
on guías.");
} else {
for (Guia guia : guiasEncontrados)
{
[Link]("Guía encont
rado: " + [Link]() + " " + [Link]());
[Link]("Ciudad(es):
" + [Link](", ", [Link]()));
[Link]("País(es): "
+ [Link](", ", [Link]()));
[Link]("Servicios o

Untitled 8
frecidos:");
for (ServicioOfrecido servicio
: [Link]()) {
[Link]("- " + s
[Link]() + ": " + [Link]
() + " (Precio: " + [Link]() + ")");
}
}
}
break;
case 4:
[Link]("Saliendo del progra
ma.");
[Link]();
return;
}
}
}
}

Con estos cambios, el sistema ahora permite:

Buscar guías por nombre, ciudad o país.

Realizar una reserva.

Cambiar el estado del guía a Reservado .

Aceptar o cancelar una reserva, actualizando el estado del guía.

Esta implementación sigue las indicaciones del diagrama UML y utiliza el


patrón Adapter para manejar la autenticación de usuarios.

Untitled 9

También podría gustarte