jueves, 14 de julio de 2011

Codigo Fuente Taller POO

Aqui el link a mi codigo fuente. Muchas gracias por ver mis entradas son unos panes de dios chicos gracias!
Codigo Fuente

Codigo Autogenerado POO

Bueno esta entrada es sobre el codigo autogenerado en lo que cuenta los diagramas de clase.Aqui les voi a mostrar el codigo que me genero la herramienta BOUML.






class Usuario {
private Proyecto ;

private Proyecto ;

private String usuario;

private String password;

private peso;

private String nombre;

private String apellido;

public bambam;

public registroUsuario(void usuario, password, nombre, apellido, apellido) {
}

public thehandler() {
}
public thehanlder2() {
}

}


Pues este es de la clase usuario, primeramente podemos ver que mediante la autogeneracion de codigo no es posible llegar al resultado que uno quiere, lo que hace este tipo de herramienta es darte el primer empujon para que despues tu agarres ese codigo y ya le des vida al mism. Como podemos ver tenemos los metodos necesarios para mi cuenta, sin embargo podemos ver que los atributos de metodo registrousuario son los mismos que busco en mi codigo duro, pero no de esa manera, siento que este tipo de autogeneracion de codigo no es lo que busca uno al momento de hacer lo que quiere. Ademas de que este mismo no te da el codigo de interfaces graficas que es necesario para darle un orden especifico a tu proyecto.



class Database {
private static Private final driver;

private static Private final database;

private static final user;

private connection;

public void insertarDatos(String Usuario, String Nombre, String Pass, String sexo, int peso) {
}

public compararDatos(String usuario, String password) {
}

private RS;

public Database() {
}

}


Aqui podemos ver que es demasiado aprecido a mi codigo, ya que tiene los mismos atributos y metodos, sin embargo siento que los tipos de variables en Database no son los correctos aqui y en el codigo duro, ya que en el codigo duro podemos dar a aconcoer que las variables son de result set o bien connection, siento que esas aqui no las puedes dar de una manera eficiente.


public class Enfermedad {
public imprimirSintomas(String enfermedad) {
}

private enfermedad;

public thehandler() {
}

private a;

public thehandler2() {
}

}


Aqui en enfermedad no las acomodo de manera eficiente ya que puso dentro del metodo imprimirSintomas, la variable enfermedad el cual no se puede hacer eso. Ademas de eso el codigo se parece mucho, ya que tenemos los mismos metodos solo faltarian los atributos de la clase.


Esto es alguno de mi codigo autogenerado. Aqui les va el link para descargar el codigo autogenerado.

https://rapidshare.com/files/431865460/Codigo_Autogenerado.rar

Codigo Autogenerado

Sistemas Distribuidos POO

Bueno chavos esta es mi entrada de sistemas distribuidos, al finalizar esta entrada les dire el tutorial donde saque todal a informacion necesaria para que ustedes tambien lo hagan.

Como primer sistema distribuido que usare sera el sistema cliente-servidor; este sistema lo que hace es recibir ordenes del cliente, en el cual este mismo nos dice si hay algun error con el sistema, esto sirve para darle arreglo rapido y eficaz a la aplicacion hecha.
Que tipo de servidores usare? bueno estos servidores son los que usare :
Servidores de base de datos : estos servidores son los que almacenaran mi base de datos junto
con las tablas usadas en el programa.
Servidores de aplicacion - basicamente deja al usuario entrar a la aplicacion.


Despues definiremos que arquitectura usaremos. Yo escoji la :
Arquitectura cliente-servidor de dos capas; esta consiste en una capa de presentacion y logica de la aplicacion, y otra de la base de datos. Esta arquitectura se usa cuando
- Cuando se requiere poco procesamiento de datos en la roganizacion
- Cuando se tiene una base de datos en un solo servidor
- Cuando la base de datos es relativamente estatica.
- Cuando la aplicacion requiere un minimo de mantenimient.

Por ultimo lo que usare de middleware es esto:
Software intermedio general lo que hace es que los Servicios generales que requieren todos los clientes y servidores, por ejemplo: software para las comunicaciones usando el software parte del sistema operativo que, por ejemplo, almacena los archivos distribuidos, software de TCP/IP autenticación, el software intermedio de mensajes de clientes a servidores y viceversa.

