Está en la página 1de 14

2016

SOFTWARE PIZZAFAST
ASSISTANT

APLICACIN ASISTENTE PARA NEGOCIOS DE PIZZA.


Autor: Edisson Fernando Sigua Loja.

UNIVERSIDAD DE CUENCA - SEP/2016 FEB/2017

Enlaces del Proyecto

Link Video en Youtube

https://youtu.be/A6ANFyhDqiY

Link Proyecto en Github

https://github.com/EdissonSigua/PizzaFast-Assistant

Link Presentacin Proyecto en Slideshare.

http://www.slideshare.net/EdissonLoja/pizza-fast-assistant-presentacin-deproyecto

Link Presentacin Video en Slideshare.

http://www.slideshare.net/EdissonLoja/pizza-fast-assistant-presentacin-video

P g i n a 1 | 13

TABLA DE CONTENIDOS
Enlaces del Proyecto ................................................................................................. 1
TABLA DE CONTENIDOS ............................................................................................ 2
Objetivos .................................................................................................................. 3
Introduccin ............................................................................................................. 3
Descripcin del Producto. ................................................................................................3
Motivacin ......................................................................................................................4
Novedad ..........................................................................................................................4

Estructuras de Datos................................................................................................. 4
Estructuras de Archivos ............................................................................................ 5
Guardar informacin en la Base de Datos .........................................................................5
Guardar Objetos en una tabla de una Bases de Datos .......................................................6

Estructuracin del Proyecto. ..................................................................................... 7


Capa Lgica de Negocios ..................................................................................................8
Capa Interfaz Grfica........................................................................................................8
Capa Base de Datos ..........................................................................................................9
Capa Recursos Externos ...................................................................................................9
Capa Visual .................................................................................................................... 10
Relaciones de Capas ....................................................................................................... 10

Visin en el Futuro .................................................................................................. 10


Proyectos Similares ........................................................................................................ 11

Datos adicionales del Proyecto ............................................................................... 11


Inconvenientes .............................................................................................................. 11
Restricciones ................................................................................................................. 11
Libreras incluidas .......................................................................................................... 12

Conclusiones .......................................................................................................... 12
Bibliografa ............................................................................................................ 13

P g i n a 2 | 13

Objetivos
Los objetivos planteados al inicio del proyecto fuero los siguientes:

Conocer el tiempo aproximado que se demora un repartidor en llegar y


volver de un barrio, ms especficamente guindonos por el nombre de
calles del centro histrico de la ciudad de Cuenca.
Conocer la cantidad de kilmetros promedio que el repartidor va a recorrer
con su motocicleta.
Poder reconocer mediante fotografas el sitio al cual el repartidor debe
llegar.

Introduccin
En la actualidad existen innumerables negocios que utilizan personal que se
debe trasladar de un lugar a otro par cumplir con una determinada actividad. A
menudo para dicha tarea, al empleado se le asigna un vehculo de transporte
que en la mayora de los casos es una moto. La empresa utiliza el vehculo para
reducir costos de operacin, por lo cual necesita que siempre sus empelados
ahorren la mayor cantidad de recursos de la empresa, como gasolina, tiempo,
etc. Por ello, el negocio se ve en la necesidad de encontrar encontrar el camino
ms corto entre dos lugares para as poder disminuir gastos de la empresa, lo
cual da una iniciativa para crear esta aplicacin.

Descripcin del Producto.


PizzaFast Assistant es una aplicacin de escritorio que sirve de asistente para
una empresa que necesita hacer entregas de sus productos, desarrollada
completamente en el lenguaje de Java utilizando la programacin por Capas en
el IDE NetBeans.
Esta aplicacin trabaja encontrando la ruta ms corta de ida y de vuelta a un
lugar determinado e imprime por pantalla las rutas, la distancia y el tiempo
aproximado basndose en la cantidad de kilmetros a recorrer y la velocidad
mxima permitida en cada tramo del recorrido. Tambin se puede visualizar
mapas con los cuales es ms fcil ubicarse, as como fotografas del lugar de
inicio y fin de la ruta.
Es necesario aclarar que la aplicacin sirve solo en el Centro histrico de la
ciudad de Cuenca Azuay Ecuador, puesto que sta fue una de las
restricciones iniciales del proyecto. Para poder encontrar un lugar se necesita
ingresar dos calles que se intersecten.

P g i n a 3 | 13

Motivacin
La motivacin principal de crear la aplicacin es la de aprender a usar estructuras
de datos dinmicas como colas, pilas y grafos, adems tambin se trabaj con
matrices, con lo cual se mejoraron los conocimientos de esta estructura de datos.
Otra motivacin personal fue es la de crear una aplicacin que no necesite de
internet para cumplir con la funcionalidad.

