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.

lunes, 27 de junio de 2011

Taller POO primera entrada

Bueno, este es mi blog durante la sesion de taller de programacion orientado a objetos, en veranos.
Mi nombre es Hector Tinajero Galarza

Las herramientas que usare para programar en java mi proyecto de POO en veranos son :

  • Emacs (para programar).
  • Lenguaje de programacion Java.
  • JDK (compilador del lenguaje de java).
  • Linux.
  • Los creadores de diagramas de clase como BOUML o UMBRELLO
  • XAMPP herramienta para las bases de datos
  • JDBC, otra herramienta para las bases de datos que permite la coneccion entre java y Mysql
  • Mysql, el tipo de base de datos que estare usando.
Para realizar mi projecto hago un uso extenso de estos tutoriales :

Para los patrones de diseno recomienda altamente esta pagina, ya que te viene todo lo que necesitas saber de ellos.
se me hacen que son los mejores ya que vienen de oracle, compania quien invento java.

En esos tutoriales, viene todo lo que pueden necesitar, tales como documentacion, introduccion a programacion orientada a objetos etc.. Sirve de mucho, se los recomendaria demasiado.

Instalacion de heramientas

Aqui va la instalacion de netbeans paso por paso, ya que es la herramienta que usare para programar estre proyecto.

1.-Al ejecutar el instalador aparecerá esta ventana:


Clic en en Siguiente. Aceptan los términos del acuerdo de licencia, clic en Siguiente y aparece la siguiente ventana

Seleccionan la ruta donde se va a instalar NetBeans y seleccionan la ruta del JDK™ con la que trabajará NetBeans. Clic en Siguiente y luego clic en Instalar

Y luego clic en Terminar.
De esta forma ya tenemos instalado en nuestro equipo NetBeans 6.5 en español


Para finalizar esta entrada, demostrare mi primer codigo con una clase y 2 objetos.





public class Triangulo { //declaramos la clase triangulo
private int base; // variable de tipo base
private int altura; // variable de tipo int altura
private float area; // variable de tipo flotante area

public Triangulo (int base, int altura ){ //creamos el constructor
this.base = base;
this.altura = altura;
}

public void areaTriangulo() { //funcion donde hacemos la operacion
area=(base*altura)/2;

}
public void imprimeArea () { //fuincon donde imprimimos el are del triangulo
System.out.print("El area de tu triangulo es: "+ area);
}



public static void main (String[] args){ //metodo main
Triangulo triangulo1, triangulo2; //creacion de 2 objetos
triangulo1 = new Triangulo(10,5); // atributos de los 2 objetos
triangulo2 = new Triangulo (8,5);

triangulo1.areaTriangulo(); // de esta manera hacemos qe calcule el are del triangulo 1
triangulo1.imprimeArea(); // y de esta manera imprimios el area del triangulo


}

}

martes, 17 de mayo de 2011

Presentacion Clase Final

Presentación1
View more presentations from htinajero.


Aqui esta mi presentacion, comenten en mi blog lo que ustedes quieran referente a mi presentacion espero les haya gustado.Gracias

viernes, 13 de mayo de 2011

GUI [Clase]






La interfaz gráfica de usuario, conocida también como GUI es un programa que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos grá
ficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina computador.

Estos GUI lo que hacen es que mediante una interfaz, el usuario o programador puede interactuar con el mismo ordenador. Esto se logra mediante una serie de botones, o bien acciones y eventos que realiza la computadora para poder lograr estas acciones.
En esta entrada hice 3 imágenes en PNG, pero no se como subirlas en este blog. Lo que hice mediante estos GUI fue que desarrollar asi como un diseño, este diseño fue para poder saber como hacer mi propio proyecto. Mediante paneles y JFrames, se hace esto, ya que es muy sencillo pero el chiste es que tienes que determinar bien como son tus paneles y como los vas a dividir.
La parte clave de esto son los comandos que le darás a la interfaz para que se comunique con el usuario.

