domingo, 8 de mayo de 2011

POO (session 9)

Eventos, errores y excepciones

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. Otros botones con los que contamos son con 4 Jbutton, estos botones nos permite darles instrucciones, como el de identificar el botón de usuario y contraseña, además de otros dos botones que son el de “aceptar” y “cancelar” como el nombre nos lo indica, el primero botón hace que pasemos a la siguiente ventana que es la interfaz donde manejaremos nuestros contactos, y el botón cancelar hace que se cierre la ventana automáticamente. El usuario y contraseña lo puse por defecto en el código, pero se puede cambiar cuando se necesite. También agregamos campos de texto para poder ingresar los datos, estos son llamados TextField, y lo acomode en el botón de usuario, por otra parte hay un campo de texto especial por si uno desea poner una contraseña, así lo aplique para poder ingresar nuestra contraseña.



Aquí aparece la parte del código, es corto, y además fácil, pero muy eficiente, le dimos la instrucción de que primero apareciera la ventana del login, después de esto al introducir el usuario y contraseña nos mandara directamente a la página 2, a la otra ventana que tenemos hecha.

Excepciones: dentro de las excepciones en nuestro proyecto se encuentran varias, ya que las use más que nada en los botones que use en la interfaz. 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 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 en nuestro proyecto si fueron varios, por ejemplo, al momento de hacer la búsqueda de un contacto en la tabla aparecían celdas de más, o por ejemplo cuando escribíamos un nombre en el cuadro de búsqueda nos aparecían la mayoría de los contactos. Otro error 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, en tanto a los otros errores también pudimos solucionarlos con éxito.

jueves, 17 de marzo de 2011

POO (sesion 8)

Patrones de diseño

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Los patrones de diseño se pueden clasificar en 3 grupos:
  1. Patrones creacionales
  2. Patrones estructurales
  3. Patrones de comportamiento
Existen en total 23 patrones de diseño, con sus respectivas funciones y aqui pondre dos ejemplos.
  • Command: Este patrón permite solicitar una operación a un objeto sin conocer realmente el contenido de esta operación, ni el receptor real de la misma. Para ello se encapsula la petición como un objeto, con lo que además se facilita la parametrización de los métodos
Propósito: Encapsula un mensaje como un objeto, con lo que permite gestionar colas o registro de mensaje y deshacer operaciones, soportar restaurar el estado a partir de un momento dado, y Ofrecer una interfaz común que permita invocar las acciones de forma uniforme y extender el sistema con nuevas acciones de forma más sencilla




  • Mediator: Cuando muchos objetos interactúan con otros objetos, se puede formar una estructura muy compleja, con objetos con muchas conexiones con otros objetos. En un caso extremo cada objeto puede conocer a todos los demás objetos. Para evitar esto el patrón Mediator encapsula el comportamiento de todo un conjunto de objetos en un solo objeto.
Aplicabilidad:
  • Un conjunto grande de objetos se comunica de una forma bien definida, pero compleja.
  • Reutilizar un objeto se hace difícil por que se relaciona con muchos objetos.
  • El comportamiento de muchos objetos que esta distribuido entre varias clases, puede resumirse en una o variaspor subclasificación.




Antipatrones de diseño

Un antipatrón de diseño es un patron de diseño que invariablemente conduce a una mala solución para un problema.Los antipatrones se consideran una parte importante de una buena práctica de programación. Es decir, un buen programador procurará evitar los antipatrones siempre que sea posible, lo que requiere su reconocimiento e identificación tan pronto como sea posible, dentro del ciclo de vida del software.
El concepto de antipatrón se puede aplicar a la ingenieria en general, e incluso a cualquier tarea realizada por el hombre. Aunque no se escucha con frecuencia fuera del campo ingenieril, la noción está ampliamente extendida.



Entre estos patrones existen varias clasificaciones, en donde se encuentran numerosos antipatrones, a continuacion les dejo sus categorias:
  • Antipatrones de gestión
  • Antipatrones de gestión de proyectos
  • Antipatrones generales de diseño de software
  • Antipatrones de diseño orientado a objetos
  • Antipatrones de programación
  • Antipatrones metodológicos
  • Antipatrones de gestión de la configuración










