martes, 6 de diciembre de 2011

Regresion Lineal por Swing

Autor: Sebastian Caro.

Competencia: Creatividad e innovación. Nivel1 identifica respuestas novedosas para resolver mejor las demandas del entorno cotidiano.

Descripción: La problematiza se ve reflejada en el hecho de querer modelar el ajuste de una curva a través del cálculo de regresión lineal, mediante el uso de vistas que nos entreguen los valores de sumatoria, promedio, coeficiente a, coeficiente b y r2 que representa la recta. Para ello es necesario utilizar tres niveles (como se menciono anteriormente) que son servidor, software y cliente. En este caso especifico se desarrollara a través de swing, en donde veremos una interfaz grafica o GUI mucho más amigable que en la solución 1.



La BD lleva por nombre “consolalineal”, en ella encontraremos la tabla principal llamada Valores, en la cual debemos ingresar los datos para calcular dicha regresión(debido a que se encuentra siempre vacía), además de poseer todas las vistas que permiten realizar el cálculo de cada función. De esta manera la BD es genérica.
La GUI es una aplicación swing, en ella se maneja la aplicación completa a través de dos pestañas, la primera de inserción de datos y verificación de la tabla y la segunda de verificación de cálculos de cada vista. Cuando la aplicación es finalizada, los valores de la tabla son eliminados, lo que nos permite calcular cualquier tipo de regresión en nuestra base de datos mediante esta aplicación swing.
El cliente se encarga de llevar a cabo el proceso final de la solución, donde el ingresa sus valores y los modela a su antojo, gracias a que al finalizar la aplicación, esta elimina los registros ingresados por el usuario. De esta manera, la aplicación se vuelve bastante genérica y abierta a distintos cálculos de regresión lineal basándose en los valores propios ingresados por el cliente.
Además de poder analizar los valores que ingresa ya que los puede ir comprobando de manera visual.
De esta manera creemos que podemos solucionar la problemática de calcular una regresión lineal mediante tres capas de forma genérica.


Diseño de Procesos
Cuando hablamos de procesos, nos queremos referir directamente a que parte de la solución, realiza acciones que son importantes a nivel de código y ejecución. En este caso, los procesos más importantes, se ven reflejados en el ajuste de la curva médiate regresión lineal a través de distintitos cálculos específicos. Es por ello que analizaremos las vistas creadas en la tabla que nos entregan la sumatoria, promedio, coeficiente a, coeficiente b y r2. Además del ingreso de valores y verificación de estos.

Cada proceso corresponde a una vista, ellas se alimentan de lo que el usuario ingresa a la tabla y mediante esos valores crean sus cálculos, debido a que las vistas son tablas temporales que hacen un select a la tabla principal y estas se actualizan mediante el movimiento de valores en la tabla.

Ingreso de datos:
El ingreso de datos para la solución dos consta de utilizar un statement muy parecido al 1, que no crear una conexión a la BD para realizar una Query. Luego realiza la inserción ero consulta los datos ingresados mediante los TextField, medicando el set y pasando a Doublé, para el correcto funcionamiento del ingreso de datos.


Verificación de ingreso:
Para verificar el correcto ingreso de los valores, se añade un botón que nos realice un select a la tabla y nos presenta los datos almacenados.


Diseño de la Base de Datos
La BD se diseño de una manera bastante básica, en donde encontramos una tabla que lleva por nombre valores, que maneja los datos de una nube de puntos ingresados por el cliente.


Donde los atributos X e Y son de tipo Doublé y NULL.
Dentro de la BD también encontramos la Vistas ya presentadas en desarrollos anteriores.
Cada una realiza un cálculo específico y espera el ingreso de datos hacia la tabla “Valores” para realizar su tarea.
Desc de cada Vista:
Sabemos que cada vista corresponde a una tabla temporal, por tanto los datos que maneja para su posible solución, siempre dependerán de la tabla en la que obtiene los valores, es decir, la tabla principal “Valores”.

Modelo Relacional:
 El modelo relacional, se basa en como es el funcionamiento de la solución en las tres capas de aplicación, para ello presentaremos un esquema que nos da a conocer dicho análisis.
[1] = El usuario ingresa los datos mediante la capa del Software
[2] = Los datos son ingresados desde el Software hacia la tabla en la BD 
[3] = Se procesan los datos y cada vista realiza sus cálculos gracias a los datos ingresados 
[4] = se almacenan estos cálculos en cada tabla (vista) de la BD 
[5] = la capa de software pide ver los cálculos, aquí la BD envía las tablas (vistas) con sus previos resultados [6] = las tablas están disponibles y son entregadas al cliente

Esquema o Diseño de GUI e interacción
Su funcionamiento es manejado mediante el uso de botones, que realizan las acciones necesarias para consultar a la BD, además de dividir su presentación en pestañas de ingreso y verificación de cálculos.