Al principio queria dar el JFrame para mostrar como el paciente se va a curar, de esta manera podemos ver que mediante un texto no editable, y unas palabras pre-programadas el mismo programa le dara a conocer su medicina natural. Claro, como pueden ver en la parte debajo tuve que poner que consulte a su medico, ya que no es ninguna cura, sin embargo puede ayudar al sintoma.

Lo que hice es un JFrame con 1 solo panel, que preguntaba Usuario y Contrasena, con 3 botones debajo, estos son Ok , cancelar y nuevo usuario.

Despues use el boton de nuevo usuario para preguntarle los datos a la persona importantes o bien informacion necesaria para poder tener un resumen del paciente.
Por ultimo mediante una JList, di a conocer las partes del cuerpo, esto es para preguntarle al usuario que parte del cuerpo le duele, y junto a eso le pregunto yo al usuario si quiere una analgesico, o bien un medio natural para curar su propia enfermedad. Esto sin las imagenes no es mucho, sin embargo es algo, gracias doctora que este bien hasta luego.

Esto fue solo una introduccion de lo que son los GUI ya que si subo todos los GUI ocuparia una gran cantidad de imagenes, y ediciones d texto etc.. La clave de esta entrada es para que ustedes puedan ver masomenos como va el diseño de lo que es los GUI. Al igual si esto es revisado despues del domingo, puedo subir un poco mas de cosas.

Por cierto, para taller no subire nada creo que ya la perdi esa materia, sin embargo seguire asistiendo a clases y todo eso para seguir aprendiendo, y tambien me queria preguntar si si se abrira en verano el taller de programacion? Gracias doctora que tenga buen dia.

miércoles, 4 de mayo de 2011

Sistemas Distribuidos [clase y taller]

aqui va algo (son las 5.26 am no pude acabar pero maniana antes de las 12 o 1 pm esta listo)

miércoles, 13 de abril de 2011

Pruebas Unitarias (Clase)


(Intente instalar el JUNIT pero si lo baje y todo el problema es que no supe como usarlo en linux, dice qe se pued emediante eclipse pero tampoco lo se usar)
Bueno esto es para explicar las pruebas unitarias mediante diagramas y definiciones.

Prueba Unitaria
En programación, una prueba unitaria es una forma de probar el correcto funcionamiento de una parte de código. Esto sirve para asegurar que cada uno de las partes funcione bien por separado.
Esto se hace para despues con las Pruebas de Integracion, se podra asegurar que el progr
ama funcione bien.
La idea es escribir casos de prueba para cada función no trivial o método en el módulo de forma que cada caso sea independiente del resto.

Para que una prueba unitaria sea buena debe tener lo siguiente:

  • No debería requerirse una intervención manual. (Esto es especialmente útil para integracion continua.)
  • Deben cubrir la mayor cantidad de código(es decir en partes casi todo el codigo).
  • No se deben crear pruebas que sólo puedan ser ejecutadas una sola vez.
  • Al momento de ejectuar un codigo, no debe de ejecutar ni una otra parte de codigo.

Aunque estos requisitos no tienen que ser cumplidos al pie de la letra, se recomienda seg

uirlo

s o de lo contrario las pruebas pierden parte de su función.


Aqui esta imagen resume todo lo que es una prueba unitaria.


Cuales son las ventajas de las pruebas unitarias:


  1. Las pruebas unitarias hacen que la estructura de codigo sea mejor, es decir, que al momento de separar el codigo en partes para ejecutarlo, el usuario hace que el codigo se vea de mejor manera y asi se hace mas simple.
  2. Al momento de ejecutar el codigo, se puede documentar, y esto ayuda a tener un orden y un historial para cada parte de codigo ejecutable.
  3. Dado que la única interacción entre los casos de prueba y las unidades bajo prueba son las interfaces de estas últimas, se puede cambiar cualquiera de los dos sin afectar al otro, a veces usando objetos mock (estos son los objetos simulados de prueba, esto funciona exactamente en un programa como los monos esos que se usan en choques automovilisticos) para simular el comportamiento de objetos complejos.
  4. Los errores están más acotados y son más fáciles de localizar