Novedad
En el mercado comercial relacionado con las aplicaciones y sistemas podemos
observar que existen muchas aplicaciones que pueden cumplir con los mismos
objetivos que nos habamos planteado, siendo Google Maps la mayor
competencia que tendra nuestro proyecto. Pero la novedad con la que esta
aplicacin pretende hacer competencia a estos grandes informticos es que para
su ejecucin no es necesario de una conexin a internet, sin embargo, para su
completa funcionalidad s. Esto es debido a que para poder cargar los mapas
necesarios es necesario tener una conexin a internet.
Adems, PizzaFast Assistant cuenta con una interfaz muy sencilla e intuitiva de
usar en comparacin con otras apps que cumplen con el mismo proceso.

Estructuras de Datos
Un objetivo que no fue contemplado en la definicin de los mismos al inicio del
documento fue el aprendizaje ms a fondo de nuevas estructuras de datos. Por
esto para el desarrollo de la aplicacin se trat de utilizar la mayor cantidad de
estructuras de datos que no eran conocidas para nosotros.
Debido a lo anterior, PizzaFast Assistant utiliza las siguientes estructuras de
datos:

Listas Ligadas.
Colas.
Grafos.
Matrices.

P g i n a 4 | 13

Estructuras de Archivos
Uno de los principales inconvenientes al momento del desarrollo de la aplicacin
era la cantidad de datos que se manejaba en
tiempo de ejecucin. Debido a esto, la solucin
ms ptima que se nos present fue el
almacenamiento en una Base de Datos de toda
la informacin necesaria para que el programa
pueda ejecutarse con normalidad, pero sin el
costo de crear los datos en cada ejecucin y
mantenerlos en la memoria RAM mientras el
programa se encontraba en ejecucin.
Para la administracin de la base de datos se
utiliz MySQL1 con el servidor Wamp Server.

Guardar informacin en la Base de Datos


Antes de empezar con el guardado se debe crear la Base de Datos. Para crearla
solo debes ingresar a tu base de datos desde tu navegador. Seleccionas la
pestaa Bases de Datos en la parte superior derecha, pones un nombre a la
base de datos y presionas sobre el botn crear.

Una vez creada la base de datos podemos guardar informacin en la misma. Al


momento del guardado surgi un inconveniente pues las bases de datos en
MySQL se trabajan con el modelo Entidad-Relacin, sin embargo, para guardar
la informacin del proyecto, por simplicidad solo se cre solo una tabla con dos
columnas, la primera id y la segunda una columna de tipo MEDIUM BLOB que
nos permiti guardar un objeto completo instanciado de java.
La razn principal por la que se eligi esta forma de trabajar con las bases de
datos fue que nos pareci innecesario guardar cada una de las caractersticas

MySQL es un sistema de gestin de bases de datos relacional desarrollado bajo licencia dual GPL/Licencia
comercial por Oracle Corporation y est considerada como la base datos open source ms popular del
mundo.

P g i n a 5 | 13

de los objetos en un campo cuando los podamos guardar todos directamente


almacenados en una instancia del objeto respectivo, tambin pensamos en esta
solucin porque era una manera ms simple de trabajar con las bases de datos,
pues al inicio del proyecto carecamos de algn conocimiento del tema.
Para crear a tabla en la base de datos, lo hicimos desde la terminal que dispone
SQL, con la siguiente instruccin del lenguaje SQL.
create table nombre_tabla (id int auto_increment, primary key (id), objeto
MEDIUM BLOB);

Guardar Objetos en una tabla de una Bases de Datos


Para guardar un objeto en una Base de datos se debe utilizar la Serializacin de
objetos.
Serializar un objeto es convertir el mismo a bytes para que ese objeto se
puede enviar a travs de red, guardarlo en un fichero, y despus reconstruirlo al
otro lado de la red, leerlo del fichero, etc.
Para hacer un objeto Serializable basta con implementar la Interfaz Serializable
en cada clase que deseemos, no debemos sobrescribir ningn mtodo ni nada.
Vale aclarar que, si un atributo de nuestra clase es otra clase, sta tambin debe
implementar la interfaz Serializable, de la misma forma todas las clases que sean
atributos de las clases que implementen dicha interfaz.
Aqu tenemos un ejemplo precisamente de nuestro proyecto, donde nuestra
clase inicial es Interseccion y tiene como atributo a la clase Calle. Ambas deben

implementar la interfaz Serializable.


Tambin la clase Interseccion_Adyacente.

P g i n a 6 | 13

Para guardar las instancias de los objetos utilizamos las siguientes instrucciones
del lenguaje java.

Una vez guardada la informacin en la Base de Datos, se ve de esta forma.

Estructuracin del Proyecto.


Para la realizacin de PizzaFast Assistant se realiz la programacin en Capas.
El nmero de Capas utilizadas fue 4:

Capa Lgica de Negocio.


Capa Interfaz Grfica.
Capa Bases de Datos.
Capa Recursos Externos.

Adicionalmente se utiliz un paquete para almacenar todas las imgenes que


utiliz la aplicacin.
P g i n a 7 | 13

Capa Lgica de Negocios

En este diagrama podemos observar cmo est modelada internamente la


aplicacin.

Capa Interfaz Grfica

En el diagrama se observa como interactuaran las ventanas de la interfaz grfica


