Diseño y Programación Orientados a Objetos
1er. Sem 2008
Tarea 2: Tómbola en Java


Recomendación: Lea detenidamente la tarea, si algo no lo entiende consulte en clases, si es preciso se incorporarán aclaraciones al final.

Esta tarea tiene por objetivo que continúe ejercitando las destrezas de la tarea 1 y cubra los siguientes nuevos objetivos:
  1. A través de la ejercitación comprenda la programación conducida por eventos.
  2. Desarrollo de interfaces gráficas en Java
  3. Ejercite el manejo de excepciones
Contexto de la tarea
   A través de esta tarea se desea desarrollar en Java una herramienta para definir un orden aleatorio para una lista de nombres. Ésta puede ser usada cuando se desea definir por ejemplo el orden de las presentaciones de proyectos. Esta tarea le pide hacer una versión tipo aplicación para este problema.

Descripción General

   Esta tarea busca que usted mejore los aspectos conceptuales de la primera tarea y luego reutilice parte de ella para desarrollar el programa tómbola. Al ejecutar su programa la interfaz debe presentar un menú con opciones Archivo, Acción y  About.
  Bajo Archivo se presentas los items "abrir" archivo y "terminar". Bajo Acción los items son "rodar" y "buscar".
  La opción abrir permite seleccionar el archivo de nombres a procesar. Se espera que usted haga uso de JFileChooser para navegar por los directorios hasta seleccionar el archivo con la lista de nombres a considerar en al tómbola. Una vez abierto el archivo los nombres de la lista son mostrados el sector izquierdo de la ventana y bajo la barra de menú. Considere una barra de scroll en caso que la lista sea muy larga.
  La opción terminar da término a la aplicación.
  La opción rodar bajo Acción muestra, en el sector derecho de la ventana y bajo la barra de menú, una permutación de los nombres de la lista del sector izquierdo. Esta lista incluye un número correlativo y un nombre por línea. Como en este caso considere barra de scroll si es necesario.
  La opción buscar bajo Acción, presenta una ventana de diálogo. Donde usted entregará el nombre o apellido de un alumno, como respuesta el programa destacará en color azul todas las líneas que contengan ese nombre o apellido. Si no está, no hay acción visible.
   La opción About, mostrará una ventana de diálogo con el nombre del curso, los nombres de los integrantes de su grupo, del profesor y la fecha.



Requerimiento para encontrar la permutación y búsqueda. Una forma de conseguir una permutación aleatoria es asociar a cada nombre un número aleatorio y luego ordenar la lista según ese nombre. Ésta no es la forma más eficiente en tiempo, pero es la pedida para que usted reuse el código de su primera tarea. Puede usar cualquiera de las clases para ordenamiento de la tarea previa. Igualmente para la búsqueda de un nombre. Usted deberá cambiar el método de búsqueda para retornar más de un índice en caso de múltiples coincidencias del nombre o apellido.

Notas:
En la documentación de esta tarea, no es necesario que usted haga una descripción en alto nivel de los algoritmos usados. Usted debe entregar su código documentado siguiendo el estándar del utilitario javadoc. Dé una mira al Generador de Documentación y en particular los rótulos.
El archivo de nombres proporcionado fue obtenido a partir de la lista del curso, la cual fue procesada para generar los nombres naturales.
Considere que el ayudante podría desarrollar otro main para probar sus clases. Por ejemplo al buscar podría hacerlo con una objeto copia (clone) de alguno del arreglo.

Petición Final: Su aprendizaje será mucho más grato para todos si usted trabaja en la tarea desde que ésta es publicada. Con gusto atenderé sus consultas en clases o en la oficina (preferiblemente en mi horario de atención de alumnos), gracias.

Vea el ejemplo de Makefile. Más información sobre Makefiles.