### Descripción del problema

Ante la dificultad de realizar evaluaciones a niños pequeños, con distintas capacidades, de una manera más lúdica y divertida para ellos, proponemos un software que permita aliviar la tarea del evaluador y de paso interesar más a los niños a aprender. Mechaniografus es un sistema de apoyo para niños de corta edad, para su aprendizaje de lenguaje. La aplicación está desarrollada en Java y con el IDE Eclipse, y se espera que con ella el pequeño pueda desarrollar sus habilidades de manera más lúdica, donde se evaluarán áreas como la comprensión lectora, vocabulario, conjugación, etc. a través de una serie de preguntas, y se podrá obtener un puntaje final a modo de evaluación. De esta manera quien esté haciendo uso de la aplicación para promover el aprendizaje de niños puede corroborar el avance de ellos.

### Análisis y desarrollo del problema

Con este sistema se espera los jóvenes interactúen con el software. Se da la impresión de que la máquina les está hablando para que se sientan un poco más relacionados con la aplicación.
Al ejecutar la aplicación se aprecia una interfaz de presentación de la misma, con 3 botones que dan la posibilidad de iniciar el test, cargar un estado anterior y salir de la aplicación.
Como dice el primer botón, permite iniciar con una pantalla de presentación de Mechaniografus de manera amigable con el usuario. Luego se ingresa el nombre del jugador para que Mechaniografus lo identifique por él y luego comenzará con el test. Luego se da inicio al test de los diferentes tipos de casos a abordar: vocabulario, comprensión lectora, conjugación y uso de pronombres. Cada caso posee una serie de preguntas, que en la versión de prueba son 10 para cada uno, es decir una cantidad de 40 preguntas que poseen 4 alternativas cada una. Responder correctamente las preguntas otorga un puntaje que se irá acumulando a medida que el jugador responda correctamente hasta dar un puntaje final, que representará el desempeño del jugador. Posterior a esto se podrá salir de la aplicación o re-evaluar a otro usuario.
Se muestran a continuación algunos casos posibles de escenarios de uso:

Caso 1: Usuario realiza el test con normalidad
Actores (Usuario) | Sistema (Software)
--- | ---
Usuario inicia los parámetros de carga del programa |
| El programa iniciará los parámetros solicitados
Usuario da click a iniciar test |
| El programa iniciará una clase instancia y solicitará un identificador para asignarle dicha clase, en este caso el nombre de usuario
Usuario confirma su intención de interactuar y someterse a los escenarios que cargue el programa |
| El software inicia su secuencia de preguntas y espera por cada una, una interacción del usuario. Esta instancia se repetirá un número finito de veces predeterminadas al momento de inicializar
El usuario interactúa con todas las instancias que el software presenta. Este paso se realiza hasta que el programa decida terminar y pasar al escenario final |
| El software determina el término de la secuencia de evaluación. Por lo que da la opción de evaluar a otro usuario o terminar el proceso
El usuario elige evaluar a otro usuario |
| El software envía al usuario al paso 4

Caso 2: Usuario decide salir del programa
Actores (Usuario) | Sistema (Software)
--- | ---
Usuario inicia los parámetros de carga del programa |
| El programa iniciará los parámetros solicitados
Usuario da click a salir del programa |
| El software detiene la ejecución del programa y lo cierra

Caso 3: Usuario decide cerrar el programa una vez termina el test
Actores (Usuario) | Sistema (Software)
--- | ---
Usuario inicia los parámetros de carga del programa |
| El programa iniciará los parámetros solicitados
Usuario da click a iniciar test |
| El programa iniciará una clase instancia y solicitará un identificador para asignarle dicha clase, en este caso el nombre de usuario
Usuario confirma su intención de interactuar y someterse a los escenarios que cargue el programa |
| El software inicia su secuencia de preguntas y espera por cada una, una interacción del usuario. Esta instancia se repetirá un número finito de veces predeterminadas al momento de inicializar
El usuario interactúa con todas las instancias que el software presenta. Este paso se realiza hasta que el programa decida terminar y pasar al escenario final |
| El software determina el término de la secuencia de evaluación. Por lo que da la opción de evaluar a otro usuario o terminar el proceso
El usuario decide cerrar el programa |
| El software cierra el programa

### Implementación

El uso de la herramienta eclipse nos permite trabajar de forma rapida y directa en la manipulación de archivos, ya sean del tipo .java o de tipo fichero. La metodología de trabajo fue programacion sin uso de complementos, esto nos permite mas control de las clases que se implementan.

Para el diseño se pensó en una aplicación que nos otorga flexibilidad y facilidad de implementación, tratar de desligar todo del código principal y que el usuario se centrará en diseñar su propia evaluación.
En aspectos generales el proyecto es muy parecido a la tarea 2 del curso, al menos en la parte de creación e interacción de una ventana JFrame, salvo esa única salvedad el programa es independiente a los conocimientos empleados en las tareas del curso, esto sin contar el enfoque general del curso y sus paradigmas de programación.
Pasos desarrollados en la implementación del proyecto:

- Idea general del proyecto y planteamiento de aspectos importantes
- Uso de Ficheros de lectura y escritura
- Creación de Preguntas de forma genérica
- Guardar estados de la evaluación
- Aspectos gráficos y de interacción del sistema
- Creación de las clases que cubran los requerimientos anteriores
- Realización de las pruebas individuales de cada clase
- Conectar todas las clases y crear la secuencia de acción

Clases diseñadas para los requerimientos:

- Lectura y escritura de ficheros:

- Vocabulario: Esta clase es importante pues es la clase que lee desde un fichero de texto las preguntas utilizadas en el programa y las características de estas (numero, argumento, alternativas, etc).

- Creación de preguntas de forma genérica:

- Ventana: Esta clase es una especie de “esqueleto” del panel de evaluación, los parámetros ingresan y esta clase genera una ventana con los argumentos de la evaluación y lo necesario para la interacción.

- Guardar estados de la evaluación:

- Final: Esta clase está diseñada para escribir un archivo que contenga los resultados de la evaluación de cada usuario, actualizando el archivo cada vez que se utiliza el programa.

- Aspectos gráficos y de interacción del sistema:

- JPanelBackground: Clase para crear la ventana, solo muestra el fondo y las características del Frame generado.
- Clases iniciales: Corresponden a Administrador, Inicio, Nombre e Inicio2, estas 4 clases inician la interacción y los parametros iniciales de la evaluacion.

### Diagramas

A continuación se puede ver el diagrama de clases de nuestro programa

### Pruebas