Mostrando entradas con la etiqueta código. Mostrar todas las entradas
Mostrando entradas con la etiqueta código. Mostrar todas las entradas

15 abr 2011

Implementación de pruebas unitarias

Taller de Programación Orientada a Objetos 
Semana 11 

Implementación de las pruebas unitarias en código documentado y un reporte de los resultados de su ejecución.

31 mar 2011

Aplicación de patrones de diseño

Taller de Programación Orientada a Objetos 
Semana 9 

Incorporación de patrones de diseño en la implementación del proyecto.

24 mar 2011

Demostración de avance parcial

Taller de Programación Orientada a Objetos 
Semana 8 

Para esta semana les muestro el avance que tengo en mi proyecto, les recuerdo que se trata de un programa que te permita crear gráficas con facilidad de ciertas bases de datos. Sinceramente no llevo muy avanzado mi proyecto, hasta el momento solo hace cosas mediante la terminal, y el aspecto gráfico que sin duda es de lo más importante dado a que se requiere visualizar gráficas, lo iré incorporando poco a poco.

Sigo manejando las clases Menu, Registro, Nuevo, Graficar, Barras, Histograma y Pastel. Donde Menu es la clase principal del programa.

En la siguiente imagen les muestro como están los archivos dentro del paquete proyecto:


Ahora desde el terminal compilare los archivos:
esteban@esteban:~/Documents$ javac proyecto/*.java


Y ahora podemos ver que ya se han creado los archivos .class para que java pueda interpretar el código.


Ejecutando el programa desde el terminal se vería algo así:
esteban@esteban:~/Documents$ java proyecto.Menu p


Me falta ponerle más opciones al menú y agregarle la edición a los parámetros de las gráficas, que pronto estaré agregando, mientras tanto solo es muestra de que ya se logra ingresar de una clase a la otra, y escribe algo en terminal para indicarnos que es lo que se debería de estar haciendo.

Les dejo unos fragmentos del código:
public class Menu {

 public Menu() {
  BufferedReader entrada = null;

  try {
   System.out.println("Seleccione una opcion:");
   Nuevo n = new Nuevo();
   Registro r = new Registro();

   System.out.println("Selecciona el registro
      que quieres graficar:");
   BufferedReader in = new BufferedReader(
     new InputStreamReader(System.in));
   String linea = in.readLine();
   int x = Integer.parseInt(linea);
   if (x == 1) {
    System.out.println("Seleccionado registro 1\n");
    Grafica gra = new Grafica();
    System.out.println("Deseas guardar la grafica: Si/No\n");
   }

  } catch (Exception e) {
   System.err.println("Error");
   System.exit(-1);
  } finally {
   if (entrada != null) {
    try {
        entrada.close();
    } catch (Exception ex) {}
   }
  }
 }

 public static void main(String[] args) {
  System.out.println("Esta es la ventana del Menu\n");

  Menu m = new Menu();

  System.out.println("Cerrar programa\n");

  return;
 }
}
Es la clase Menu, donde la función main crea el mismo Menu, y este es el que nos permitirá ver las opciones disponibles en la ventana principal del programa.

 public Nuevo() {
  try {
   FileWriter fw = new FileWriter("proyecto/nuevo.txt");
   BufferedWriter bw = new BufferedWriter(fw);
   PrintWriter salida = new PrintWriter(bw);
   salida.println("Esteban");
   salida.println("Cecilia");
   salida.println("Roberto");
   salida.println("Juan");
   salida.close();

   System.out.println("Se creo un nuevo archivo\n");
  } catch(java.io.IOException ioex) {
   System.out.println("Se presento el error: " +
    ioex.toString());
  }
 }

 public void agregarColumna() {
 }

 public void visualizar() {
 }
En esta clase Nuevo para un nuevo registro he hecho que el programa cree una lista de nombres simple pero desde el mismo programa, pero esa no es la idea, ya que el usuario es el que ira agregando esa información.

 public Registro() {
  System.out.println("Entra a Registro");
  System.out.println("Ver registros...\n");

  File archivo = null;
  FileReader fr = null;
  BufferedReader br = null;

  try {
   System.out.println("1. Registro de nombres");
   archivo = new File("proyecto/nuevo.txt");
   fr = new FileReader(archivo);
   br = new BufferedReader(fr);
   String linea;
   while((linea = br.readLine()) != null)
    System.out.println(linea);
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
Nos lee los datos que están contenidos en el archivo creado por Nuevo, y es aquí donde se comprobará que bases de datos se tienen disponibles, y poder mostrarlas al usuario.

Es un tanto sencillo pero espero que vaya tomando forma.

17 mar 2011

Código autogenerado y comparación

Taller de Programación Orientada a Objetos 
Semana 6 

Ahora es momento de mostrarles el código autogenerado a partir del diagrama de clases creado desde Umbrello que como ya mencione es el programa que decidí usar para la creación de diagramas UML.

En la entrada anterior lo que realicé fue generar el diagrama a partir del código que tenía hasta ese momento, ahora haré lo contrario, crear el diagrama de clases y a partir de ello que Umbrello me genere el código.

Esta captura es la ventana del programa donde cree mi diagrama de clases, muy parecido a lo que me resulto cuando genere el diagrama a partir del código.


Para generar el código, hay que asegurarnos de seleccionar el lenguaje al que deseamos crearlo. Para esto vamos al menú Code, en la opción Active Lenguage seleccionamos nuestro lenguaje en mi caso es Java.


Ahora en el mismo menú Code encontramos la opción para generar el código que es Code Generation Wizard.


Después se nos desplegará una ventana para seleccionar las clases que deseamos que se genere código.


Al dar en siguiente nos muestra una ventana como la siguiente donde podemos cambiar nuevamente el lenguaje en el que deseamos el código, así como la ubicación en donde serán guardados los archivos.


Por último se nos muestra en resumen las clases y el estado en que se encuentra cada una, es decir si ya se genero código o no. Para generarlo damos clic en Generate y listo.


Si vamos a la carpeta en donde decidimos que se guardaran los archivos con el código generado, encontraremos los archivos con extensión java, los cuales podemos abrir para observar el código tal y como lo genero Umbrello.


Aquí les dejo la imagen del diagrama de secuencia:


Para el diagrama de secuencia use una página web que te facilita la creación del mismo mediante líneas de código simple, aquí les dejo el enlace:
Web Sequence Diagrams

Aquí les dejo unas partes del código que genero Umbrello.

/**
 * Class Grafica
 */
