Programación 1º – UD4 – Documentación del código

Programación 1º – UD4 – Documentación del código

¿Qué es documentar el código?

Documentar el código es como dejar notas o instrucciones dentro de tu programa para que tú (en el futuro) o cualquier otro programador pueda entender qué hace tu código y por qué lo hace. Es como poner etiquetas o carteles que expliquen los rincones de tu programa.

¿Quién leerá esta documentación?

Principalmente:

  • Tú mismo (cuando vuelvas a ver el código en unos meses).
  • Otros programadores que trabajen contigo o que tengan que modificar tu código.

¿Por qué es tan importante?

Porque ayuda a:

  • Mantener el código (arreglar errores o mejorarlo).
  • Reutilizarlo en otros programas.
  • Entenderlo más rápido.

¿Qué cosas deberías documentar?

Mínimo deberías poner comentarios en:

  • Las clases
  • Los métodos
  • Los atributos (variables dentro de una clase)
  • Los constructores

Y también opcionalmente en:

  • Bucles complicados
  • Algoritmos que no sean obvios
  • Cualquier cosa que no se entienda solo leyendo el código

¿Cómo se hace en Java?

Se usa una herramienta que ya viene con Java y se llama Javadoc.

Para que Javadoc funcione, usamos comentarios especiales que empiezan así:

/**
* Aquí va la explicación
*/

Ese bloque sirve para documentar lo que viene justo debajo, como un método o una clase.

Ejemplo de un comentario con Javadoc:

/**
* Calcula el área de un círculo dado su radio.
*
* @param radio El radio del círculo
* @return El área calculada
*/
public double calcularArea(double radio) {
return Math.PI * radio * radio;
}

¿Qué son las etiquetas @?

Son como palabras clave que le dicen a Javadoc qué información especial debe mostrar. Algunas muy comunes:

EtiquetaPara qué sirve
@authorDice quién hizo el código
@versionMuestra la versión del código
@paramExplica un parámetro (en métodos o constructores)
@returnExplica qué devuelve el método
@throws o @exceptionExplica qué errores puede lanzar el método
@seePone un enlace a algo relacionado
@deprecatedAdvierte que algo ya no se debería usar

Orden recomendado de etiquetas

  1. @author
  2. @version
  3. @param
  4. @return
  5. @exception o @throws
  6. @see
  7. @deprecated

PROGRAMACIÓN

Preguntas de Programación de DAM

Actividades de Programación UD4 - 8. Documentación del código (Javadoc)

Preguntas de Programación de 1ºDAM de la Unidad 4: Documentación del código (Javadoc)

1 / 15

¿Qué etiqueta se usa para documentar una excepción que lanza un método?

2 / 15

¿Cuál de estos comentarios es un comentario de documentación válido?

3 / 15

¿Cuál de estas etiquetas sirve para marcar que un método ya no debería usarse?

4 / 15

¿Qué etiqueta se utiliza para describir un parámetro de un método en Javadoc?

5 / 15

¿Qué etiqueta se usa para vincular una clase con otra documentación relacionada?

6 / 15

¿Qué hace la etiqueta @author?

7 / 15

¿En qué orden deben ir estas etiquetas en un método que lanza 2 excepciones y tiene 3 parámetros?

8 / 15

¿Cuál es la forma correcta de iniciar un comentario Javadoc en Java?

9 / 15

¿Cuál es el propósito de esta documentación?

/**
 * Calcula el área de un círculo.
 * @param radio El radio del círculo
 * @return El área
 */

10 / 15

¿Cuál es el orden correcto de las etiquetas en un método con parámetros y valor de retorno?

11 / 15

¿Dónde se coloca típicamente la etiqueta @return?

12 / 15

¿Qué orden es el correcto en un método que lanza una excepción y tiene parámetros?

13 / 15

¿Qué genera la herramienta javadoc?

14 / 15

¿Cuál es el orden correcto para documentar una clase escrita por varios autores con versión y referencias?

15 / 15

¿Qué etiqueta debe ir siempre primero en una clase si está presente?

Your score is

0%

Actividades de programación

Actividad 1: Documentar una clase de utilidades matemáticas

  • Agrega comentarios Javadoc a la clase y a cada método.
  • Usa @param, @return, @throws, @author.
public class Calculadora {

    public int sumar(int a, int b) {
        return a + b;
    }

    public int restar(int a, int b) {
        return a - b;
    }

    public int multiplicar(int a, int b) {
        return a * b;
    }

    public int dividir(int a, int b) {
        return a / b; // Cuidado: puede lanzar ArithmeticException si b es 0
    }
}

/**
 * Clase que proporciona operaciones matemáticas básicas.
 * Contiene métodos para sumar, restar, multiplicar y dividir.
 *
 * @author Juan Pérez
 * @version 1.0
 */
public class Calculadora {

    /**
     * Suma dos números enteros.
     *
     * @param a El primer número
     * @param b El segundo número
     * @return La suma de a y b
     */
    public int sumar(int a, int b) {
        return a + b;
    }

    /**
     * Resta dos números enteros.
     *
     * @param a El primer número
     * @param b El segundo número
     * @return La diferencia entre a y b
     */
    public int restar(int a, int b) {
        return a – b;
    }

    /**
     * Multiplica dos números enteros.
     *
     * @param a El primer número
     * @param b El segundo número
     * @return El producto de a y b
     */
    public int multiplicar(int a, int b) {
        return a * b;
    }

