Proyecto de
Programación Orientada a Objetos
“Aplicación
restaurant”
Integrantes: Emilio
Cornejo – Marcelo Diaz
Descripción del
problema:
Dada la situación actual de pandemia,
uno de los rubros mas afectados es el de restaurants, los cuales se han visto
impedidos de atender a público en sus locales, para así prevenir nuevos
contagios y proteger tanto a sus trabajadores como a sus clientes. Por otro
lado, para volver a atender público, los restaurants deben cumplir ciertas
especificaciones determinadas por la autoridad sanitaria.
Análisis del
problema:
Muchos restaurants funcionan con un contacto
estrecho entre garzón y cliente para recibir el pedido del cliente y también garzón
y cocinero para dar a conocer al cocinero los pedidos que debe realizar. Este
contacto estrecho impide, por las condiciones sanitarias, que se permita
atender clientes presencialmente dentro de los locales.
Para resolver este problema, se genera
esta aplicación restaurant, la cual le permite a los clientes que atienden al
restaurant, poder hacer su pedido sin necesidad de tener un contacto estrecho
con cualquier otro trabajador del restaurant, aparte, el cocinero tiene acceso
a cuáles son los pedidos de cada cliente para así saber que es lo que necesite
cocinar. Con ello se logra generar un distanciamiento social en el rubro, el
cual podría funcionar con una nueva normalidad, evitando en cierta medida,
nuevos contagios de Covid-19.
Casos de uso:
Caso de uso 1: añadir
comida
Propósito:
El cliente quiere añadir una comida a su pedido
Actor:
Cliente
Tipo:
Manual
1)
El cliente selecciona la opción “añadir” para añadir
comida |
2)
El sistema guarda la opción elegida y actualiza el
total del pedido |
3)
El cliente solicita ver el pedido |
4)
El sistema muestra la vista con la totalidad del pedido
del cliente |
Curso Alternativo
de eventos:
Variante 1:
3A1 el usuario vuelve a realizar 1)
4A1 el sistema vuelve a
realizar 2). Puede volver a ocurrir nuevamente
Caso de Uso 2: Quitar
comida
Propósito:
El cliente quiere quitar de su pedido una comida
Actor:
Cliente
Tipo:
Manual
1)
El cliente selecciona una comida en la lista de su
pedido |
2)
El sistema marca la comida seleccionada |
3)
El cliente selecciona el botón “quitar” |
4)
La comida seleccionada baja en una unidad |
Curso
Alternativo de eventos:
Variante 1:
3A1 el usuario
selecciona otra comida que desea quitar
4A1 el sistema
vuelve a realizar 2). Puede volver a ocurrir nuevamente
Caso de Uso 3: Ver
Pedidos
Propósito:
El cocinero quiere entregar un pedido de un cliente
Actor:
Cocinero
Tipo:
Manual
1)
El cocinero, en su vista correspondiente, selecciona el
botón “entregar pedido” |
2)
El sistema limpia la lista con el pedido del cliente,
quedando libre para que otro cliente que se ubique en la misma mesa pueda
realizar su pedido |
Diagrama de Clases:
Diagrama de
Secuencia: Añadir comida
Pruebas:
Vista Principal, donde el cliente
puede ir añadiendo Comidas, bebidas y/o postres a su pedido
Vista del pedido del cliente, donde el
puede quitar, si lo desea, alguna comida que haya seleccionado por error en la
vista anterior
Vista del cocinero, donde el revisa
los pedidos de todas las mesas, además de confirmar cuando el pedido este listo
para ser entregado
Dificultades
encontradas:
-
Para poder controlar al mismo objeto cliente en los tres
“controller” del proyecto, se utiliza el patrón de diseño singleton (https://es.wikipedia.org/wiki/Singleton) , el cual
nos asegura que se crea una sola instancia para cada cliente y esa instancia es
llamada en los tres “controller” para obtener su pedido.
-
No logramos implementar un método para cobrarle al
cliente una vez el pedido haya sido entregado.
Bugs Encontrados:
-
Cuando se quitan alimentos del pedido, llegando a una
cantidad 0, en la vista cocinero sigue apareciendo dicho alimento, pero con un
x0 indicando su cantidad
Link al Proyecto: Proyecto