miércoles, 23 de noviembre de 2011

Documentación técnica y auto-generación de código

Documentación técnica y auto-generación de código de ogro y príncipe

Para realizar la auto-generación de código del juego del ogro y príncipe, utilizare Umbrello.

En la terminal nos posicionamos en la carpeta del juego y escribimos lo siguiente umbrello juego.

Se desplegará el diagrama de clases del proyecto juego del ogro y príncipe.
Para la auto-generación de código, daremos click en la opción Code y damos click a Code Generation Wizard y nos aparecerá una ventana como esta:


Ahora le damos click al botón Next y nos aparecerá otra ventana en la que nos aparece la dirección en que se guardara la auto-generación del código y además aparece en que lenguaje deseamos que se auto-genere el código, en este caso pondre la opción que el código se realice en el lenguaje Java. Damos click al botón Next.
Nos aparecerá otra ventana en la que daremos click a Generate. Y automáticamente el código del ogro y el príncipe se a generado en el lenguaje Java a partir del diagrama de clases creado en Umbrello.

Código auto-generado
/**
* Class Personaje
*/
public class Personaje {

//
// Fields
//

private String nombre;

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

//
// Methods
//


//
// Accessor methods
//

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

/**
* Get the value of nombre
* @return the value of nombre
*/
private String getNombre ( ) {
return nombre;
}

//
// Other methods
//

}
/**
* Class Princesa
*/
public class Princesa extends Personaje implements Capturable {

//
// Fields
//

private String status = "libre";

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

//
// Methods
//


//
// Accessor methods
//

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

/**
* Get the value of status
* @return the value of status
*/
private String getStatus ( ) {
return status;
}

//
// Other methods
//

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


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


}
import java.util.*;


/**
* Class Principe
*/
public class Principe extends PersonajeAtacable implements Curable {

//
// Fields
//


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

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @return Mago
*/
public Mago invocarMago( )
{
}


/**
* @param o
*/
public void atacar( Ogro o )
{
}


/**
* @param c
*/
public void rescatar( Capturable c )
{
}


/**
* @return int
*/
public int curar( )
{
}


}
/**
* Class PersonajeAtacable
*/
public class PersonajeAtacable extends Personaje implements Atacable {

//
// Fields
//

static private int DEFAULT_VIDA = 100;
private int vida;

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

//
// Methods
//


//
// Accessor methods
//

/**
* Get the value of DEFAULT_VIDA
* @return the value of DEFAULT_VIDA
*/
private int getDEFAULT_VIDA ( ) {
return DEFAULT_VIDA;
}

/**
* Set the value of vida
* @param newVar the new value of vida
*/
private void setVida ( int newVar ) {
vida = newVar;
}

/**
* Get the value of vida
* @return the value of vida
*/
private int getVida ( ) {
return vida;
}

//
// Other methods
//

/**
* @param cuanta
*/
public void restarVida( int cuanta )
{
}


/**
* @param a
*/
public void atacar( Atacable a )
{
}


/**
* @param intensidad
*/
public void recibirAtaque( int intensidad )
{
}


}
import java.util.*;


/**
* Class Ogro
*/
public class Ogro extends PersonajeAtacable implements Capturable, Congelable {

//
// Fields
//

private boolean congelado = false;

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

//
// Methods
//


//
// Accessor methods
//

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

/**
* Get the value of congelado
* @return the value of congelado
*/
private boolean getCongelado ( ) {
return congelado;
}

//
// Other methods
//

/**
* @param c
*/
public void capturar( Capturable c )
{
}


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


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


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


}
import java.util.*;


/**
* Class Mago
*/
public class Mago extends Personaje {

//
// Fields
//


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

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @param c
*/
public void lanzarHechizo( Congelable c )
{
}


/**
* @param c
*/
public void curar( Curable c )
{
}


}
/**
* Interface Curable
*/
public interface Curable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @return int
*/
public int curar( );


}
/**
* Interface Congelable
*/
public interface Congelable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void congelar( );


}
/**
* Interface Capturable
*/
public interface Capturable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void capturar( );


/**
*/
public void liberar( );


}
/**
* Interface Atacable
*/
public interface Atacable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @param a
*/
public void atacar( Atacable a );


/**
* @param intensidad
*/
public void recibirAtaque( int intensidad );


}
Como vimos en el código anterior se encuentran algunos comentarios inicializados con /** y terminados con */, esto es parte de la documentación técnica.
Dentro de la documentación en un proyecto podrán ir diferentes identificadores como:
@author - Autor del código fuente
@exception - Excpeciones del código
@param - Parámetros que se reciben en los métodos
@return - El valor que se regresa

Cualquier identificador comienza con /** y termina con */. Además cada línea escrita dentro de esos símboloes tendrán un * al comenzar.

Por ejemplo:
/**
*Esto es un ejemplo
*@return ejemplo
*/

Ahora para realizar la documentación técnica del juego el ogro y el príncipe, utilizare JavaDoc.
En la terminal, dentro de la carpeta del código fuente que se auto-generó, escribimos: javadoc *.java

Después de esto, la documentación del código fuente se generó. Se generaron varios archivos, entre ellos un archivo llamado index.html. Abrimos este archivo y se mostrará toda la documentación del juego del ogro y el príncipe.

Algunas imagenes de la documentación



En la documentación se muestran el constructor, los métodos, parámetros, atributos, etc del código fuente del ogro y el príncipe.

Referencias



Saludos.

1 comentario:

victor hugo gutierrez dijo...

bueno gemma vi que en tu código autogenerado pusiste prácticamente todas tus clases en el diagrama, y por eso creo que el código te pudo ayudar mucho para lo que ya tenias de tu proyecto, ya que yo solo puse las clases que me parecían las que mas interactuaban.

Publicar un comentario