jueves 7 de enero de 2010

Uso de Gráficos (Swing), Archivos y TAD's en Java - SIDEVU



Con el ánimo de compartir mi código y evitar su desperdicio en mi portátil, libero públicamente (con la aceptación de mi compañero), el trabajo final que hicimos para la materia de Estructura de Datos en la Universidad.

En resumen se trata de un Sistema Integrado de Despacho de Vuelos, de alli su nombre SIDEVU, la idea fundamental era implementar Tipos Abstractos de Datos (TADs) y aprender por nuestra cuenta el uso de archivos en java. El uso de Swing fue extra de nuestra parte.

Y ahora todo todito nuestro trabajo de 3 semanas (debimos investigar muchas cosas) desglozado para ustedes, difrutenlo!
Las opciones de descarga estan al final del post.

La justificación del programa, carácterísticas y demás las encontrarán en un archivo adjunto about.html dentro de los paquetes para descargar.

El proyecto completo fue desarrollado en Netbeans.

Específicamente, el programa se fundamenta en una Cola de prioridad  en función del vuelo más próximo a salir (si es que existe), además de las funciones extras de añadir, editar, eliminar vuelos/ pasajeros y demás. Por motivos de tiempo el reloj interno no pudo ser implementado, era necesario (supongo) hacer uso de concurrencía para adaptarlo, haría falta solo leer un poco, probar e implementar, seguro era sencillo, como todo lo demás.

En fin. revisando el código y poniendole ánimo seguro que podrás aprender sobre:

Swing - AWT.
En especial todo lo hicimos con Swing aunque fueron necesarias unas clases abstractas de AWT, los componentes principales que encontrarás y su uso serán:

  • Frames. (JFrame)
  • Paneles. (JPanels)
  • Paneles de Edición. (JEditePane)
  • Tablas. (JTables)
  • Botones, Menús desplegables. (JButton, JComboBox)
  • Etiquetas. (JLabel)
  • Áreas de Texto. (JTextArea)
  • Uso de Imágenes como iconos. (png, jpg, gif)
  • Manejadores de espacio ( Layouts, Boxes, Glues ).
Y Obviamente la mayoría de componentes como botones, tablas, menus con sus respectivos escuchadores (Listeners). Además se muestra el uso de un Modelo de tabla (JTable Model) para construir tu propia tabla personalizada y administrar los cambios directamente sobre el array bidimensional que la construye.

Me gusta bastante que todo se vea bien, así que me pulí bastante en esta parte de la cual me habia encargado especialmente y el resultado final me dejó satisfecho, además de ser la primer vez que implementaba Swing. Les dejo una toma:



Por cierto, Netbeans tiene un editor WYSIWYG ( lo qué ves es lo que consigues ) para hacer todo lo gráfico... bueno bueno, bastante fácil, luce todo genial, pero... personalmente no lo recomiendo, si por algo tienen fama este tipo de editores WYSIWYG es la introducción de mucho mucho código basura, ya he revisado códigos así y creeme que nadie quiesiera leer eso. Nada mejor que llevar tu mismo el control de todos y cada uno de tus objetos.


Tipos Abstractos de Datos.
Aunque en el curso pudimos ver hasta Grafos (lo último que implementamos fueron árboles AVL... vaya si me dió trabajo) en el proyecto final solo hicimos uso de:

  • Listas doblemente enlazadas para la lista de pasajeros y una 
  • Cola de prioridad por medio de listas doblemente enlazadas también para los vuelos.
Estas implementaciones estan dentro de la carpeta tad.


Manejo de Archivos (I/O)
La necesidad era que luego de cerrado el programa los datos quedaron almacenados localmente, de este modo, al ejecutar de nuevo el programa en caso de haber datos presentes serán cargados, es como una especie de manejo de sesiones. Por conveniencia hicimos uso de:
  • Buffered Streams y 
  • Object Streams
Aunque si necesitas una visión completa sobre el manejo de estos archivos, entra aqui.

En gran parte supongo que eso es lo principal, notarán además que el código aunque no esta limpio del todo por el poco tiempo, si esta bastante organizado y modularizado, dos buenos pilares para un buen desarrollo.

Por último, encontrarán la licencia del programa dentro de cada archivo .java, es bastante clara, solo se trata de guardar respeto por los autores originales, aunque eso va en la profesionalidad de cada quién. Espero que más que para sacarlos de apuros, realmente aprendan del código.

Opciones de Descarga

Si eres muy n00b aún y te cuesta trabajo captar todo esto de golpe (que realmente es mucho), estate pendiente que desglozaré este y otros códigos con implementaciones específicas y tips para lograr algo en especial.

Siéntasen libres de criticar, opinar, aconsejar y spamear en los comentarios.

Los códigos fuentes aquí expuestos corresponden a propiedad intelectual del participe nombrado en cada licencia de ellos. Todo es publicado solo con fines de aprendizaje.

2 notas:

  1. Se agradece el aporte.

    Saludos

    ResponderSuprimir
  2. muy bueno, te felicito. se nota k eres muy bueno en programacion.

    pero buscaba algo sencillo, para entender ;)

    ResponderSuprimir