lunes, 16 de mayo de 2011

PROGRAMACIÓN ORIENTADA A OBJETOS

Resumen de mi proyecto.


Mi proyecto trata sobre una cuenta para poder ahorrar, retirar, o transferir dinero.
Tiene una ventana inicial que te pide tu usuario y contraseña para tener acceso a tu cuenta, tambien tiene distintas ventanas para hacer las funciones antes mencionadas.

Patrones de diseño:

Patrones de diseño incorporados en Java.

Recordar que un patrón de diseño es una solución estándar para un problema común de programación.

Yo usé dos patrones de diseño: Subclase(herencia) y Excepciones

El patrón subclase se usa para no hacer repeticiones de código(ahorrar código) ya que esta actividad es muy propensa a errores y confusiones.
Utilicé este patrón en mi clase Gráficos, heredé de la clase JFrame.

El patrón excepciones, es usado cuando una parte de código es propensa a errores, este patrón lo usamos para controlar el flujo "normal" de ejecución.
En caso de que se presente una irregularidad o falla en nuestro sistema, este saltará ese pedazo de código, mostrando un mensaje de Error.

Aclaro que estos patrones de diseño que he mencionado ya vienen incorporados en Java.

Eventos:

Los únicos eventos que ocurren en mi programa son al hacer click sobre los diferentes botones, por ejemplo en la ventana inicial (acceso) vienen 2 botones "Aceptar" y "Crear cuenta" con obvios eventos que cuando damos click en Aceptar y si el usuario y contraseña son correctos se abre la ventana de meus, y cuando presionamos el "Crear cuenta" si el usuario ingresado no existe ya en la base de datos, se crea la nueva cuenta.

Otros eventos son cuando estoy en la ventana de menu , para seleccionar una opción solo se oprime un botón y te lleva a esa función por ejemplo ahorrar, transferir, retirar, eliminar cuenta.

Todos los eventos de mi programa se manejan por medio de botones.

Excepciones y errores:

Las excepciones y errores que yo manejo es en mi clase "BaseDatos" cuando se hace de forma erronea una consulta a la base de datos el catch avienta un mensaje de error: "Error al realizar la consulta".

En la misma clase tambien cuando intento conectarme a la base de datos, puse un try y en el catch puse que mostrara un mensaje de error con la leyenda: "Error en la conexión"

Pruebas unitarias:

En cuanto a pruebas unitarias yo como la mayoría de mis compañeros hice el tipo de prueba de caja negra porque algunos compañeros probaron mi sistema, unos me dijeron que no tenía suficiente información para el usuario pero las pruebas fueron que ponian cierto tipo de caracteres raros en mis JTextField y después mi sistema no respondía, para eso puse excepciones y errores, que el sistema solo debia aceptar el tipo de datos que estaba declarando en mis atributos, de manera que cuando hacian lo mismo de poner caracteres extraños, mi sistema mandaba un error en la acción que queria que se llevara acabo.


Interfaz gráfica:

En la interfaz gráfica batallé mucho porque es la primera vez que hago un proyecto con interfaz gráfica (ya las había usado antes pero fue un ejercicio muy secillo).

Mi proyecto cuenta con 6 ventanas:

1. Ventana de acceso.
2. Ventana de creación de cuentas.
3. Ventana de ahorro.
4. Ventana de retiro.
5. Ventana de transferencias
6. Ventana de eliminación de cuenta.

Para hacer todas estas ventanas heredé de JFrame, para acomodar los elementos de las ventanas utulicé FlowLayout porque tuve muchos problemas con setBounds.

La mayoría de mis ventanas tienen componentes como JButton, JTextField y JLabel.
Mi programa abría ventanas cada que hacía una función y al final quedaban muchas ventanas abiertas, para solucionar eso, antes abrir otra ventana puse un setVisible(false) para ocultar la ventana pasada.

Sistemas distribuidos:

En caso de que mi sistema quiera ser subido a la red y tuviera muchas consultas, se necesitaría de una computadora (servidor) que pueda responder a las peticiones de los usuarios, pero para poder realizar ese trabajo se necesita buen hardware en una máquina, además si se tuviera mi sistema en una sola máquina, si falla esa máquina pues fallaría todo el servicio.
Para evitar problemas de acceso a mi sistema desde la red, se necesitaría un Sistema distribuido en el cuál se puede instalar partes de mi sistema, y que todas las máquinas trabajen en conjunto, así si falla una máquina se puede seguir dando el servicio, no con la misma calidad pero seguiría estable, sería como un Cluster.
Lo que quiero decir es que conviene más para mi sistema que el trabajo se haga distribuido y no centralizado, para que el control de mi sistema no dependa de un solo punto y pueda presentar fallas solo por causa de una computadora (en la que está alojado).

Estos son los videos(explicación y ejecución de mi sistema) que subí a YouTube del Taller de Programación Orientada a Objetos:







Es todo en esta entrada, cualquier corrección pueden dejarla en comentarios.
Saludos!