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:

Captura de pantalla de un celular

Descripción generada automáticamente

 

Diagrama de Secuencia: Añadir comida

Captura de pantalla de un celular

Descripción generada automáticamente

 

 

Pruebas:

Vista Principal, donde el cliente puede ir añadiendo Comidas, bebidas y/o postres a su pedido

Captura de pantalla de un celular

Descripción generada automáticamente

Vista del pedido del cliente, donde el puede quitar, si lo desea, alguna comida que haya seleccionado por error en la vista anterior

Imagen que contiene texto

Descripción generada automáticamente

Vista del cocinero, donde el revisa los pedidos de todas las mesas, además de confirmar cuando el pedido este listo para ser entregado

Una captura de pantalla de una red social

Descripción generada automáticamente

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

Captura de pantalla de un celular

Descripción generada automáticamente

 

Link al Proyecto: Proyecto