GithubHelp home page GithubHelp logo

unit-converter's Introduction

Conversor de unidades - Challenge Oracle Next Education (ONE)

Índice:

Descripción del proyecto

Este proyecto es mi solución al reto de Java de la formación Oracle Next Education(ONE) de Alura Latam y Oracle, en la especialidad de desarrollo backend.

El reto consistía en usar Java para crear un conversor de dívisas con una interfaz gráfica.

Demos:

Reto:

Conversor de unidades

Resultado:

Conversor de unidades

Funcionalidades (Reto)

Requerimientos de Base:

La aplicación debe cumplir con los siguientes requerimientos:

  • Convertir de Dólar a la moneda de tu país:

  • Convertir de la moneda de tu país a Dólar.

  • Convertir de la moneda de tu país a Euros.

  • Convertir de la moneda de tu país a Libras Esterlinas.

  • Convertir de la moneda de tu país a Yen Japonés.

  • Convertir de la moneda de tu país a Won sul-coreano.

  • Convertir de Dólar a la moneda de tu país

  • Convertir de Euros a la moneda de tu país

  • Convertir de Libras Esterlinas a la moneda de tu país

  • Convertir de Yen Japonés a la moneda de tu país

  • Convertir de Won sul-coreano a la moneda de tu país

Requerimientos Extras:

  • Después de que el usuario haga clic en continuar en el programa, presente el cuadro de opciones de conversión para que pueda verificar otro valor en una moneda diferente.
  • Realiza más de un programa de conversión, además de moneda, puede hacer de temperatura, kilometraje, años luz, entre otros, deja volar tu imaginación.

Funcionalidades (Resultado)

En adición a los requerimientos propuestos, diseñé una interfaz gráfica completamente diferente y expandí las funcionalidades del convertidor. Mi solución:

  • Reacciona de forma automática a las interacciones del usuario y actualiza las conversiones cada que se cambia el valor o el tipo de conversión.
  • Convierte de ida y vuelta entre unidades, sin tener que cambiar la "dirección" de la conversión.
  • No solo convierte entre monedas, sino también entre unidades de:
    • Longitud,
    • Masa,
    • Tiempo
    • Velocidad
    • Temperatura
    • Volumen
  • Utiliza las tasas de cambio más recientes que tenga disponibles:
    • Verifica la fecha de la copia local que tiene. Si es del mismo día de la ejecución, utiliza esos valores para las conversiones, y así optimiza el tiempo de espera y los recursos necesarios para empezar a usar la aplicación.
    • Si la copia local está desactualizada o no se puede verificar su fecha, intenta recuperar las tasas de cambio más recientes, por medio de la API Exchange Rate en línea.
    • Si obtiene los datos, utiliza esos en las conversiones y actualiza la copia local.
    • Si no hay conexión o, por algún otro motivo, no consigue los datos de la API, utiliza los de la copia local, que son los siguientes más recientes.
    • En caso de que eso también falle, utiliza los valores que vienen por defecto en el código, que datan de la fecha Marzo 20 de 2023.
    • Cuando el usuario quiera realizar conversiones de moneda, la aplicación le muestra la fecha de última actualización de las tasas de cambio en la interfaz.
  • Verifica que los datos que ingresa el usuario sean válidos en formato o que tengan sentido para el tipo de conversión y muestra una notificación del error que se oculta tan pronto como se corrige el error.

Herramientas utilizadas

Para el desarrollo, utilicé:

Para el diseño, utilicé:

  • [Figma], como herramienta de prototipado.
  • SVG Repo y el plugin Iconify como fuentes de íconos para las imágenes de los menús desplegables.
  • La página de Alura como inspiración y base para la tipografía, el ícono de la ventana y la paleta de colores.

Para exportar el proyecto como un .jar ejecutable utilicé:

¿Cómo ejecutar el proyecto?

NOTA: como mínimo, necesitas tener instalado Java 11 para ejecutar el proyecto correctamente.

Solución óptima:

1 - Descarga el archivo unit-converter.jar del repositorio. 2 - Ejecútalo.

Solución provisional:

1 - Descarga el archivo unit-converter.zip del repositorio. 2 - Haz click derecho sobre el archivo y escoge la opción "Extraer aquí" Extraer en una carpeta 3 - Abre la carpeta unit-converter que se generó tras la extracción. Contenido de la carpeta 4 - Haz clic en la barra de direcciones del explorador de archivos y presiona [ Ctrl ] + [ C ] o haz click derecho y selecciona la opción de Copiar, para copiar el path a esa carpeta. Copiar el path a la carpeta 5 - Abre el archivo comando.txt que está en la carpeta unit-converter. 6 - Reemplaza PATH con la dirección que copiaste, seleccionándolo y presionando [ Ctrl ] + [ V ] o haciendo click derecho y escogiendo la opción Pegar. Contenido del archivo comando.txt Reemplazar el PATH en comando.txt 7 - Copia todo el texto en comando.txt, presionando [ Ctrl ] + [ A ] y luego [ Ctrl ] + [ C ] o seleccionándolo y haciendo clic derecho y escogiendo la opción Copiar. Copiar el contenido de comando.txt 8 - Haz click en la barra de estado y reemplaza el path por cmd y luego presiona [ Enter ] o la tecla [ Intro ] para abrir la terminal desde la carpeta unit-converter. Copiar el contenido de comando.txt 9 - Presiona [ Ctrl ] + [ Insert ] para pegar el comando en la terminal. Pegar el comando en la terminal 10 - Presiona la tecla [ Enter ] o [ Intro ] para ejecutar el comando, y listo, la aplicación debería ejecutarse en breve. Ejecutar el comando

Diseño

Puedes revisar los wireframes y prototipos que diseñé para mi aplicación en este enlace.

  • Antes de hacer el proceso de diseño: Conversor de unidades antes del diseño

  • Después el proceso de diseño: Conversor de unidades después del diseño

Agradecimientos

Le agradezco de corazón a:

  • Alejandro Vásquez Cordero por ayudarme a estructurar la forma de actualizar las tasas de cambio que se usarían en la aplicación, una vez que se han recuperado de la API.
  • Carlos Andrés Díaz por escuchar mis frustraciones, celebrar conmigo mis pequeños avances con este proyecto, darme ánimo para continuar en todo este proceso, y por ayudarme a escoger el diseño final de la interfaz.

Contacto

Si quieres compartir alguna observación, comentario, consulta o sugerencia sobre el proyecto o sobre programación, no dudes en escribirme via LinkedIn.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.