Diseño y Programación Orientados a Objetos
1er. Sem 2009
Tarea 2: Interfaz Gráfica para Clasificador de Frutas

Recomendación: Lea detenidamente la tarea, si algo no lo entiende consulte en clases, si es preciso se incorporarán aclaraciones al final.
Revisar las ayudas preparadas por el Ayudante

Esta tarea tiene por objetivo reforzar las competencias de la tarea previa e incluir:
  1. Aplicar la programación conducida por eventos
  2. Aprender a desarrollar aplicaciones con interfaz gráfica en Java.
  3. Ejercitar el manejo de excepciones.
Antecedentes
Para paltas la literatura y nuestra experiencia señalan que la firmeza de las paltas está bien correlacionada con la madurez de las mismas. Otro dato, no obvio, es que la madurez de las paltas también está bien correlacionada con el porcentaje de aceite de las mismas. En la medida que las paltas maduran, su contenido de agua es gradualmente reemplazado por aceite.

El proceso de clasificación propuesto consta de dos etapas de medición no invasivas. En el caso de las paltas, un instrumento obtiene su nivel de aceite y otro su firmeza. Si ambos instrumentos arrojan mediciones próximas, la palta es clasificada en un canasto según el valor promedio de las mediciones. Si ambas mediciones son muy diferentes (mayor % de error admisible), se procede a repetir las mediciones hasta conseguir la clasificación. 



Modelo para clasificador de paltas

Descripción General

En la Tarea 1 su programa simulaba la clasificación de frutos, paltas y tomates, con resultados enviados a consola. El argumento de la ejecución del programa era el único dato ingresado al clasificador. La salida era por consola.
En esta tarea usted proveerá de una interfaz gráfica al clasificador. Ésta le permitirá definir los parámetros que caracterizan la cosecha sólo de paltas (para tomates sería muy similar y no hay gran aporte). Diseñe su interfaz para que la apariencia sea similar a la figura adjunta.



El menú Acción posee dos ítems: Guardar, Exit y About. Con Guardar usted permite guardar en archivo lo mostrado en el JTextArea. Con Exit el programa termina, con About su programa muestra una ventana con los nombres de los integrantes de su grupo y el nombre del ramo.
Para definir los parámetros de la variedad de paltas que clasificará hágalo a través de JSpinners o similares. Lo mismo puede usar para los medidores y otros parámetros. Finalmente se presenta un botón para iniciar la clasificación del total de paltas en el número de canastos señalados.
Una vez terminada la clasificación los resultados son mostrados en el área de texto, en formato similar a la tarea 1.


Implementación
Considere su implementación de la tarea 1 como base. Si usted ya hizo la tarea 1, puede pedirme mi solución vía correo. Sería una falta grave si usted comparte esta solución con otros alumnos.
 
Nota:
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. Revise el procedimiento para entregar su tareas, pauta de corrección general, y sugerencias para trabajar en aragorn desde Windows.
Ayudas para desarrollo de tareas preparada por Tomás Girardi.

Sobre Entrada y Salida de Archivos: Para el manejo de archivos de texto, la entrada de datos (no requerida en esta tarea) se puede hacer a través de la clase Scanner. Ésta posee un constructor que permite hacer lecturas desde archivo.
Para la salida de datos mi recomendación es mirar el tutorial de SUN. En particuar en la sección Character Streams contrarán un ejemplo con los elementos básicos para lo requerido en la tarea. 
Las clases recomendadas se concatenan según: PrintWriter --> FileWriter  --> "archivo.txt"
Si requieren más apoyo, consulten en clases, en mi oficina, o me escriben.
Para el manejo de entrada y salida de archivos binarios, hay otras clases específicas (no es le caso de esta tarea).

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