    /**
     * Divide dos números enteros.
     *
     * @param a El numerador
     * @param b El denominador
     * @return El cociente de a dividido entre b
     * @throws ArithmeticException Si el denominador es 0
     */
    public int dividir(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException(“No se puede dividir por cero.”);
        }
        return a / b;
    }
}

Actividad 2: Documentar constructor y atributos

  • Documenta la clase, el constructor y los métodos get.
  • Usa @param para el constructor, y @return para los getters.
public class Persona {
    private String nombre;
    private int edad;
    private String dni;

    public Persona(String nombre, int edad, String dni) {
        this.nombre = nombre;
        this.edad = edad;
        this.dni = dni;
    }

    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }

    public String getDni() {
        return dni;
    }
}

/**
 * Clase que representa una persona con nombre, edad y DNI.
 *
 * @author Juan Pérez
 * @version 1.0
 */
public class Persona {
    private String nombre;
    private int edad;
    private String dni;

    /**
     * Constructor para crear una nueva persona.
     *
     * @param nombre El nombre de la persona
     * @param edad La edad de la persona
     * @param dni El DNI de la persona
     */
    public Persona(String nombre, int edad, String dni) {
        this.nombre = nombre;
        this.edad = edad;
        this.dni = dni;
    }

    /**
     * Obtiene el nombre de la persona.
     *
     * @return El nombre de la persona
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Obtiene la edad de la persona.
     *
     * @return La edad de la persona
     */
    public int getEdad() {
        return edad;
    }

    /**
     * Obtiene el DNI de la persona.
     *
     * @return El DNI de la persona
     */
    public String getDni() {
        return dni;
    }
}

Actividad 3: Usar @see para vincular clases

  • Documenta ambas clases.
  • Usa @see Persona en Estudiante, y viceversa.
  • Puedes añadir un enlace externo con @see <a href="...">texto</a>.
public class Persona {
    // Código como el de la actividad anterior
}

public class Estudiante extends Persona {
    private String curso;

    public Estudiante(String nombre, int edad, String dni, String curso) {
        super(nombre, edad, dni);
        this.curso = curso;
    }

    public String getCurso() {
        return curso;
    }
}

/**
 * Clase que representa una persona.
 *
 * @author Juan Pérez
 * @version 1.0
 * @see Estudiante
 */
public class Persona {
    private String nombre;
    private int edad;

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }
}

/**
 * Clase que representa un estudiante, que es un tipo especial de persona.
 *
 * @author Juan Pérez
 * @version 1.0
 * @see Persona
 */
public class Estudiante extends Persona {
    private String curso;

    public Estudiante(String nombre, int edad, String curso) {
        super(nombre, edad);
        this.curso = curso;
    }

    public String getCurso() {
        return curso;
    }
}

Actividad 4: Marcar métodos obsoletos con @deprecated

  • Documenta potenciaAntiguo con @deprecated.
  • Usa {@link #potencia(double, double)} para indicar la nueva versión.
public class Calculadora {

    /**
     * Método antiguo para calcular potencias.
     */
    public int potenciaAntiguo(int base, int exponente) {
        int resultado = 1;
        for (int i = 0; i < exponente; i++) {
            resultado *= base;
        }
        return resultado;
    }

    public double potencia(double base, double exponente) {
        return Math.pow(base, exponente);
    }
}

/**
 * Clase que proporciona operaciones matemáticas avanzadas.
 *
 * @author Juan Pérez
 * @version 1.0
 */
public class Calculadora {

    /**
     * Método antiguo para calcular potencias.
     * @deprecated Este método está obsoleto. Usa {@link #potencia(double, double)} en su lugar.
     */
    @Deprecated
    public int potenciaAntiguo(int base, int exponente) {
        int resultado = 1;
        for (int i = 0; i < exponente; i++) {
            resultado *= base;
        }
        return resultado;
    }

    /**
     * Calcula la potencia de un número.
     *
     * @param base La base
     * @param exponente El exponente
     * @return El resultado de base elevado a exponente
     */
    public double potencia(double base, double exponente) {
        return Math.pow(base, exponente);
    }
}

Actividad 5: Generar documentación HTML con Javadoc

  • Documenta esta clase usando Javadoc.
  • Luego, en terminal, ejecuta: javadoc -d doc Vehiculo.java
  • Abre el archivo doc/index.html con tu navegador para ver la documentación generada.
/**
 * Clase que representa un vehículo básico.
 */
public class Vehiculo {
    private String marca;
    private int velocidad;

    public Vehiculo(String marca) {
        this.marca = marca;
        this.velocidad = 0;
    }

    public void acelerar(int incremento) {
        velocidad += incremento;
    }

    public int getVelocidad() {
        return velocidad;
    }
}

/**
 * Clase que representa un vehículo básico.
 *
 * @author Juan Pérez
 * @version 1.0
 */
public class Vehiculo {
    private String marca;
    private int velocidad;

    /**
     * Constructor de Vehiculo.
     *
     * @param marca La marca del vehículo
     */
    public Vehiculo(String marca) {
        this.marca = marca;
        this.velocidad = 0;
    }

    /**
     * Acelera el vehículo.
     *
     * @param incremento La cantidad en la que se incrementará la velocidad
     */
    public void acelerar(int incremento) {
        velocidad += incremento;
    }

    /**
     * Obtiene la velocidad actual del vehículo.
     *
     * @return La velocidad del vehículo
     */
    public int getVelocidad() {
        return velocidad;
    }
}