En la pestaña ingresar se piden los valores para la tabla, estos son obtenidos mediante el textfield y espera a que el cliente presione el botón ingresar para hacer la consulta a la BD. El botón ver realiza un select a la tabla y muestra los nuevos valores ingresados.

Se comunica con la BD a su vista específica y nos entrega en el recuadro, los cálculos pertinentes a cada vista. El botón salir no desconecta de la BD y al mismo tiempo elimina todo valor almacenado en la Tabla de la BD.


Implementación de Clases.
La implementación realizada en la Clase Aplicación es la siguiente: Conexión: el diseño de la conexión es simple y obligatorio, esta se realiza cuando se ejecuta la aplicación y finaliza cuando el cliente desea salir del programa mediante la opción creada en el menú. Su código java es el siguiente: 



Insert:
La inserción de datos se maneja para este caso, de una manera distinta a la vista en consola.
Iniciamos nuestra conexión luego creamos una un objeto de tipo conexión para despues  implementar una consulta, esta se llena con valores ingresados mediante jtextField, desde allí se agrega a la consulta y con capturados como tipo doublé.



Luego se muestra un mensaje de aviso o alerta, que nos verifica que la operación fue un éxito.
Por ejemplo: PUNTOS GUARDADOS CORRECTAMENTE!.

O en el caso de que se haya producido un error se activara el rollback, como se muestra en la imagen.





Verificar:
Si presionamos ver, se realizara una consulta de tipo select a la tabla, esta nos entregara automáticamente los valores que ya existen en la tabla de la forma en la que se refleja la imagen
Este proceso o implementación especifica de la clase, realiza su consulta a la BD y captura lo que entrega la query mediante el uso de Resulset. Luego obtiene el nombre de las columnas recorriendo la tabla y agregando su nombre en la tabla defaul, en este caso sería X e Y.



Código  Ver:



Luego obtenemos las filas de la tabla, esto se realiza gracias a lo que captura el resulset.
De esta manera en un arreglo se almacena el contenido del Resultset.




Para luego darle ciertas separaciones a los datos mediante el recorrido de las columnas y añadiendo este carácter “|”, lo que nos entrega valores mucho mas ordenados.

Vistas:
En la pestaña de vistas podemos ver una serie de botones y una tabla defaul, cada uno de esos botones realiza una consulta ala BD y llama a los valores pedidos de dicho calculo mediante select.








El resultado de las imágenes se produce mediante lo siguiente:

Como ya sabemos que al ingresar datos a la tabla valores, las vistas se actualizan automáticamente estando sujeta a cambios si se ingresan mas valores, es por ello que en cada botón de cada operación para el cálculo de regresión lineal solo nos falta realizar una consulta de tipo select + el nombre de la vista y llamar al método llenar tabla, quien se encarga de recorre fila por fila y añadirla y columna por columna y añadirla a la tabla default.
El método llenar tabla obtiene el select que el cliente quiere ver mediante el botón que selecciona y este toma esa consulta y comienza a estructurar la tabla.
Primero obtiene los nombres de las columnas y los guarda en un arreglo, luego obtiene la cantidad de filas de la consulta y las comienza a agregar a la matriz con separaciones de datos.


Al final agrega a la tabla creada en el panel de swing el arreglo y lo hace visible.

Salir:
El botón salir, tal como lo dice su nombre,, nos permite huir de la aplicación, pero este no solo cierra la ventana de swing y hace una desconexión a la BD, sino que además nos elimina los valores de la tabla valores, de esta manera, cada vez que se vuelve a ejecutar la aplicación, esta está preparada en un 100% para los cálculos ingresados por el usuario.


Y verificamos que los valores ya no están en la tabla valores.
Básicamente lo que hace posible esto son tres o cuatro líneas de código, se arma de esta manera:


En donde utilizo una conexión a la BD y le envió una consulta que me elimine todos los valores que tenga la tabla, luego cierro conexión con la BD y me retiro de la ventana jframe.

Implementación de GUIs.

El desarrollo de la GUI se hace por medio de las herramientas ofrecidas por netbeans, la cual como se ha mencionado anteriormente cuenta con 2 pestañas para el ingreso de puntos en la ecuación lineal y la vista de los que se han ingresados, y la pestaña para ver el resultado de las operaciones matemáticas.


Se inicializa con el siguiente código:


Pestaña de vistas

Se inicializa con el siguiente código:



Reflexión:Al termino del informe nos damos cuenta del enorme esfuerzo realizado y satisfechos con poder resolver el problema de una manera más avanzada, aunque puede ser mejorado, ya tenemos el conocimiento para que en el futuro al realizar problemas similares solo tenemos que optimizar la funcionalidad de todas las técnicas aprendidas hasta el momento.

2 comentarios:

  1. Viejo! de casualidad tienes el codigo ?? te lo agradeceria mucho

    ResponderEliminar
  2. puedes pasar el fuente y bd globalnet.huehue@gmail.com

    ResponderEliminar