jueves, 19 de mayo de 2011

LINKS DEL PROYECTO

Programaciòn Orientada a Objetos


Taller de Programaciòn Orientada a Objetos

POO

RESUMEN DEL PROYECTO


Eventos: En nuestro proyecto contamos con varios eventos, que forman parte de la primera ventana del Login, en donde podemos encontrar un Jlabel, esto nos permite aplicar una imagen de fondo.Tambien con otros 4 botones que nos indican el usuario y contraseña. En la otra ventana tenemos mas botones de guardar, eliminar, modificar, salir, busqueda y nuevo.

Excepciones: aqui utilizamos en la interfaz gráfica, en el botón eliminar, ya que nos pediría la confirmación si realmente queremos eliminar un contacto y aparte para mandar la información a la base de datos de querer eliminarlo, hicimos lo mismo para la función de modificar.


Errores: los errores que se nos presentaron era que al momento de introducir el contacto pero no introducíamos la dirección o el nombre, este lo guardaba, pero lo pudimos arreglar con una excepción.

Sistemas Distribuidos:
Nuestro proyecto se puede distribuir mediant
e una empresa, es decir, que la agenda podría estar conectada a una red interna en la empresa, y ya conectada a la base de datos para guardar los registros, que el personal pueda acceder a sus contactos y también
poder comunicarse con ellos mediante la agenda


Interfaz grafica:
Nuestra interfaz gráfica cuenta con dos ventanas, la primera que nos aparece es para acceder a la agenda, es una ventana en donde tenemos que introducir nuestro nombre de usuario y nuestra contraseña.


En esta ventana es donde agregaremos, modificaremos, eliminaremos, guardemos y también podamos buscar a algún contacto en especifico. Contamos con varias areas como donde ingresamos los datos, una de botones, y una tabla.


Pruebas unitarias: Quisimos implementar pruebas unitarias en nuestro
proyecto ya que presenta varios modulos, por decir un area para modificar,
otra para guardar, salir, etc. y teniamos que verificar que cada una
funcionara correctamente.Lamentablemente no pudimos implementarlo. La herramienta con la que trabajarams era el JUnit



n

11. POO

Sistemas Distribuidos

Nuestro proyecto se puede distribuir mediante una empresa, es decir, que la agenda podría estar conectada a una red interna en la empresa, y ya conectada a la base de datos para guardar los registros, que el personal pueda acceder a sus contactos y también poder comunicarse con ellos mediante la agenda, o poder hacer otro tipo de cosas como mandarse mensajes entre ellos, mails, etc.


Pensamos en muchas formas de darle esta distribución al proyecto, pero esta fue la que mejor nos llamo la atención.



10. POO


.......INTERFAZ GRAFICA.......

 Nuestra interfaz gráfica cuenta con dos ventanas, la primera que nos aparece es para acceder a la agenda, es una ventana en donde tenemos que introducir nuestro nombre de usuario y nuestra contraseña. Utilizamos los botones para que el usuario acepte que quiera ingresar a la agenda, y el otro de cancelar, para omitir todo.
Una interfaz gráfica es cualquier medio por el cual uno puede interactuar con una computadora a través de algún tipo de software gráfico. Comúnmente, esto se consigue a través del control mediante el teclado y el mouse de cursores, menús, ventanas, íconos y cajas de diálogo, pero puede tomar cualquier forma imaginable. Gran parte del trabajo que se realiza en relación con el procesamiento digital de señales (DSP), el diseño de instrumentos interactivos, los sistemas para la interpretación en tiempo real y la síntesis gráfica (graphic synthesis) se ocupa del diseño de interfaces gráficas innovadoras y musicalmente apropiadas.






Como vemos en la imagen de arriba, se puede apreciar dos botones, que el primero nos muestra la barra en donde debemos de escribir nuestro nombre de usuario y abajo la contraseña, después de presionar la tecla aceptar se nos aparecerá la ventana de nuestra agenda. En esta ventana es donde agregaremos, modificaremos, eliminaremos, guardemos y también podamos buscar a algún contacto en especifico. Nuestro primer menú es el de los “Datos del contacto” en donde tenemos que introducir varios datos como el nombre, dirección, teléfono, email y el sexo. Hay que destacar que el id no lo podemos introducir, ya que automáticamente se le agrega a cada contacto que agreguemos.


Otra cosa importante es que hicimos que estén inactivos los campos de texto, ya que queríamos que al momento de presionar el botón de nuevo (icono azul) se pueda habilitar estos campos, para después introducir los datos. Después de esto sigue el menú de botones, que contamos con 5 botones, el primero es para agregar un nuevo contacto, después tenemos para modificar un contacto seleccionado en la tabla que se muestra en la parte de abajo.

Después de esto tenemos el botón de eliminar (rojo) en donde igual que al modificar, primero tendremos que seleccionar un contacto de la tabla y después seleccionar el botón de eliminar, se nos preguntara si realmente deseamos eliminar ese contacto. Después tenemos el botón de guardar, ya que hemos activado los campos de texto e introducir todos los datos, debemos de oprimir este botón para que automáticamente se guarde en nuestra base de datos. Al final del menú tenemos el botón de salir.

lunes, 16 de mayo de 2011

CLASE POO EXTRA

MapReduce