Desventajas
La desventaja mas obvia sobre las pruebas unitarias es que al momento de ejecutar todo el codigo en partes, el proagrama SI, puede encontrar muchos errores individualmente, pero que tal entre los paquetes, o cuando un codigo llama a otro? estos errores solo pueden ser identificados al compilar el paquete completo y por ende no podrian ser detectados por las pruebas unitarias.

Aqui otro ejemplo mas sencillo de las pruebas unitarias.


jueves, 7 de abril de 2011

Errors, Exceptions, Events (Taller)

Aqui se puede ver la exception en cuanto la pw es falsa, o bien no existe, y es ahi cuando el do lo controla mientras sea falso. Cuando este es true, pues avanza a la siguiente fase.


package Projecto;

public class ventana {

void Usuario(){
System.out.print("Nombre de usuario");
Scanner user =new Scanner (System.in);

System.out.print("Contrasenia");
Scanner pw =new Scanner (System.in);
do
{
try
{
password.input(pw);
pw = false;
}
catch (PasswordNotFoundException pw)
{
PasswordNotFoundException.printStackTrace();
System.out.println("Vuelva a ingresar contrasena");
}
}while(pw = true);
}
}


Aqui es otra excepcion buscando una connexion a internet, esto se puede ver como un error o bien una excepcion, ya que esto solo depende del usuario, si la computadora del usuario tiene internet el programa puede avanzar, en caso de que no pues no podemos hacer nada por el.


package Projecto;

public static boolean isInternetReachable()
{
try {

InternetConnection IC = IC.getByName("....");

if(IC== null)
{
return false;
}

} catch (NotConnectedException NCE) {
NCE.printStackTrace();
return false;
}

return true;
}



Bueno esto es una breve explicacion sobre las excepciones y errores en mi proejcto, alguna duda puede llamarme o bien comenten en mi blog, creo que es mas facil.

miércoles, 6 de abril de 2011

Errors, Exceptions, Events (clase)

Bueno, hola que tal primeramente, ahora les voy a hablar sobre los errores excepciones y eventos que puede haber en mi software.
Primero para definir que es cada uno de ellos, explicare Brevemente que es cada uno de ellos a mis palabras.

Exception: una excepcion, es cuando el programa obtiene un error pero que se puede corregir, es decir, al implementarlo en mi projecto se puede decir que al momento de que el usuario quiera conocer una medicina natural como por ejemplo de la gripa, necesita un te de miel con oregano, pero este usuario no le gusta o es alergico a esta clase de medicamento natural, bueno aqui es cuadno entra la Exception, y tratamos de convencer al usuario de que otro metodo es igual o menos efectivo en contra de esta (gripe) enfermedad.

Error: un error se crea cuando el usuario pone de manera incorrecta la informacion, es decir, si el usuario pone una contrasena incorrecta, ahi es cuando se crea el error. En el caso de mi software puede ser eso mismo, cuando un usuario ingresa de manera incorrecta ya sea su nombre de usuario o su contrasena, o bien una enfermedad que no se conoce, o bien, que el usuario haya escrito el termino incorrecto, el programa no puede hacer nada para arreglarlo, si no el usuario tiene que determinar de manera correcta su error.

Evento: Un evento se crea la mayoria de las veces cuadno hay interaccion entre el usuario y el programa, por ejemplo, cuando un usuario ingresa el tipo de enfermedad que necesita, el programa le despliega cierta informacion; ahi mismo es donde estamos creando un evento. Es decir, cuando el usuario hace una accion, y el programa le responde con otra.

Excepciones que pueden aparecer en mi progrma:
  • Cuando el usuario es alergico, o bien no tolera cierto medicamento natural medicado.
  • Cuando el usuario ingresa, uno o dos mas sintomas que parecen ser de la misma enfermedad; ahi es cuando el programa debera pedir una especificacion para poder realizar su trabajo.
  • Cuando el programa no puede determinar si es una enfermedad cronica, o bien si es una enfermedad pasajera.
Errores:
  • Cuando el usuario ingresa su contrasena de manera incorrecta.
  • Cuando el usuario ingresa su nombre de usuario de manera incorrecta.
  • Cuando el usuario ingresa algun tipo de enfermedad no guardado en la base de datos.
  • Cuando el programa no puede determinar que tipo de medicamento puede ser mas efectivo. (Esto solo se da en cuanto el usuario ingresa uno o mas tipos de enfermades.)
  • Otro error es cuando el usuario no tiene conexion a internet, pues el programa no podra hacer nada ya que estaremos conectados directamente a una base de datos en internet.


