martes, 27 de septiembre de 2011

Herencia, Documentacion, Codigo auto-generado (2da Entrega)

HERENCIA

En mi proyecto la herencia que utilizo es la de JFrame ya que la utilizo para generar las ventanas y botones trate de utilizar como herencia los movimientos pero vi que no era eficientes asi que mejor herede de JFrame y ActionListener para los eventos que se encuentran ya en la API de Java.

La herencia en Java es muy facil de usar, solo se pone despues del nombre de la clase la palabra reservada extends y despues el nombre de la clase a heredar si queremos heredar mas de una clase utilizamos otra palabra reservada implements y ponemos las que necesitemos separadas por comas por ejemplo

public class Prueba extends JFrame implements ActionListener, MouseEvent{
}
esto sirve demasiado para cuando queremos reutilizar codigo, que es una muy buena practica en la ingenieria de software, pero no hay que olvidar tambien importar el paquete que contiene esa clase con import javax.swing.*; el " * " es un comodin que es para extraer cualquier clase de ese paquete.
aqui les dejo la documentacion de la api de java http://download.oracle.com/javase/6/docs/api/  ahi encontraran todo lo que contiene esa clase tanto metodos como los argumentos que reciben.

Mi Proyecto hereda todo de esta clase JFrame asi como otras clases de este paquete swing, JButton Container etc.

DOCUMENTACION


La documentacion en codigo de programacion sirve mucho para entender que hace ese codigo, no solo para nosotros, o el computador, si no para cuando alguien mas quiere modificarlos o darle mantenimiento.
Documentar un programa es una buena practica para un buen programador, ya que ningun programa esta excento de tener errores, documentarlo es una buena practica para que otra persona si en dado caso en un futuro pueda modificarlo sin tener muchos problemas, ya que si no esta documentado al querer leerlo y entenderlo otra persona tardara mucho en comprenderlo ya que cada programador tiene su estilo de programar diferente y claro que su logica tambien, asi que hay que empezar a documentar los proyectos cada vez que hagamos uno.

*Que hay que documentar? esto son unos pasos de los cuales se deben tomar en cuenta

  • ¿de qué se encarga una clase? ¿un paquete?
  • ¿qué hace un método?
  • ¿cuál es el uso esperado de un método?
  • ¿para qué se usa una variable?
  • ¿cuál es el uso esperado de una variable?
  • ¿qué algoritmo estamos usando? ¿de dónde lo hemos sacado?
  • ¿qué limitaciones tiene el algoritmo? ¿... la implementación?
  • ¿qué se debería mejorar ... si hubiera tiempo?
En el caso de mi proyecto yo lo documente, de pies a cabeza desde que hace una variable, hasta para que sirve un metodo por ejemplo esto:
    private final static int Naranja = 6;//es para saber que color se usara
    private int r;
    private int color = 0;
    private int x;//para coordenadas x
    private int y; //coordenadas y
    private int i; //tiene uso para for
    private int j;//for
    private int get=0;//ayudara para saber las coordenadas
    private int temp = 0;//solo para el getit
    private int temp2=0;//solo para cuando obtengo colores !!!!!!!! FIX IT
que son las variables que declare en mis proyecto asi como muchas mas o metodos:

       /*
*es el que hara los colores
*asi como el que pintara cada cuadro de las caras
*llama a los metodos getCoord() estableceCoord()
*para completar su funcionamiento
*/
    public void paintComponent(Graphics g){
super.paintComponent( g );
System.out.println("inicia paintComponent");
     }
que solo es un fragmento de todo mi codigo ya que no puedo poner todo el codigo aqui.