MapReduce es un framework introducido por Google para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras. Se han escrito implementaciones de MapReduce en C++, Java, Python y otros lenguajes.

Las funciones Map y Reduce están definidas ambas con respecto a datos estructurados en pares (clave, valor). Map toma uno de estos pares de datos con un tipo en un dominio de datos, y devuelve una lista de pares en un dominio diferente:
Map(k1,v1) -> list(k2,v2)
La función de mapeo es aplicada en paralelo para cada ítem en la entrada de datos. Esto produce una lista de pares (k2,v2) por cada llamada. Después de eso, el framework de MapReduce junta todos los pares con la misma clave de todas las listas y los agrupa, creando un grupo por cada una de las diferentes claves generadas.

La función reduce es aplicada en paralelo para cada grupo, produciendo una colección de valores para cada dominio:

Reduce(k2, list (v2)) -> list(v2)
Cada llamada a Reduce típicamente produce un valor v2 o una llamada vacía, aunque una llamada puede retornar más de un valor. El retorno de todas esas llamadas se recoge como la lista de resultado deseado.
Por lo tanto, el framework MapReduce transforma una lista de pares (clave, valor) en una lista de valores. Este comportamiento es diferente de la combinación "map and reduce" de programación funcional, que acepta una lista arbitraria de valores y devuelve un valor único que combina todos los valores devueltos por mapa.

Este ejemplo de MapReduce es un proceso para contar las apariciones de cada palabra en un conjunto de documentos:

map(String name, String document):
 // clave: nombre del documento
 // valor: contenido del documento
 for each word w in document:
   EmitIntermediate(w, 1);

reduce(String word, Iterator partialCounts):
 // word: una palabra
 // partialCounts: una lista parcial de la cuenta agregada
 int result = 0;
 for each v in partialCounts:
   result += ParseInt(v);
 Emit(result);
Aquí, cada documento es dividido en palabras, y cada palabra se cuenta con valor inicial "1" por la función Map, utilizando la palabra como el resultado clave. El framework reúne todos los pares con la misma clave y se alimenta a la misma llamada Reduce, por lo tanto, esta función sólo necesita la suma de todos los valores de su entrada para encontrar el total de las apariciones de esa palabra.

lunes, 9 de mayo de 2011

Taller de POO

8. Demo Parcial de Mi Proyecto

En este post les mostrare las funcionalidades que ahorita cuenta mi proyecto de la agenda personal, cuenta con los botones basicos como nuevo, modificar, salir, guardar y quitar. Aun me falta agregar varios eventos a varios botones, pero les mostrare como puedo agregar y quitar un contacto.

Aqui primero compilo mi programa y nos saldra el menu con las opciones correspondientes, despues de eso yo escogo el boton "Nuevo" y a continuacion se abren los campos de texto para rellenar el nombre, direccion, sexo, etc.


Una vez hecho esto, nos dirigimos al botón de "Guardar" y automáticamente se conectara a nuestra base de datos y almacenara en una tabla el contacto que acabamos de teclear, con su respectiva información.


Esto es todo lo que llevamos con el proyecto, aun faltan mas cosas como agregar las citas, pero eso espero y pronto poder implementarlo

Programación Orientada a Objetos

9. Detectar eventos, errores y excepciones en nuestro proyecto


Los eventos que tengo en el proyecto, es la ventana y botones, como el de nuevo, quitar, modificar, salir y guardar, asi como un boton aparte de busqueda, todo esto es el menu de mi proyecto. Tambien tengo una parte en donde se muestran la busqueda de mis contactos y clasifica segun el id, nombre, direccion y teléfono.


Entre los errores que e tenido es que no e podido lograr que se muestren los contactos de la búsqueda, pero lo arreglare muy pronto, ya que no no reconoce los contactos que están guardados en la base de datos.


Tambien me falta darle instrucciones a algunos botones como el de salir, ya que si presionamos ese boton no hace nada, ya que los otros tiene ya su funcion correspondiente.


------------------------------------------------------------------------------------------------------------
Try - catch

El bloque try contiene el código protegido que puede causar la excepción. Este bloque se ejecuta hasta que se produce una excepción o hasta completarse satisfactoriamente. Es posible utilizar más de una cláusula catch específica en la misma instrucción try-catch. En este caso, el orden de las cláusulas catch es importante, ya que las cláusulas catch se examinan por orden. Las excepciones más específicas se capturan antes que las menos específicas.


Ahora les mostrare una parte de mi código en donde utiliza el bloque try-catch, lo utilice en la interfaz gráfica, en el botón quitar, ya que nos pediría la confirmación si realmente queremos eliminar un contacto y aparte para mandar la información a la base de datos de querer eliminarlo.



---------------------------------------------------------------------------------------------------

private void jBQuitarActionPerformed(java.awt.event.ActionEvent evt) {
int resp = JOptionPane.showConfirmDialog(this,"Desea Realmente eliminar este contacto",
"Confirmacion", JOptionPane.YES_NO_OPTION);
if(resp == JOptionPane.YES_NO_OPTION){
try {
ContactoDatos datos = new ContactoDatos();
} catch (SQLException ex) {
Logger.getLogger(jTAgendadeContactos.class.getName()).log(Level.SEVERE, null, ex);
}


}
}

---------------------------------------------------------------------------------------------------