Aqui un pequenio diagrama sobre excepciones y errores.
Eventos:
  • Un evento posible es cuando el usuario determinara donde es que le duele, o bien se siente mal.
  • Otro evento puede ser cuando el usuario determina ya su medicina, para despues que el programa guarde o bien solo ignore los datos ya desplegados.
  • Cuando el usuario cambie de ventana en el momento de que ya haya escogido su enfermedad, o bien su medicina; para ver a donde se dirige, ya sea si al inicio, o bien si quiere continuar con la busqueda de informacion.

jueves, 31 de marzo de 2011

Design Patterns

Bueno aqui les demostrare cuales son los diseños de patron que necesito usar o al menos que intentare usar en mi proyecto.
Para empezar lo que segun yo necesitare es el Builder, por que necesitare este diseño de patron? Bueno primero tenemos que definir que es este diseño. Este diseño lo que hace es que al momento de crear un objeto complejo, lo hace paso a paso de una manera mas simple; esto de que me ayuda? pues al momento de crear el objeto cuerpo, y todos sus derivadas partes, pues puedo crearlo de manera sencilla paso a paso crear cada parte del cuerpo a mostrar.

Otro diseño de patron que estoy dispuesto a usar es la de Adapter, esta clase uno de sus beneficios que me van a ayudar mucho es el hecho de que hace que clases sin relacion puedan trabajar juntas de una manera mejor. Esto me puede ayudar por que; bueno por qe mis clases en si no estan muy relacionadas, como la parte del cuerpo, las enfermedades y la medicina, lo que tienen de relacion es que una parte del cuerpo tiene una enfermedad y esta enfermedad tiene una medicina, pero con el mismo Adapter puedo relacionarlas mejor y asi poder trabajar con su conjunto de una manera mejor.

Otro que creo que puedo usar es el Facade, este dice en internet que se usa para una mayor seguridad en cuanto a pogramas de base de datos, esto me puede ayudar en el que mi proyecto usara una gran base de datos, en cuanto a medicinas y enfermedades, lo que no queremos es darle al usuario mas cosas información a conocer ya que cualquier dato de mas puede afectar a la salud del cliente.

Creo que en mi projecto puedo implementar muchas de estas, pero bueno al menos pondre unas 5, otro diseño es el Flyweight, este diseño dice que es agil para los software con iconos que representan objetos, estos iconos seran los que representaran las partes del cuerpo que pienso poner dentro de mi software.

Creo que memento es otra de las que puedo usar, ya que en este patron de diseño dice que guarda informacion para usarla despues, esta informacion sera la que yo necesitare con el objetivo de guardar cada informacion de usuario, cada enfermedad que ha tenido para despues poder mostrarsela a el y tener un historial de ello.

Patrones de Diseno

Bueno aqui les dejare el patron de diseno ya hecho que llevo en mi projecto levemente explicado.

Aqui es el patron de diseno Builder, el cual se encarga de construir un objeto complejo de manera sencilla haciendolo parte por parte.

Esta es la clase construction, que la llame asi como la cual construye las partes del cuerpo.

class Construction {
//force the order of building process
public void construct(Body b) {
b.buildWaistDown();
b.buildTorso();
b.buildArms();
b.buildHead();
}
}

//set steps for building a body
abstract class Body {
protected Body body = new Body();

protected String showProgress() {
return body.toString();
}

abstract public void buildWaistDown();
abstract public void buildTorso();
abstract public void buildArms();
abstract public void buildHead();
}


Esta es la clase cuerpo la cual es donde se encarga de hacer todas las partes pequenas del cuerpo, en ves de hacerlo tan general,esta clase se encarga de construir los detalles del cuerpo.