De aqui podran sacar toda la informacion necesaria para su proyecto.

Pruebas Unitarias TALLER POO

Estas pruebas unitarias las desarrolle usando el JUnit. Lo que hacen estas pruebas son que dentro del diseno de tu codigo, lo divide parte por parte para despues ver si lo que estas haciendo va por buen camino o bien ya esta bien hecho. Aqui les van todas las imagenes.





miércoles, 13 de julio de 2011

Interfazes Graficas TallerPOO

Bueno esta es la primera GUI, esta interfaz se encarga de registrar al usuario dentro de la base de datos. Esta interfaz como pueden ver pide el usuario, la password , el nombre, peso, apellido y sexo; esto lo hago para mantener un registro de quienes se van a registrar dentro de la base de datos. Ademas de que el usuario no se puede repetir debido a que en la base de datos puse el PrimaryKey en ese registro para lograr la no repeticion del usuario.


Al momento de dar click en "Ya estoy Registrado" aparece la siguiente ventana, en la cual el usuario ingresa su nombre y contrasena; con el objetivo de comparar estos datos con la base de datos, y en caso de que sean correctos el codigo lo lleva a la siguiente interface.

En esta parte de la interfaz grafica ahora le sigue la parte en la que en el combobox despliega la enfermedad. En el momento de que escoje la enfermedad y le pica en el boton lo que hara es desplegar la informacion sobre los sintomas y la medicina que necesita esa misma enfermedad.
Gracias por todo chavos.

Documentacion (Javadoc) POO

Bueno aqui esta la liga para bajar mi documentacion esta fue hecha manualmente y no con el Doxygen. Lo que haran es copiar el link y pegarlo, despues cerrar la primera ventana que les aparece por que no sirve, y donde dice Free Download le pican esperan 10 segundos y denle click a Download Now! y Boom! tienen mi documentacion

Patrones de diseno implementados POO

Bueno aqui le mostrare los 2 patrones de diseno que implemente al principio en mi proyecto.

public boolean escogerTipoReg(){
boolean resp=false;
Database Data = new Database();

System.out.print("\nYa esta registrado? si o no\n");
String t= Lectura.readString();

if(t.equalsIgnoreCase("si")){
resp=false;
}
if(t.equalsIgnoreCase("no")){
resp=true;
}
return resp;
}


Aqui usamos el patron singleton. Este patron lo explicare debajo de todo esto.


          public void mostrarEnfermedad(){
ArrayList gripa = new ArrayList();
gripa.add("Fiebre");
gripa.add("Dolor de cabeza");
gripa.add("Escalofrios");
gripa.add("Mareo");
gripa.add("Flujo nasal");
System.out.print("Sintomas de gripa:\n ");

Iterator itr = gripa.iterator();
while(itr.hasNext()) {

Object element = itr.next();
System.out.print(element + " \n");

}
}

Ahora el iterator.
Debajo de todo esto esta la presentacion que hice en clase acerca de los aptrones de diseno que pueden usar en su proyecto.

Taller POO Eventos Errores y Excepciones.


