ELO 329 Programación Orientada a Objetos

logo
"SmartCity Stations"

Nicolás Aguayo
José Bórquez




Presentación del problema

Un problema que afrontamos a diario por distintas razones es el uso del sistema de transporte público, incluso este año con los sucesos mundiales y la cuarentena, aún así no deja de ser un tema importante en nuestra sociedad, especialmente mirando hacia el futuro.

El proyecto busca:

- Establecer un sistema capaz de reconocer y entregar información oportuna sobre el sistema de transporte,

- Mostrar un mapa interactivo de lo que propone el uso de paradas de transporte inteligentes,

- Construir un modelo del software que se podría entregar junto con el sistema de paradas.

Este trabajo busca entregar una aplicación que tenga como meta ser útil para la vida cotidiana, mejore la calidad del transporte público y permita a los individuos (tanto foráneos como no) ubicarse y movilizarse por Viña del Mar y Valparaíso.




Metodología y modelo de trabajo

Una parte importante de este proyecto es la utilización del modelo iterativo e incremental, por lo que se opta por dividir el proyecto en etapas de desarrollo acumulativo que irán cumpliendo pequeños objetivos específicos.

La planificación de este proyecto considera dividirlo en etapas de desarrollo que de a poco le vayan dando funcionalidades y complejidad.

Etapas:

- Etapa1: Creación de objetos básicos.

- Etapa2: Ampliación en la cantidad y complejidad de los objetos, objetos gráficos y métodos más complejos. Se muestra el mapa en la aplicación y las estaciones.

- Etapa3: Además del mapa de la etapa anterior se incorpora la barra de menu lateral para obtener estados de las estaciones, los vehículos y las linea de transporte. Se agrega la dinámica de los sitemas de transporte y animación del mapa.

- Etapa4: Se agrega la herramienta de Buscador de ruta óptima, se crea un algoritmo basado en Dijkstra.




Análisis del problema

Para abordar el problema se reconoce que se tiene como ente importante el mapa de la ciudad en la cual se busca lograr la movilización. Además de esto se tienen diversos objetos (tanto gráficos como los que realizan los procesamientos) que conforman el entorno de la aplicación.

Se tiene la implementación como:

Resultados por consola: Esta etapa se crean algunos archivos csv que servirán como base de datos para los distintos mapas y aplicaciones. Se tiene además la salida de información por consola que después se podrá obtener en la interfaz gráfica.

Interfaz gráfica del mapa: Aquí se diseña el mapa como objeto gráfico junto con las estaciones y algunas animaciones y opciones de comportamiento que puede tener dicho mapa. jgkjg

Barra de herramientas: En esta etapa se tienen en la interfaz gráfica las opciones con las cuales puede interactuar el usuario. Además, se tienen los diseños gráficos de cada uno de los objetos. Se agrega dinámica al mapa y se mejoran las animaciones.

Ruta óptima: Se tiene la herramienta del buscador de ruta óptima, y se plantea desarrollar esta optimización basada en la teoría de grafos de Dijkstra. (No se pudo llevar a cabo su implementación completa, sin embargo en el buscador se puede obtener los resultados de las estaciones y la interfaz gráfica).

diseño de producto
Posible diseño del producto




Casos de uso

SmartCity Stations es un recurso que de aprovecharse cabalmente, puede ser utilizado en bastantes escenarios y casos de uso que puede colaborar con la ciudadanía y mejorar la calidad del transporte público. Algunos de estos son:

1)Obtener información de arribo del vehículo solicitado.

2)Permitir la visualización de distintas rutas.

3)Pedir la información de paradas y líneas de transporte.

4)Obtener la información de la zona con mapas interactivos y la información correspondiente.

5)Obtener información y ubicación sobre el transporte a usar como disponibilidad, tiempo de arribo y tiempo estimado de llegado al destino.

En la siguiente sección se adjunta un diagrama con casos de uso. A continuación se muestra una imagen de un caso de uso ya implementado en otra ciudad de Latinoamérica.

imagen de caso
Un caso de uso en Medellín, Colombia




Diagramas

Se obtuvo un diagrama de clases UML para la última etapa desarrollada:

diagrama de clases
Diagrama de Clases

A continuación se presenta el diagrama de casos de uso para la aplicación:

diagrama de casos
Diagrama de casos de uso




Pruebas

A continuacion se muestra un caso de uso, donde el usuario busca informacion respecto a una linea en especifico. El usuario ingresa la linea a buscar, y el programa presenta en pantalla todas las estaciones de la linea, asi como informacion de posibles combinaciones.

Prueba de ejecución 1

En la siguiente imagen se muestra la funcionalidad "Estacion", la cual, luego de un click del usuario en alguna estacion en el mapa, presenta la informacion de esta estacion. Especificamente, imprime en pantalla las lineas que se detienen en esa estacion. Ademas, para cada linea, indica el tiempo restante para que pase el siguiente tren o bus, o un mensaje si es que no hay mas. Se observa tambien, que para cada linea, esta funcion muestra los distintos destinos que se pueden tomar por linea.

Prueba de ejecución 3

Tambien se muestra la funcionalidad de la pestaña "Tren", la cual, luego de un click del usuario en algun tren especifico en el mapa, muestra la informacion de este tren en especifico, esto es, a que linea pertenece, cual es su estacion final, su estacion siguiente, el numero actual de pasajeros a bordo, y el tiempo restante para llegar a la siguiente estacion.

Prueba de ejecución 4

En la ultima etapa se incorpora un buscador de rutas, el cual, mediante un algoritmo de optimizacion, entrega al usuario la ruta de menor tiempo desde un origen a un destino entregados en una lista desplegable.

Prueba de ejecución 2




Compatibilidad

Para la creación de este proyecto se hizo uso del entorno IDE de Visual Studio Code versión 1.37.1 que resulta muy funcional para programar en JAVA, gracias a la gran cantidad de plugins que posee y que tiene compatibilidad con distintos sistemas operativos.

Se hizo uso de las funcionalidades de GitLab que hacen eficiente el desarrollo de código para trabajo en equipo. Tambien, el IDE utilizado posee herramientas muy útiles y versatiles para el desarrollo con repositorios GIT.

El proyecto puede ser descargado desde aquí