de usuario.
P g i n a 8 | 13

Capa Base de Datos

En el diagrama se puede ver las clases que se utilizaron para guardar la


informacin necesaria en la base de datos.

Capa Recursos Externos

Estas son clases vacas puesto que las obtuve de la API de Google Maps y
tenan funciones especiales, yo no agregu ninguna funcin, por eso las deje en
blanco.
P g i n a 9 | 13

Capa Visual
La Capa Visual no contiene clases sino los recursos Visuales que se usaron en
el proyecto.

Relaciones de Capas

Visin en el Futuro
La primera versin de PizzaFast Assistant est creada especficamente para un
negocio de Pizza, pero se podra cambiar algunas especificaciones tcnicas para
poder fusionar con otros proyectos.

P g i n a 10 | 13

Por ejemplo, cualquier aplicacin que necesite agregar una funcionalidad de


encontrar una ruta mnima entre dos lugares.

Proyectos Similares
En este caso se podra hablar del paquete Lgica de Negocios, pues es la que
tiene la lgica de la aplicacin. De esta forma se podra utilizar la misma lgica
de PizzaFast Assistant para desarrollar una aplicacin de similar lgica interna.
Ejemplo:
Una aplicacin asistente para encontrar el camino mnimo

Para ciclistas que desean contar cuantos kilmetros recorren.


Para personas a pie que desean hallar la forma de llegar a una direccin.
Para circuitos integrados. Para hallar la forma ms ptima de conectarnos
de un circuito a otro.

Datos adicionales del Proyecto


Inconvenientes
Algunos de los inconvenientes que se presentaron fueron:

Problemas al conectar a las Base de Datos, puesto que era un tema


desconocido, fue un poco difcil aprender las Base de Datos desde cero.
Problemas al usar la matriz de adyacencia y el Algoritmo de Dijsktra. El
problema era el ajuste de dichos algoritmos y estructuras a problemas
especficos en la aplicacin.
El uso de la Api de Java para capturar imgenes de los mapas necesita
de una buena conexin a internet para que la aplicacin no se vuelva
lenta.

Restricciones
La principal restriccin que se presentan en el proyecto son:

Nmero limitado de intersecciones. Como habamos dicho al inicio del


documento, PizzaFast Assistant funciona solo en el centro Histrico de la
ciudad de Cuenca, ms especficamente en un cuadrante de calles
limitadas por las siguientes:
o Presidente Crdova.
o Coronel Guillermo Talbot.
o Rafael Mara Arizaga.
o Mariano Cueva.
P g i n a 11 | 13

Solo las intersecciones dentro de estas calles funcionan en PizzaFast


Assistant.
El camino mnimo se encuentra siempre y cuando se tenga acceso a una
interseccin por cualquiera de sus calles, es decir que al menos desde
una calle se pueda acceder a ella siguiendo el sentido de la calle.
Los lugares solo se pueden acceder mediante intersecciones, esto
significa que obligatoriamente se deben ingresar dos calles que se corten
en un punto.

Libreras incluidas
Las libreras incluidas son:

MySQL Connector/J 5.1.13


Una librera que nos permite conectarnos a la base de datos desde
nuestra aplicacin.

Autocompletar Java Swing (Autocompleter)


Una librera para hacer los campos donde debe escribir el usuario
autocompletables.

Conclusiones
Podemos concluir que:

Java es un lenguaje de programacin muy til en la creacin de


aplicaciones, puesto que posee estructuras de datos que nos permiten
modelar problemas de la vida real con facilidad.
El uso de Base de Datos en un proyecto nos es de mucha ayuda para
evitar hacer muy pesada la aplicacin ya que, con la informacin
guardada, el programa solo se restringe a buscar informacin y no a
crearla.
El uso de la Programacin Orientada a Objetos es bastante til al
momento de desarrollar una aplicacin grande.

P g i n a 12 | 13

Bibliografa

Yojanes, A. L., & Zohonero, M. I. (2008). Estructuras de datos en Java.


Madrid, ES: McGraw-Hill Espaa. Retrieved from http://www.ebrary.com

Ingeniera en Sistemas. (2016, Octubre 20). Como Conectar Java con


Mysql - Correctamente (Paso a Paso) - POO [Archivo de video].
Recuperado de https://www.youtube.com/watch?v=nbAYB6HyTQI

Chuwiki.chuidiang.org. (2016). Insertar y leer clases java en una Base de


Datos
MySQL
ChuWiki.
[online]
Disponible
en:
http://chuwiki.chuidiang.org/index.php?title=Insertar_y_leer_clases_java_
en_una_Base_de_Datos_MySQL [Accedido 20 Oct. 2016].

Chuwiki.chuidiang.org. (2016). Serializacin de objetos en java - ChuWiki.


[online]
Disponible
en:
http://chuwiki.chuidiang.org/index.php?title=Serializaci%C3%B3n_de_obj
etos_en_java [Accedido 22 Oct. 2016].

P g i n a 13 | 13