Bueno aqui van los codigos de errores eventos y excepciones.
En la excepcion marcamos que si no se pudo conectar a la base de datos, que despliegue un ERROR_MESSAGE cone l objetivo de saber que fue lo que paso, en caso de que si se conecto correctamente te envia un mensaje de informacion para que sepas que estas conectado correctamente.

 try
{
Class.forName(drv); cont = DriverManager.getConnection(db, user, pass); //Este es el que hace la conexión de los statement con MySQL
hector = cont.createStatement(); //Haciendo esto permites que se pueda utilizar para trabajar
//st.executeUpdate("DROP TABLE TABLA");
System.out.print("Conexion Exitosa\n");
}catch(Exception e) { System.out.println("No se pudo conectar a la B
ase de Datos");
JOptionPane.showMessageDialog(null,"No se pudo conectar a la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
}
}
Otra tanto excepcion como evento es cuando le damos ignresar usuario, aqui al momento de ingresar al usuario lo que haremos es crear una excepcion por si los datos que introduce son incorrectos, como poner variables flotantes dentro de varchars, o bien si no se pudo conectar a la base de datos.
public void insertarDatos(String usuario, String nombre, String pass, int peso, String sexo, String email) {
try {
hector.executeUpdate("INSERT INTO usuario (nombre, pass, usuario, apellido, peso, sexo) VALUES ('"+nombre+"', '"+pass+"', '"+usuario+"', '"+email+"', "+peso+", '"+sexo+"')");
System.out.println("Se insertaron los datos correctamente\n");
JOptionPane.showMessageDialog(null,"Se han introducido correctamente los datos", "Correcto", JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Los datos son incorrectos", "Error", JOptionPane.ERROR_MESSAGE);
System.out.println("No se pudieron insertar los datos\n");
System.out.println("INSERT INTO usuario (nombre, pass, usuario, apellido, peso, sexo) VALUES ("+nombre+", "+pass+", "+usuario+", "+email+", "+peso+", "+sexo+")");
}
}

Aqui podemos ver lo explicado con una captura de pantalla.





En esta ultima captura de pantalla podemos ver como al momento de llamar al evento ingresar, el usuario y contrasena marcado no esta en la base de datos, por eso lo que hace el codigo es llamar una excepcion y esa excepcion crearla con un mensaje, que el mensaje dice que no son correctos los usuarios y contrasenas. Este es el codigo de dicha pantalla para que vean como compare los datos.



public void compararDatos(String usuario, String pass){
try {
rs = hector.executeQuery("SELECT pass, usuario FROM usuario WHERE pass ="+pass+" AND usuario = "+usuario+"");
System.out.println("El nombre y usuario son correctos");
boolean x = false;
JOptionPane.showMessageDialog(null,"Muy bien amigito!", "Excelente", JOptionPane.INFORMATION_MESSAGE);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Error contrasena y usuario incorrecta", "Error", JOptionPane.ERROR_MESSAGE);
System.out.println("El nombre de usuario y/o contrasena es incorrecta");
boolean x = true;
System.out.println("SELECT usuario, pass FROM usuario WHERE usuario = "+usuario+" AND pass = "+pass+"");
}


}


Estas son algunas de mis excepciones, ahora vamos a habalr sobre los eventos que tengo pero ya con mas codigo, al ActionPerformed, esta funcion es para llamar a que el boton, o cualquier cosa que vaya a hacer algo haga algo. Este es un ejemplo de mi codigo.
  private class thehandler implements ActionListener {
/*Metodo actionPerformed
* aqui se ejecutaran los botones, y ver que hace cada boton cuando le das una accion
*/
public void actionPerformed (ActionEvent evento){
Database db = new Database();

if(evento.getSource() == ingresar){
Usuario = usuario.getText();
Password = password.getText();
db.compararDatos(Usuario, Password);
Enfermedad enfer = new Enfermedad();

}

else if (evento.getSource() == cancelar);
dispose();

}


Aqui podemos ver que en el action performed le damos un atributo que es el evento, el cual es otro atributo de ActionEvent, este sirve para en cuanto le des click a algo, boom te salga algo y eso es lo que sigue del codig, por ejemplo en este codigo estamos comparando los datos de los usuarios para ingresar al sistema.




En este evento de boton, ponemos que en cuanto le pique a un boton y escoja una cosa en el combo box el text area desplegara algo. Lo que desplagara es la medicina y los sintomas de la enfermedad que la persona escojio dentro del combobox.

private class thehandler implements ActionListener {

public void actionPerformed (ActionEvent evento){
bambam = combo.getSelectedItem();
texto = bambam.toString();
if(mevale[0] == null ? texto == null : mevale[0].equals(texto)){
area.setText(gripa);
area6.setText(gripaM);

}
if(mevale[1]== null ? texto == null : mevale[1].equals(texto)){
area.setText(migrana);
area6.setText(migranaM);
}
if(mevale[2]== null ? texto == null : mevale[2].equals(texto)){
area.setText(agruras);
area6.setText(agrurasM);
}
Medicina med = new Medicina ();

}
}
}



Bueno estas son pocos eventos y exepciones que tengo en mi proyecto, las demas las pueden ver en el codigo fuente que despues subire.

martes, 12 de julio de 2011

Herencia Taller POO


Bueno la herencia de mis clases significa mucho, ya que al implementar los GUI cambia mucho el codigo en si; empeze haciendo todo en codigo duro, pero ya vi que en el momento de estar programando con interfazes gaficas todo cambia demasiado. Aqui va lo que es herencia en mis clases mediante diagrama de clase.
Bueno aqui se puede ver la unica herencia que use, la use en UsuarioYaRegistrado hereda a Usuario ya que el usuarioyaregistrado es un usuario por ello se hereda; esta es solo l aunica que use pero en mi codigo fuente use un par de herencias a diferentes tipos de cosas tales como JFrame y esas cosas para usar las interfazes grafias.
Esto es necesario para implementar dentro de tu clase este tipo de cosas de interfazes ya que si no lo haces te marcara error y no te va a reconocer las cosas aunque importes las librerias de interfaces.

En algun momento pense en heredar otras cosas, como hacer otra clase llamada usuarionoregistrado, pero no lo vi como algo necesario ya que dentro de la clase usuario puse eso y me jalo exclente. Intente hacerlo para crear otra herencia, sin embargo al momento de hacerlo me di cuenta que despues la clase usuario no iva a hacer nada, solo iva a dar de alta las variables que usarian este tipo de herencia asi que mejor me quede como estaba. Al momento que vi necesitar otra interfaz grafica dije "pues hago la de usuarioyaregistado" al momento de hacer esta se crea otra interfaz, con el objetivo de que despues del registro aparesca la siguiente interfaz.

Bueno chavos muchas gracias que tengan buen dia.

domingo, 10 de julio de 2011

Diagrama de Clases POO

Bueno este es mi Diagrama de clases junto con el codigo autogenerado. Aqui estan tanto los metodos como los atributos de las clases qe lo requieren, tambien la dependencia que tiene el uno a otro por si hay algun par de dudas.

viernes, 8 de julio de 2011

Taller POO Especificacion Tecnica

Esta es mi especificacion tecnica. Si la quieren bajar ahi abajo esta el link. Gracias

Taller POO primera entrada (otra aplicacion)

Bueno olvide poner estas imagenes de otra aplicacion llamada Xampp, esta aplicacion me ayudara a poner en linea la base de datos que estare usando para mi proyecto.

Esta es la primera, aqui damos aceptar para poder ejecutar e iniciar la instalacion.


Aqui sera donde pondremos en el directorio, lo recomendado es el c:/ ya que ahi es un lugar muy visible para esta aplicacion que estaremos usando mucho
Aqui le damos aceptar, ya que estaremos usando MySql muuy seguido y no como un servicio.
Esta instalacion tarda alrededor de 10 minutos, el programa esta instalando lo necesario para abrir las bases de datos.

Despues de esto saldra una ventana donde le daran Finalizar.
Boom! ya tienen XAMPP para sus bases de datos.

Taller POO Esqueleto de mis clases

Bueno esto es solo el comienzo de mi proyecto, ya que en la definicion de clases es bueno obtener una iniciacion para ello. Aqui estoy dando solo un par de clases para que la entrada no sea tan nefasta al momento de leer todo.
public class Usuario {

public Usuario (String usuario, String pass, String nombre, String apellido, String peso, String sexo, String email){
// declaramos los atributos de la clase usuario
}
public boolean escogerTipoReg(){
//aqui escogemos si el usuario ya esta registrado o no
}

public Usuario registro(){
// si el usuario no se ha registrado, aqui es donde le preguntaremos su informacion
}
public void noregistro(Usuario u1){
//si el usuario ya esta registrado, usaremos los atributos del objeto tipo usuario llamado u1
}



Eso es todo para la clase Usuario, ahora veremos la clase enfermedad.

public class Enfermedad {
public Enfermedad (){
//aqui no necesitamos constructor ya que solo devolvera listas de las enfermedades
}
public void mostrarGripa(){
//en esta clase mostraremos lo que es la enfermedad gripa, pero esto fue solo para comenzar ya que por el momento estoy intentandolo hacerlo en base de datos.
}


Eso fue todo para la clase enfermedad, ahora veremos por ultimo la clase base de datos, ya que no pondre todo el esqueleto de mis clases por que solo seria un monton de codigo aburrido.

public class Database {
//declaramos la clase base de datos, ya que si la ponemos en otra clase solo seria igual, demasiado codigo.

public Database() {
//aqui es el constructor, lo que hara este constructor es hacer la conexion a la base de datos y te dira si fue exitosa o no.
}
}



Eso es todo por el momento sobre las clases, despues les hare llegar un poco mas.