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);
}


}
}

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

 




Taller de Programación Orientada a Objetos

*Clase con al menos 3 metodos
*Clase de prueba utilizando junit

public class caja
{
 private double ancho;
 private double altura;
 private double largo;
 public double volumen()
 {
 }
 return ancho*altura*largo;

 public void setAncho(double an) {
 ancho = an;
 }
 public void setAltura(double al){
 altura = al;
 }
 public void setLargo(double l){
 largo = l;
 }
 public double getAncho(){
 return ancho;
 }
 public double getAltura(){
 return altura;
 }
 public double getLargo(){
 return largo;
 }
}

public class Example{
public static void main (String args[]) {
caja primercaja = new caja(); // creación de la caja
primercaja.setancho(4.3);
primercaja.setaltura6.9);
primercaja.setlargo(3);
System.out.println("El volumen es " + primeraja.volumen());
}
}

martes, 3 de mayo de 2011

Clase POO

No hay lonche gratis
'Gratis' nunca fue realmente gratis.
  • Envío 100% gratis-- otra manera de decir que el costo de envío esta incluido en el costo del producto.
  • Compra uno y el segundo es completamente gratis-- otra manera de decir que te dan un 50% de descuento.
  • Muestra gratis-- otra manera de decir que necesitas comprarlo.
  • Llévalo gratis ahorita, y paga después-- Se siente como gratis!, aunque sea por un momento.
 Pero claro, la palabra gratis es mágica. Por eso todo mundo la usa, y por eso todo mundo la busca

Por ejemplo este blog. Lo estas leyendo, gratis, y no tiene anunciantes. Entonces este sí es 100% gratis, o no? Tampoco. Lo estas pagando con tu tiempo, te esta costando tu atención. Y tu tiempo y atención mejoran mi reputación (No, no todo se paga con dinero). Lonche gratis o no, creo que lo interesante de esta discusión son los subsidos cruzados, y la manera en que puedes usar la palabra 'gratis' para generarle valor a tu negocio

jueves, 17 de marzo de 2011

Programación Orientada a Objetos

8. Antipatron de diseño


Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema.
Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores de sistemas para no escoger malos caminos, partiendo de documentación disponible en lugar de simplemente la intuición.

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.

Algunos ejemplos de estos serian:
  • Poltergeist
Esta mala práctica se refiere a objetos de un ciclo de vida corto cuya única función suele ser invocar métodos de otros objetos. Esto hace que crezca la dificultad para mantener el sistema. Suelen identificarse por su nombre: “start_”, “manager_”. La solución para evitarlos es eliminarlos y poner su funcionalidad en la clase a la que invocan.

  • Spaghetti Code
Este antipatrón se refiere a un código mal estructurado, ausente de estructuras de control etc… Es frecuente cuando usamos GOTOs, programamos a base de interrupciones o excepciones etc. También es frecuentemente denominado “Código canguro” por lo contiguos saltos que hay que hacer en él para seguir el flujo de ejecución.


Programación Orientada a Objetos

8. Los Patrones de Diseño

Brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares. Debemos tener presente los siguientes elementos de un patrón: su nombre, el problema (cuando aplicar un patrón), la solución (descripción abstracta del problema) y las consecuencias (costos y beneficios).
Los patrones de diseño son relativamente fáciles de comprender, no son nada del otro mundo. Lo que a veces se hace complejo es utilizarlos. Por ello hay que conocerlos bien, especialmente los más importantes, porque realmente facilitan el trabajo, y sobre todo, hacen el código más legible. 

Clasificación:
  • Creacionales: El objetivo de estos patrones es de abstraer el proceso de instanciación y ocultar los detalles de cómo los objetos son creados o inicializados.
  • Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades.
  • Comportamiento: Los patrones de comportamiento nos ayudan a definir la comunicación e iteración entre los objetos de un sistema.
Aquí 2 ejemplos de patrones de diseño serían los siguientes:

PATRON COMPOSITE (ESTRUCTURAL)
sirve para construir objetos complejos a partir de otros más simples y similares entre sí, gracias a la composición recursiva y a una estructura en forma de árbol.
Esto simplifica el tratamiento de los objetos creados, ya que al poseer todos ellos una interfaz común, se tratan todos de la misma manera.
diagrama del patrón composite

PATRON BUILDER (CREACIONAL)
Como Patrón de diseño, el patrón builder (Constructor) es usado para permitir la creación de una variedad de objetos complejos desde un objeto fuente (Producto), el objeto fuente se compone de una variedad de partes que contribuyen individualmente a la creación de cada objeto complejo a través de un conjunto de llamadas a interfaces comunes de la clase Abstract Builder.
Builder UML class diagram.svg

martes, 15 de marzo de 2011

Taller de POO

DIAGRAMA UML

Para crear el siguiente diagrama de clases hice uso del software BOUML  que permite definir y generar código en C++, Java, Idl y PHP. Es compati
ble con Unix/Linux/Solaris, MacOS X y Windows, es muy rápido y no requiere mucha memoria para manejar varios miles de clases.