public class Grafica extends Menu {

  //
  // Fields
  //
  
  //
  // Constructors
  //
  public Grafica () { };
  
  //
  // Methods
  //

  //
  // Accessor methods
  //

  //
  // Other methods
  //

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

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

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

/**
 * Class Histograma
 */
public class Histograma extends Grafica {

  //
  // Fields
  //

  private String xlabel;
  private String ylabel;
  private float rangox;
  
  //
  // Constructors
  //
  public Histograma () { };
  
  //
  // Methods
  //

  //
  // Accessor methods
  //

  /**
   * Set the value of xlabel
   * @param newVar the new value of xlabel
   */
  private void setXlabel ( String newVar ) {
    xlabel = newVar;
  }

  /**
   * Get the value of xlabel
   * @return the value of xlabel
   */
  private String getXlabel ( ) {
    return xlabel;
  }

  /**
   * Set the value of ylabel
   * @param newVar the new value of ylabel
   */
  private void setYlabel ( String newVar ) {
    ylabel = newVar;
  }

  /**
   * Get the value of ylabel
   * @return the value of ylabel
   */
  private String getYlabel ( ) {
    return ylabel;
  }

  /**
   * Set the value of rangox
   * @param newVar the new value of rangox
   */
  private void setRangox ( float newVar ) {
    rangox = newVar;
  }

  /**
   * Get the value of rangox
   * @return the value of rangox
   */
  private float getRangox ( ) {
    return rangox;
  }

  //
  // Other methods
  //

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

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

/**
 * Class Nuevo
 */
public class Nuevo extends Registro {

  //
  // Fields
  //
  
  //
  // Constructors
  //
  public Nuevo () { };
  
  //
  // Methods
  //

  //
  // Accessor methods
  //

  //
  // Other methods
  //

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

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

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

No pongo todas las clases para no hacer mas extenso esto, así que solo deje tres de ellas.

Haciendo una comparación rápida con mi código no es tan diferente, solo que en la clase histograma no me agrado como genero algunas cosas del código, así como deja el lugar donde deberían de ir los métodos, etcétera. Aún y sean parecidos prefiero seguir con la base de mi propio código.

Si tienen alguna duda en como genere el código pueden preguntarme, o si tienen alguna sugerencia háganme saber.