class Cuerpo extends Body {

public Cuerpo(String features) {
body.setType(this.getClass() + " " + features);
}
public void buildWaistDown() {
//doLegs()
//doHips()
//doFeet()

body.setProgress("Waist Down is done");
}

public void buildTorso() {
//doBelly()
//doChest()
//doLowerBack()
//doBack()
body.setProgress("Torso is done");
}

public void buildArms() {
//doLeftArm()
//doRightArm()
//doArms()
body.setProgress("Arms are done");
}

public void buildHead() {
//doHead()
//doFace()
body.setProgress("Head is under going");

}
}


Aqui determino la clase Body, esta clase la hago para crear los tipos de datos, y los metodos a usar dentro de las otras clases.

Class Body {
private String type = null;
private List features = new ArrayList();

public Body() {

}

public Body(String type) {
this.type = type;
}

public void setType(String type) {
this.type = type;
}

public String getType() {
return type;
}

public void setProgress(String s) {
features.add(s);
}

public String toString() {
StringBuffer ff = new StringBuffer();
String t = type.substring(6);
ff.append(t + "\n ");
for (int i = 0; i < features.size(); i ++) {
ff.append(features.get(i) + "\n ");
}
return ff.toString();
}
}

Aqui es o mas sencillo, aqui es donde se crea el main dentro de la clase builder


class Builder {

public static void main(String[] args) {

Body one = new Cuerpo("Head, Torso, Waist Down, Arms");

construction const = new construction();
construction.construct(one);
System.out.println("Check body building progress: \n");
System.out.println(one.showProgress());
}
}



Bueno este es un ejemplo sobre los patrones de diseno usados en mi trabajo, si tienen alguna duda pueden escribirlo en mi blog. Si quieren ver mas patrones en mi blog, pueden esperarse a semana santa :) hasta luego.

miércoles, 30 de marzo de 2011

Avance Parcial



Bueno aqui les demuestro mi avance parcial, mi unico problema fue qe no pude correr el main por que tuve unos problemas, sin embargo todo me pudo compilar bien y bonito. Pero les explicare que es lo que va con el codigo paso a paso de una manera sencilla para que todos puedan entender.

Bueno en primer lugar, mi metodo main lo agregue en la clase ventana, ya que sera la primera en ser ejecutada. Sin embargo aun no uso nada de la clase ventana por que eso ya es usando interfaces graficas y no lo hemos aprendido aun.

 public static void main(String[] args) {

System.out.print("Inicializando Programa");
usuarioregistrado ur = new usuarioregistrado();
ur.Registro();
System.out.print("Guardando....");

Enfermedad enfer =new Enfermedad();
enfer.tipoEnfermedad();

}

Aqui podemos ver el metodo main; primero empezamos llamando el metodo "Registro" en la clase usuarioregistrado, para registrar al usuario que ingresara al projecto.
   void Registro (){
System.out.print("Nombre del usuario a registrar");
Scanner n =new Scanner (System.in);

System.out.print("Contrasenia de cuenta");
Scanner c =new Scanner (System.in);
System.out.print("Edad");
Scanner e =new Scanner (System.in);

System.out.print("Sexo");
Scanner s =new Scanner (System.in);
System.out.print("Peso");
Scanner p =new Scanner (System.in);

System.out.print("Gracias por su registro");

}


En el metodo registro se puede ver como empezaremos a registrar todos los datos del paciente a registrar. Ahi mismo en el codigo puse la linea "Guardando.. " para darle a indicar al usuario que sus datos estan siendo guardados.Despues llamamos al metodo tipoEnfermedad" dentro de la clase "Enfermedad", esto para ver que enfermedad tiene el paciente y cuales seran sus medicinas a utilizar.

