0% encontró este documento útil (0 votos)
7 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)
7 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
Está en la página 1/ 9

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 java.util.List;
import java.util.stream.Collectors;

public class UsuarioController {

private List<Usuario> usuarios;

public UsuarioController() {
this.usuarios = 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 usuarios.stream()
.filter(u -> u instanceof Guia)
.map(u -> (Guia) u)
.filter(g -> g.getNombre().equalsIgnoreCase
(nombre))
.collect(Collectors.toList());
}

public List<Guia> buscarGuiasPorCiudad(String ciudad) {


return usuarios.stream()
.filter(u -> u instanceof Guia)
.map(u -> (Guia) u)
.filter(g -> g.getCiudades().contains(ciuda
d))
.collect(Collectors.toList());
}

public List<Guia> buscarGuiasPorPais(String pais) {


return usuarios.stream()
.filter(u -> u instanceof Guia)
.map(u -> (Guia) u)
.filter(g -> g.getPaises().contains(pais))
.collect(Collectors.toList());

Untitled 2
}
}

2. Hacer una Reserva:


Actualizamos la clase Turista y Guia para manejar las reservas:

package CLASES;

import java.util.Date;

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,
TipoUsuario.TURISTA);
}

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));
guia.cambiarEstado(new EstadoReservado());
return reserva;
}

public void cancelarReserva(Reserva reserva) {


reserva.cancelarReserva();
}
}

package CLASES;

import java.util.List;

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,
TipoUsuario.GUIA);
this.ciudades = ciudades;
this.paises = paises;
this.servicios = servicios;
this.credencial = credencial;
this.estado = new EstadoDisponible();
}

public void cambiarEstado(Estado nuevoEstado) {


this.estado = nuevoEstado;
}

public void aceptarReserva(Reserva reserva) {


reserva.confirmarReserva();
this.cambiarEstado(new EstadoReservado());
}

public void cancelarReserva(Reserva reserva) {


reserva.cancelarReserva();
this.cambiarEstado(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 java.util.Date;

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) {
this.estado = estado;
this.fechaDelInicio = fechaDelInicio;
this.fechaFin = fechaFin;
this.montoDeAnticipo = montoDeAnticipo;
this.viaje = viaje;
}

public void confirmarReserva() {


this.estado = "Confirmado";
this.viaje.getGuiaAsociado().cambiarEstado(new Esta
doReservado());

Untitled 5
}

public void cancelarReserva() {


this.estado = "Cancelado";
this.viaje.getGuiaAsociado().cambiarEstado(new Esta
doDisponible());
}

public void rechazarReserva() {


this.estado = "Rechazado";
}
}

4. Actualización en el Sistema :

Actualizamos el flujo principal en la clase Sistema para incluir estas


funcionalidades:

package CLASES;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import CONTROLLERS.UsuarioController;
import CONTROLLERS.usuarioDTO;
import CONTROLLERS.TipoAutenticacion;
import CONTROLLERS.TipoUsuario;

public class Sistema {


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

public Sistema() {
this.usuarios = new ArrayList<>();
this.usuarioController = new UsuarioController();
}

public static void main(String[] args) {


Sistema sistema = new Sistema();

Untitled 6
Scanner scanner = new Scanner(System.in);

// Usuarios de ejemplo
// ...

while (true) {
System.out.println("¡Bienvenido a FindYourGuid
e!");
System.out.println("1- Crear nueva cuenta");
System.out.println("2- Iniciar sesion");
System.out.println("3- Buscar guía");
System.out.println("4- Salir");

int opcionAcceso = scanner.nextInt();

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

List<Guia> guiasEncontrados = new Array


List<>();
switch (opcionBusqueda) {
case 1:
System.out.println("Ingrese el
nombre del guía:");
String nombre = scanner.nextLin

Untitled 7
e();
guiasEncontrados = usuarioContr
oller.buscarGuiasPorNombre(nombre);
break;
case 2:
System.out.println("Ingrese la
ciudad:");
String ciudad = scanner.nextLin
e();
guiasEncontrados = usuarioContr
oller.buscarGuiasPorCiudad(ciudad);
break;
case 3:
System.out.println("Ingrese el
país:");
String pais = scanner.nextLine
();
guiasEncontrados = usuarioContr
oller.buscarGuiasPorPais(pais);
break;
default:
System.out.println("Opción no v
álida.");
}

if (guiasEncontrados.isEmpty()) {
System.out.println("No se encontrar
on guías.");
} else {
for (Guia guia : guiasEncontrados)
{
System.out.println("Guía encont
rado: " + guia.getNombre() + " " + guia.getApellido());
System.out.println("Ciudad(es):
" + String.join(", ", guia.getCiudades()));
System.out.println("País(es): "
+ String.join(", ", guia.getPaises()));
System.out.println("Servicios o

Untitled 8
frecidos:");
for (ServicioOfrecido servicio
: guia.getServicios()) {
System.out.println("- " + s
ervicio.getTipoServicio() + ": " + servicio.getDescripcion
() + " (Precio: " + servicio.getPrecio() + ")");
}
}
}
break;
case 4:
System.out.println("Saliendo del progra
ma.");
scanner.close();
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