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