void tipoEnfermedad(){

String enf = "gripa";medicina med = new medicina();
System.out.print("Que enfermedad tiene?");
System.out.print(enf);

if(enf == "gripa") {

System.out.println("La medicina de la gripa es =
");System.out.print("Next");
System.out.print("Reposo");System.out.print("Te de Sauco");
System.out.print("Gengibre");
}
}

Aqui en el codigo demostramos al usuario que cual es su enfermedad, de manera directa yo puse gripa, con ese if determinamos que si el usuario escribe gripa, le desplegara la solucion a su enfermedad, las cuales esas soluciones son naturistas. Pude haber puesto otro if para ver si el usuario pone migrana, pero aqui demuestro de manera mas simple lo que corre el metodo main.
Aqui les muestro el hecho de que mi projecto compila pero con un error al momento de tratar de correrlo con el momento java ventana; aun no se por que es pero si lo averiguo hoy ya les subo la terminal corriendo.




Aqui podemos ver que dentro del package projecto estan todas mis clases, las cuales en la terminal he compilado con el comando javac. Aqui se los demuestro para que vean que no miento :p; ademas ahi pueden ver el error en el que me sale al tratar de compilarlo.
Gracias y saludos a todos, abierto a recomendaciones.

jueves, 24 de marzo de 2011

Presentacion de DIagramas UML

Aqui les dejo mi presentacion y mi explicacion de los diagramas UML, este es el link:

jueves, 17 de marzo de 2011

Diagrama de Secuencia y de Clase


EL DIAGRAMA VIEJO ESTA DEBAJO DE ESTA ENTRADA PARA QUE LO PUEDAN COMPARAR

Bueno en este momento agregue un poco mas de cosas a mi diagrama UML, también modifique unas cosas dentro de el, como pueden ver en el primer diagrama UML tenia una herencia que no estaba correcta, ahora modifique por los diamantes, que estos significan que por ejemplo en mi diagrama, el cuerpo TIENE una parte de cuerpo el cual esta relacionado con enfermedad ya que cada parte de cuerpo tiene una enfermedad. Lo mismo con enfermedad, la enfermedad tiene medicinas, y cada enfermedad tiene su propia característica.
Ademas pueden ver que agregamos una nueva clase llamada medicina, ya que antes no la tenia y ahora vi que era escencial, la tuve que adecuar a mi projecto ya que de eso se trata el mismo.

Ahora dentro del codigo generado lo que ha cambiado fueron primero.

Primero lo que vi dentro del codigo al haber cambiado fue en la clase Cuerpo


private void setPrivadas ( boolean newVar ) {
privadas = newVar;
}

private boolean getPrivadas ( ) {
return privadas;
}

Dentro de esta clase, el Umbrello creo las cosas de new var, el cual yo no tenia conococimiento de ello. Supongo que estamos tomando como privadas una nueva variable, la cual tendra dentro de ella toda el area que involucra las partes privadas para ligarlas a enfermedad.

Ahora vi un cambio en la clase Usuario


private void setRegistro ( boolean newVar ) {
Registro = newVar;
}

/**
* Get the value of Registro
* @return the value of Registro
*/
private boolean getRegistro ( ) {
return Registro;
}

/**
* Set the value of Noregistro
* @param newVar the new value of Noregistro
*/
private void setNoregistro ( boolean newVar ) {
Noregistro = newVar;
}

/**
* Get the value of Noregistro
* @return the value of Noregistro
*/
private boolean getNoregistro ( ) {
return Noregistro;
}

En este codigo lo que pueden ver es que implemento de la misma manera que yo los metodos, sin embargo agrego de neuvo lo de new var ademas de haberle puesto un return dentro de cada metodo.

Por ultimo, dentro de la clase usuario registrado, y en otras clases tambien esto fue lo que paso.

/**
* Class usuarioregistrado
*/
public class usuarioregistrado extends Usuario {

//
// Fields
//


//
// Constructors
//
public usuarioregistrado () { };

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void Registro( )
{
}


}


En esta clase podemos ver que los metodos son correctos, sin embargo el codigo que yo habia implementado dentro de esta clase fue borrado por umbrello. Pero creo que lo que quiere umbrello es que el te crea las bases, y nosotros hacemos lo demas dentro del codigo generado, es decir, umbrello te da las bases para que tu prosigas con tu projecto de una manera mejor.

Habia olvidado, tambien dentro de las herencias tontas que hice, umbrello las elimino y ya estan correctas.


martes, 15 de marzo de 2011

Borrador Diagrama

miércoles, 23 de febrero de 2011

Presentacion Clase

Hola que tal, aqui pueden comentar lo que quieran acerca de mi presentacion. DAqui la presentacion de mi projecto


* Presentacion
* Introduccion
* Funcionalidad
* Clases
-Cuerpo

-Caracteristicas
*Enfermedad
-Persona

-Sintomas

-Usuario
*Registrado
*NoRegistrado

Especificacion Tecnica (Taller)

Especificación Técnica
Proyecto POO
Software Medicinal

1.Descripción de la solución que provee mi software
  • Un historial de enfermedades crónicas que debe guardar en una base de datos con objetivo de describirle al usuario del cómo y cuáles son sus enfermedades del pasado.
  • Darle al usuario medicinas naturistas, con el objetivo de no fomentar la automedicación.
  • Dar una solución rápida a enfermedades que requieren alguna especie de té de hierbas o etc...

2.Especificaciones Técnicas

1..Aspectos funcionales
  • El software debe tomar los datos del usuario y guardarlos, en caso de que el usuario quiera ser registrado, del otro caso solo mantendríamos un conteo de los usuarios no registrados.
  • El software debe realizar su función de manera eficiente, con el objetivo de no tardar mucho al proveer un tipo de curación naturista.
  • El software debe de tener una entrada en usuario y contraseña, con el objetivo de que los usuarios ya registrados puedan acceder a su cuenta y revisar sus enfermedades antiguas o bien sus soluciones a enfermedades antiguas.
  • Deberá ser actualizado constantemente para añadir diferentes soluciones médicas naturistas para diferentes enfermedades.
  • Generar listas de los usuarios guardados y cada cuando usan el software para su interés.


2.Aspectos Operativos
  • El software debe ser adaptable para las necesidades de ahorita, en cuanto a las medicinas que usemos las más eficientes sin embargo de menor precio.
  • El software debe contar con seguridad en cuanto a Usuario/Contraseña.
  • El creador del software debe proveer un manual del programa para que no existan problemas al utilizarlo.


3.Aspectos Técnicos
  • El software debe ser adaptable para celulares Smartphone, o Ipad, o computadoras con sistema operativo MacOS.
  • El software deberá implementar MySQL, Emacs, sistema Android, interfaz interactiva en la cual el usuario escogerá que parte del cuerpo le duele.

4. Visión Lógica
  • En la clase Usuario, sus hijos son 2: Usuario y Usuarionoregistrado, la clase usuario es para los clientes que se querrán registrar dentro del software, y la otra clase pues no.
  • La clase enfermedad, aquí es donde damos a definir las enfermedades junto con sus características o bien síntomas al tener esa misma enfermedad, esto lo hacemos con el objetivo de poder ligar facilmente dolores o tipos de síntomas con la misma enfermedad.
  • La clase cuerpo, donde se desplegara las partes del cuerpo que el usuario podrá escojer en el cual nos dirá cual le duele y cual no.



5. Aspectos sobre el servicio.
  • El programador dará actualizaciones cada cierto tiempo para corregir errores y verificar que los procesos sean correctamente ejecutados.
  • La metodología de instalación del software debe ser correctamente explicada, para no darle al usuario dificultades al instalar el software.


Además aquí les dejo mi especificación técnica de mi projecto:

http://rapidshare.com/files/449569209/Especificaci__n_T__cnica.pdf

miércoles, 16 de febrero de 2011

Javadoc [Taller]

Aqui esta mi documentacion, mientras que abajo doy a conocer los codigos que hicieron posibles esta documentacion.

Documentacion: http://champs.site90.net/hector/Projecto/


package Projecto;

import java.util.List ;
/** Class Persona
* This class will allow the person to see the body of the person or the list that will be shown to make the user choose his diseases part.
*/

public class personajavadoc extends Jframe {
/**
@param private Cuerpo c = This is what will be shown in the window, in this case the body
@param private Sintomas si == This is what will be shown in the window, in this case the symptoms of the diseased.
*/



}



}
Aquí defino mi primer javadoc mediante la clase persona en la cual se podrá desplegar la lista de partes del cuerpo junto con los síntomas del paciente a tratar.
package Projecto;

