Documentación
Organizer v1.0
PROYECTO: |
Organizer
v1.0 |
AUTOR: |
Javier Enrique
Rodríguez Albornoz. |
ROL: |
9721041-1 |
1. DESCRIPCION GENERAL DEL PROBLEMA:
Organizer es una simple agenda que despliega un calendario, configurado respecto
a la hora del sistema, y permite almacenar compromisos u obligaciones futuras
que una persona pueda tener en distintas fechas determinadas. Solo basta hacer click en la fecha determinada, y en la ventana que aparece
puede almacenar sus compromisos. Una vez almacenado, se marca el dia, recordándole el evento.
2. ANALISIS DEL PROBLEMA:
El modelo del problema se basa inicialmente en adquirir la fecha del sistema.
Una vez dibujada la hoja del calendario en la ventana, se desean los siguientes
comportamientos:
HOJA DE CALENDARIO:
Indicación del día actual, mostrado de un color distinto a los demás días.
- Indicación de los días en que habrá un compromiso o evento. Esto se mostrará
cambiando de color el número de
días correspondiente.
(Ambos tópicos anteriores permiten una
intuitiva visualización).
El programa permite además almacenar eventos futuros para meses posteriores.
Para ello se dispone de botones de avance y retroceso. Cada click del botón avanza o retrocede un mes, según sea el
caso.
- Al presionar y soltar el botón del mouse, se
despliega una ventana que contiene un campo de texto. Esta ventana despliega la
fecha del día clickeado, un campo de texto para
almacenar los datos, y dos botones: uno para salvar el evento y otro que borra
el evento para ese día.
- El almacenamiento y despliegue de eventos se lleva a cabo a través de un
archivo, el que contendrá todos los compromisos en un año determinado. Al
cambiar de año, se crea un nuevo archivo. El nombre de archivo creado lleva por
nombre "numero de año.bd".
ETIQUETAS
ANEXAS:
Además del despliegue de la hoja de calendario, se muestran además otras
etiquetas:
- NOMBRE DE MES NUMERO DE AÑO (4 cifras)
- NOMBRE DIA ACTUAL
- *FECHA ACTUAL (Formato: Día.Mes.Año)
- HORA ACTUAL (Esta última se actualiza segundo a segundo)
- *NUMERO DE DIA EN EL AÑO / NUMERO DE
DIAS TOTALES DEL AÑO (365 ó 366, dependiendo si el año es bisiesto o no)
- *NUMEROS DE DIAS QUE HAN PASADO /
DIAS RESTANTES PARA QUE TERMINE EL AÑO
*: (En estas etiquetas, quizás no se entienda la forma en que se despliegan. Es
por ello que se añaden textos de indicación para estas etiquetas. Tan sólo se
debe dejar el puntero del mouse sobre alguna de
ellas, y se mostrará el significado de los campos.
Tanto la hoja del calendario como las etiquetas mencionadas se actualizan
cuando se presiona el botón de avance o retroceso.(Salvo
HORA ACTUAL, obviamente por que se actualiza cada segundo).
Además al llegar las 12:00 AM, se debe desplegar en pantalla el cambio de día,
mes o año. Por ende, se actualizan tanto la hoja de calendario como las
etiquetas.
Los botones de avance y retroceso de mes, también contienen textos indicativos
al colocar el mouse por alguno de los dos.
3. DIAGRAMA FUNCIONAL:
El programa se compone de dos clases principales. Organizer
y APP. La primera esta encargada de dibujar la hoja de calendario y etiquetas,
además de cargar el archivo numero_de_año.bd. La
segunda clase es la encargada de mostrar una ventana secundaria, en la cual
pueden escribirse los compromisos, y el posterior almacenamiento en el archivo.
El
diagrama funcional general del software se muestra a continuación.
Figura 3.1 Diagrama funcional
general del software.
4. DIFICULTADES EN EL DESARROLLO
DEL SISTEMA:
Un problema que se tenía en el desarrollo del software y que ya está resuelto,
se producía en la implementación de los botones de avance y retroceso. Al
presionar un botón, debe redibujarse todo el nuevo
mes. Al hacer esto, se producía que al actualizar la ventana (que se produce
cuando se tapa la ventana con otra, o se minimiza y luego se maximiza, etc), producía que se redibujara
la posición de los números originalmente mostrados antes de avanzar o
retroceder.
El problema es que cada vez que se invocaba a la función que redibujaba, se estaban creando nuevos objetos y se estaban
dibujando encima de los objetos previos. Pudo verse de que el problema se debió
a una implementación no muy buena.
La solución entonces, fue que previo a la llamada a la función que dibuja, se
haga una limpieza de los objetos anteriores. De esta forma cada vez que se
invoca a la función se puede decir que parte "desde cero" y por ende
el problema de actualización de los objetos en la ventana principal se pudo
resolver.
5. CONCLUSIONES GENERALES:
Nuevamente se puede corroborar lo poderoso del lenguaje JAVA y todas las
herramientas que nos ofrece para la manipulación gráfica. El objetivo principal
de este proyecto era conocer acerca de estas herramientas, de tal manera de
llevar a cabo la solución de un problema específico.