Hay diferentes tipos de comentarios que se expresan de diferente forma por ejemplo 
En Java disponemos de tres notaciones para introducir comentarios:
javadoc
Comienzan con los caracteres "/**", se pueden prolongar a lo largo de varias líneas (que probablemente comiencen con el carácter "*") y terminan con los caracteres "*/".
una línea
Comienzan con los caracteres "//" y terminan con la línea
tipo C
Comienzan con los caracteres "/*", se pueden prolongar a lo largo de varias líneas (que probablemente comiencen con el carácter "*") y terminan con los caracteres "*/".
Cada tipo de comentario se debe adaptar a un propósito:
javadoc
Para generar documentación externa (ver comentarios javadoc más abajo)
una línea
Para documentar código que no necesitamos que aparezca en la documentación externa (que genere javadoc)
Este tipo de comentarios se usará incluso cuando el comentario ocupe varias líneas, cada una de las cuales comenzará con "//"
tipo C
Para eliminar código. Ocurre a menudo que código obsoleto no queremos que desaparezca, sino mantenerlo "por si acaso". Para que no se ejecute, se comenta.
(En inglés se suele denominar "comment out")

aqui un muy buen tutorial para javadoc 
http://www.lab.dit.upm.es/~lprg/material/apuntes/doc/doc.htm
javadoc es muy recomendable para el momento de querer hacer documentacion siempre hay que ponerlos en esto lados
Por obligación (javadoc):
  1. al principio de cada clase
  2. al principio de cada método
  3. ante cada variable de clase
Por conveniencia (una línea):
  1. al principio de fragmento de código no evidente
  2. a lo largo de los bucles
Y por si acaso (una línea):
  1. siempre que hagamos algo raro
  2. siempre que el código no sea evidente
y aqui ejemplos de mi codigo

/**
 *buscara en cada cara
 *con getCoord y el color a buscar
*@param getit[] contiene las coordenadas ya buscadas, esta declarado global
 */
temp2=0;
getCoord(Rojo);
        for(i = 0; i < 9; i++ ) {//buscara el color rojo (los 9 rojos)
   g.setColor(Color.RED);
    /**
     *@return LadoSuperior
     * si otro metodo o clase lo necesita
     */
    public int[][] getColorRojo(){
return LS; 
    }
get = LF[ i ] [ j ];//obtiene el color de la matriz en posicion i, j y los almacena en get
                    if(get==color)//si get es igual al color que mandamos a buscar, 
estableceCoord(i, j, 2);//mandar a establecer la coordenada con la posicion i, j, y el numero de la cara
   get=LD[ i ] [ j ];

ahi utilice todas las buenas practicas para documentar aqui dejare un buen tutorial por si alguien se interesa en esto
http://gpd.sip.ucm.es/rafa/docencia/programacion/tema1/javadoc.html

Codigo Auto-Generado

Despues de haber documentado todo tu codigo con los con etiquetas como @param, @author @return
etc dependiendo de que hayas documentado, existe una mejor manera de ver el codigo comentado, que genera de salida documentos HTML como si de una API se tratara.

aqui unas imagenes:
en esta se muestran todas las clases que documente

 aqui muestra metodos de esa clase y en la primera linea un parametro que puse
 en este tambien metodos de esa misma clase documentada y con javadoc me dice que regresa con @return que se queda doccumentadaa
enlista los metodos que tengo en la clase con lo que regresan en unos void en otros regresa matrices[][]

en este enlista las variables que declaramos y de que tipo son


esto es muy util para cuando desarrollamos un software muy complejo, o un software del que se pleanea darle mantenimiento cada cierto tiempo, y asi mejor su vida, la vida de software. para hacer esto es muy facil en linux ya se incluye con el jdk el javadoc que es el que se usa para generar el codigo HTML como el que ya puse.

para generarlo primero tenemos que irnos a la carpeta contenedora de las clases, en mi caso es cd Desktop/POO/Code/ y presionamos enter, una vez ubicados en la carpeta ponemos javadoc *.java que significa que autogenerara codigo de todas las clases de esa carpeta con terminacion .java y obtendremos como resultado varios archivos HTML.

para en windows este tutorial es muy bueno http://www.docstoc.com/docs/2539429/How-to-use-Javadoc-(for-Windows-computers)

ya con esto en practica vamos por un buen camino como programadores
para esta entrada es todo, nos vemos, saludos

No hay comentarios:

Publicar un comentario