import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
/**Class Caracteristicas
*In this class I'll show you what are the caracteristics of every sample of disease or symptom in which this list will be shown as characteristic with of which or what disease does the user of this application will have.
*/

public class caracteristicasjavadoc extends JFrame {
/** Here I'll explain what methods I use in caracteristicas.java
*Here's the list of parameters:
*@param gripa.add =("Fiebre alta") this is a symptom of Gripa .
*@param gripa.add =("Escalofrios") this is a symptom of Gripa .
*@param gripa.add =("Mareo") this is a symptom of Gripa .
*@param gripa.add =("Debilidad") this is a symptom of Gripa .
*/
}

Aqui definimos la clase caracteristica, que despleiga una lsita sobre las caracteristicas de las diferentes sintomas en el cuerpo de diferentes enfermedades, en este caso puse el ejemplo de gripa ya que esos 4 sintomas pueden ser diferentes senales de la enfermedad gripa.



package Projecto;

/** Class Enfermedad
*This class enfermedad is a list of different diseases in which the user of the application will get to choose one or more diseases he has at the moment to make easier the program to search a natural medicine.
*/

public class enfermedadjavadoc extends JFrame { // nombrar la clase igual que el archivo
// atributos a mostrar
/** Here are the different parameters in my class:
@param private boolean gripe = sera la lista posible a escojer al usuario sobre que enfermedad tiene
@param private boolean migrana = diferente enfermedad a escojer
@param private boolean deshidratacion = diferente enfermedad a escojer
@param private boolean gastritis = diferente enfermedad a escojer
@param private boolean catarro = diferente enfermedad a escojer

*/
}