martes, 15 de marzo de 2011

Taller de programacion

Diagrama de ejemplo con BOUML

Este es un ejemplo del diagrama hecho con el programa BOUML, donde podemos indentificar mas facilmente las clases, metodos y operaciones del programa.


miércoles, 16 de febrero de 2011

Documentacion en doxygen


Programacion orientada a objetos

El programa que use para hacer la prueba de documentacion de las clases de mi proyecto fue con el Doxygen, lo instale en Windows 7.


Instalado y todo precedemos a montar los archivos de las clases para que nos lo muestre en una pagina HTML.


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

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


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

martes, 15 de febrero de 2011

Avance de clases en el proyecto final

En este avance identificamos las clases que usaremos
mientras para el proyecto, en esta clase llamada Usuarios
es donde se registraran obviamente las personas que agreguemos, cuenta
con una "id", "nombre", "direccion", "telefono", "email" y "sexo"
-------------------------------------------------------------
public class Contacto {

private Long id;
private String nombre;
private String direccion;
private String telefono;
private String email;
private String sexo;

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getSexo() {
return sexo;
}

public void setSexo(String sexo) {
this.sexo = sexo;
}

public String getTelefono() {
return telefono;
}

public void setTelefono(String telefono) {
this.telefono = telefono;
}


}
-------------------------------------------------------------
En esta clase usaremos las Citas programadas, que
contaran con tambien un "id", "el nombre del contacto",
"fecha", "hora" y "evento".

public class Cita { int id; Contacto contacto; String direccion; String fecha; String hora; String evento;  public Cita() { }  public String getevento() {     return evento; }  public void setevento(String evento) {     this.evento = evento; }  public Contacto getContacto() {     return contacto; }  public void setContacto(Contacto contacto) {     this.contacto = contacto; }  public String getFecha() {     return fecha; }  public void setFecha(String fecha) {     this.fecha = fecha; }  public String getHora() {     return hora; }  public void setHora(String hora) {     this.hora = hora; }  public int getId() {     return id; }  public void setId(int id) {     this.id = id; }  public String getDireccion() {     return lugar; }  public void setDireccion(String direccion) {     this.direccion = direccion; }  }
------------------------------------------------------------

domingo, 6 de febrero de 2011

Taller de programacion orientada a objetos

Programa con varias clases multiples (3 clases)

Este programa que intente realizar es sencillo, ya que nos muestra el ID y el saldo de un cliente, este programa tiene 3 clases: Principal, Cliente y Cuenta.

--------------------------------------------------------------------------------------------------------------------------------------
en la clase Principal, le damos la instruccion que muestre el valor y el sueldo del cliente 1 (c1) y nos lo muestre en la pantalla, aqui le asignamos un numero de cliente y numero de cuenta que en la siguiente clase la declaramos privados
--------------------------------------------------------------------------------------------------------------------------------------

public class Principal {
public static void main (String[] args) {
Cliente c1 = new Cliente("1453478","Alejandro");
Cuenta cuenta1 = new Cuenta(c1,"001",25000);

System.out.print("Nombre:" + cuenta1.getCliente().getNombre());
System.out.println("Saldo:" + cuenta1.getSaldo());
}
}
--------------------------------------------------------------------------------------------------------------------------------------
en esta clase Cliente le damos las instrucciones para que se le asigne el nombre del id y del nombre, dandole atributos privados.


public class Cliente {
private String id;
private String nombre;

public Cliente(String id,String nombre) {
this.id=id;
this.nombre=nombre;

}

public String getId(){
return id;
}
public String getNombre(){
return nombre;
}
}
--------------------------------------------------------------------------------------------------------------------------------------
en la ultima clase que es Cuenta, es casi lo mismo que la clase anterior, que es para asignarle el numero de cuenta que es privado.

public class Cuenta {
private Cliente cliente;
private String numCuenta;
private double saldo;

public Cuenta(Cliente cliente,String numCuenta,double saldo){
this.cliente=cliente;
this.numCuenta=numCuenta;
this.saldo=saldo;
}

public Cliente getCliente() {
return cliente;
}
public String getNumCuenta() {
return numCuenta;
}
public double getSaldo(){
return saldo;
}
}