Aqui toca definir la clase enfermedad, que desplegara la lista de enfermedades posibles del paciente que podra escojer o bien las que tiene en el momento debido a otros sintomas
Este es el primer avance de mi trabajo mediante la documentacion, tengo todas las clases compiladas, pero creo que seria inutil mostrar todas las clases ya compiladas mediante el .javadoc.

Gracias

Javadoc (Clase)

Hola que tal, aqui les dejo la importancia sobre el javadoc dentro de nuestro proyecto.
Bueno lo que es el javadoc en si, consiste en la documentacion de clases en java. Esto nos ayuda para guardar nuestro proceso en el trabajo, ademas de la facilidad del encuentro de errores en tu mismo programa. Al momento de compilar en javadoc, el codigo puede estar bien, sin embargo no sabes si te das a entender; lo que hace javadoc, es que te da a entender que es lo que haces, cuales son las librerias arriba y abajo, cuales son las clases padre e hijos.

Javadoc tambien nos da la facilidad de crear Aplicaciones para crear Doclets y taglets, que nos permite analizar la estructura de una aplicacion Java. Asi es como JDiff puede generar informes de lo que ha cambiado entre las versiones anteriores de una aplicacion.

La explicacion de tus clases se pueden poner dentro de los metodos o atributos, y tambien clases. Esta es la manera de poner los comentarios dentro del JavaDoc.

Para generar aplicaciones con Javadoc se deben de usar etiquetas de HTML o ciertas palabras escritas despues del caracter "@". Estas etiquetas se escriben al principio de cada clase, atributo o metodo dependiendo del objeto que se desee analizar, mediante un comentario que se inicia con "/**" y acabado con "*/".


Esta es una tabla de informacion que le puedes añadir a un Javadoc:

TagDescripciónUsoVersión
@authorNombre del desarrollador.nombre_autor1.0
@deprecatedIndica que el método o clase es antigua y que no se recomienda su uso porque posiblemente desaparecerá en versiones posteriores.descripción1.0
@paramDefinición de un parámetro de un método, es requerido para todos los parámetros del método.nombre_parametro descripción1.0
@returnInforma de lo que devuelve el método, no se puede usar en constructores o métodos "void".descripción1.0
@seeAsocia con otro método o clase.referencia (#método(); clase#método(); paquete.clase; paquete.clase#método()).1.0
@throwsExcepción lanzada por el métodonombre_clase descripción1.2
@versionVersión del método o clase.versión1.0

Me gustaria darles un ejemplo aleatorio, pero creo que es mejor darles un ejemplo con uno de mi projecto en la siguiente entrada.

Gracias.