introducción a la programación y la informática. tema 5

40
Tema 5. Métodos Introducción a la Informática y a la Programación (IIP) Curso 2011/12 Departamento de Sistemas Informáticos y Computación

Upload: andres-garcia-garcia

Post on 03-Aug-2015

75 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Introducción a la programación y la informática. Tema 5

Tema 5. Métodos

Introducción a la Informática y a la Programación (IIP)

Curso 2011/12

Departamento de Sistemas Informáticos y Computación

Page 2: Introducción a la programación y la informática. Tema 5

Contenidos

1. Métodos de objeto y métodos de clase

2. Características de los métodos de objeto o dinámicos

3. Características de los métodos de clase o estáticos

4. La pila de llamadas

5. Sobrescritura de los métodos de Object

6. Documentación de los métodos

20/10/2011 IIP - Curso 2011/12 2

Page 3: Introducción a la programación y la informática. Tema 5

Estructura básica de una clase: atributos y métodos

public class Circulo {

private double radio;

private String color;

private int centroX;

private int centroY;

public Circulo() {

radio = 50;color = "negro";

centroX = 100; centroY = 100;

}

public double area(){

return 3.14 * radio * radio;

}

...

}

20/10/2011 IIP - Curso 2011/12 3

Atributos: Estructura de los objetos de la clase

Métodos: Operaciones que se pueden hacer cuando los objetos de la clase

Page 4: Introducción a la programación y la informática. Tema 5

Ejemplo de clase-programapublic class ProgramaTri { public static void main(String[] args) { Punto p1 = new Punto(); p1.x = 2.5; p1.y = 3; Punto p2 = new Punto(); p2.x = 2.5; p2.y = -1.2; Punto p3 = new Punto(); p3.x = -1.5; p1.y = 1.4; System.out.println("Triángulo de vértices: "); System.out.println("(" + p1.x + "," + p1.y + ")"); System.out.println("(" + p2.x + "," + p2.y + ")"); System.out.println("(" + p3.x + "," + p3.y + ")"); double dx = p1.x - p2.x; double dy = p1.y - p2.y; double lado12 = Math.sqrt(dx*dx + dy*dy); dx = p2.x - p3.x; dy = p2.y - p3.y; double lado23 = Math.sqrt(dx*dx + dy*dy); dx = p1.x - p3.x; dy = p1.y - p3.y; double lado13 = Math.sqrt(dx*dx + dy*dy); double perimetro = lado12 + lado23 + lado13; System.out.println("Perímetro: " + perimetro);

}}

20/10/2011 IIP - Curso 2011/12 4

Instrucciones repetidas con distintos datos:

p1 y p2p2 y p3p1 y p3

Page 5: Introducción a la programación y la informática. Tema 5

Subprogramapublic class ProgramaTri { public static void main(String[] args) { Punto p1 = new Punto(); p1.x = 2.5; p1.y = 3; Punto p2 = new Punto(); p2.x = 2.5; p2.y = -1.2; Punto p3 = new Punto(); p3.x = -1.5; p1.y = 1.4; System.out.println("Triángulo de vértices: "); System.out.println("(" + p1.x + "," + p1.y + ")"); System.out.println("(" + p2.x + "," + p2.y + ")"); System.out.println("(" + p3.x + "," + p3.y + ")"); double lado12 = distancia(p1,p2); double lado23 = distancia(p2,p3); double lado13 = distancia(p1,p3), double perimetro = lado12 + lado23 + lado13; System.out.print("Perímetro: " + perimetro);

} /** Calcula la distancia entre dos puntos. */ static double distancia(Punto p, Punto q) {

double dx = p.x - q.x; double dy = p.y - q.y; return Math.sqrt(dx*dx + dy*dy);

} }

20/10/2011 IIP - Curso 2011/12 5

+ LEGIBILIDAD

+ SEGURIDAD

Page 6: Introducción a la programación y la informática. Tema 5

Métodos de objeto (dinámicos) y de clase (estáticos)

• Los métodos de objeto o dinámicos se definen en una clase paracrear (constructores) y manipular la información de los objetosde la clase (de instancia).– Punto p = new Punto(); p1.x =2.5; p1.y = 3;

– double d = p.distOrigen();

Se denomina objeto en curso al objeto concreto que se crea o manipula.

• Los métodos de clase no se aplican sobre objetos, actúanúnicamente sobre sus parámetros y se pueden definir encualquier clase. Se deben declarar como static.– Math.sqrt(x) es una llamada al método estático sqrt de la clase

Math

– distancia es un método de la clase ProgramaTri

20/10/2011 IIP - Curso 2011/12 6

Page 7: Introducción a la programación y la informática. Tema 5

Características de los métodos de instancia

• Definición:[modificadores] TipoRetorno nombreMetodo ([ListaParametros]){

// instrucciones del cuerpo del método

}

20/10/2011 IIP - Curso 2011/12 7

public double distancia(Punto p)

{ double x = p.x – this.x;

double y = p.y – this.y;

return Math.sqrt(x*x + y*y);

}

parámetronombrevisibilidad tipo

cabecera

cuerpo

valor de retorno

objeto en curso

Page 8: Introducción a la programación y la informática. Tema 5

Métodos de instancia: modificadores de visibilidad o acceso

20/10/2011 IIP - Curso 2011/12 8

Al igual que para los atributos, existen las siguientes modalidades deacceso a los métodos de una clase:

1. private: accesible sólo dentro de la clase.2. public: accesible en cualquier parte donde la clase sea

accesible (incluso desde fuera del paquete).3. Sin modificador de acceso (friendly): público pero accesible

sólo dentro del paquete.

class subclass package world

private sí no no no

public sí sí sí sí

sin especificar sí no sí no

Page 9: Introducción a la programación y la informática. Tema 5

¿public o private?

20/10/2011 IIP - Curso 2011/12 9

public class Punto {

private double x; // atributo que representa la abscisa

private double y; // atributo que representa la ordenada

/** Método que permite mover un punto en el plano, cambiando

* sus coordenadas a partir de dos valores dados. */

public void mover(double px, double py) { x += px; y += py; }

/** Método privado que devuelve un valor entero aleatorio en

* el rango [0,2*Math.sqrt(x*x+y*y)]. */

private int aleatorio() {return(int)(Math.random()*(2*distOrigen()+1)); }

/** Método que permite mover un punto en el plano, cambiando

* sus coordenadas a partir de dos valores aleatorios. */

public void moverAleat() { x += aleatorio(); y += aleatorio(); }

/** Método que calcula la distancia de un punto al origen (0,0) */

public double distOrigen() { return Math.sqrt(x*x + y*y); }

/** Método que calcula la distancia de un punto a otro punto dado */

public double distancia(Punto p) {

double x = p.x - this.x; double y = p.y - this.y;

return Math.sqrt(x*x + y*y);

}

}

Page 10: Introducción a la programación y la informática. Tema 5

¿public o private?

20/10/2011 IIP - Curso 2011/12 10

moverAleat

distOrigen

x y

aleatorio

PR

IVA

DO

BLI

CO

distancia

mover

Page 11: Introducción a la programación y la informática. Tema 5

Métodos de instancia: tipo de retorno

20/10/2011 IIP - Curso 2011/12 11

• Mediante el tipo de retorno se especifica el tipo del valor que el métododevuelve o se usa la palabra reservada void para indicar que el método nodevuelve ningún valor

• El tipo de cualquier valor de retorno de un método debe ser el mismo que eltipo de retorno del método -único y definido en su cabecera

• El tipo de retorno de un método puede ser cualquier tipo de datos Java,primitivo o referencia

• Para devolver un valor de retorno de un método se usa la instrucción

return expresión ;

• La ejecución de un método finaliza tras la ejecución una instrucción return

• Si un método no devuelve explícitamente nigún valor vía return entoncesel tipo de su resultado es void –implícitamente, se ejecuta "return ;"como última instrucción de su cuerpo.

Page 12: Introducción a la programación y la informática. Tema 5

Métodos de instancia: parámetros

20/10/2011 IIP - Curso 2011/12 12

• Los parámetros definidos en la cabecera de un método, aldeclararlo, se denominan parámetros formales pues no tienenasociado un valor real

Sintaxis : tipo1 nomParam1, tipo2 nomParam2, ..., tipok nomParamk

¡Atención! No confundir esta sintaxis con la de declaración de variables:

tipo1 nomParam1, nomParam2, ..., nomParamk es una declaración

de parámetros ¡¡¡ incorrecta !!!!

Uso en el cuerpo del método: (sus identificadores) puedenusarse como variables en el cuerpo del método, sin volver adeclararse. ¡Atención! su inicialización se realiza única y

exclusivamente al invocar la ejecución del método

• Se puede declarar métodos sin parámetros (nomMetodo()), i.e.con una lista de parámetros vacía

Page 13: Introducción a la programación y la informática. Tema 5

1320/10/2011 IIP - Curso 2011/12 13

public class Punto {

private double x;

private double y;

public void mover(double px, double py) {

x += px; y += py;

}

public double distancia (Punto p) {

double px = p.x – x;

double py = p.x –y;

return Math.sqrt(px*px + py*py);

}

}

Métodos de instancia: parámetros

Page 14: Introducción a la programación y la informática. Tema 5

public class Punto {

private double x, y;

public void mover(double x, double y) {

this.x += x; this.y += y;

}

}

Métodos de instancia: cuerpo

20/10/2011 IIP - Curso 2011/12 14

• Bloque de código. Si el tipo de retorno no es void debe incluirinstrucción return.

• Son variables locales a un método las que se declaran en sucuerpo, sus parámetros y el objeto en curso (this).

• Desde cualquier método se puede acceder además a losatributos de clase y de instancia definidos en su clase (variablesglobales)

• Si una variable local y una global tienen el mismo nombresiempre se asocia a la local (principio de máxima proximidad)

Page 15: Introducción a la programación y la informática. Tema 5

1520/10/2011 IIP - Curso 2011/12 15

public class Punto {

private double x;

private double y;

public void mover(double px, double py) {

x += px; y += py;

}

}

Otro ejemplo de principio de máx. proximidad

public double distancia (Punto p) {

double x = p.x – x;

double y = p.x –y;

return Math.sqrt(x*x + y*y);

}

public double distancia (Punto p) {

double x = p.x – this.x;

double y = p.x – this.y;

return Math.sqrt(x*x + y*y);

}

¡ ERROR DE COMPILACIÓN !

¡ OK !

Page 16: Introducción a la programación y la informática. Tema 5

Uso de métodos: llamada a un método de instancia

[objetoReal.]nombreMetodo ( arg1, arg2, … , argn)

20/10/2011 IIP - Curso 2011/12 16

donde:

1. objetoReal: es el objeto al que se le aplica el método; esopcional si la llamada se hace dentro de un método de la propiaclase y se aplica a this.

2. nombreMetodo: es el identificador del método.3. arg1, arg2, … , argn: lista de argumentos o datos de entrada (n

es el número de parámetros formales); se llaman parámetrosreales o argumentos y deben tener un valor concreto.

Debe existir concordancia en cuanto a número, tipo y ordende aparición entre los parámetros formales y los argumentos

Page 17: Introducción a la programación y la informática. Tema 5

17

Ejemplos de llamadas a métodos

20/10/2011 IIP - Curso 2011/12 17

Punto p = new Punto(); int x = 3;

// p es (0,0)

p.mover(x, x+1); // p es (3.0, 4.0)

double d = 3 * p.distOrigen(); // d = 15.0

Punto q = new Punto().mover(d, p.distOrigen());

// q es (15.0, 5.0)

public class Punto {

private double x;

private double y;

public void mover(double px, double py) { x += px; y += py; }

private int aleatorio() {

return (int)(Math.random()*(2*distOrigen()+1));

}

public void moverAleat() { x += aleatorio(); y += aleatorio(); }

public double distOrigen() { return Math.sqrt(x*x + y*y); }

public double distancia(Punto p) {

double x = p.x - this.x; double y = p.y - this.y;

return Math.sqrt(x*x + y*y);

}

}

Page 18: Introducción a la programación y la informática. Tema 5

18

Uso de métodos

• Un parámetro real o argumento es cualquier expresión que seevalúe a un tipo de datos compatible con el del correspondienteparámetro formal de la cabecera del método.

• Al evaluar un argumento el correspondiente parámetro formalse inicializa al valor resultante (toma dicho valor).

• La llamada a un método se evalúa al resultado que éstedevuelve

• Se puede realizar la invocación a un método en cualquierexpresión que tenga un tipo compatible con el de retorno delmétodo

20/10/2011 IIP - Curso 2011/12 18

Page 19: Introducción a la programación y la informática. Tema 5

19

Uso de métodos: ejecución de una llamada

• Java asocia una zona de memoria exclusiva para los datos ycálculos del método: registro de activación.

• Si se está ejecutando el método A y se llega a una instrucción quees una llamada a un método B:

– Se evalúan en A las expresiones que aparecen como argumentos en lallamada

– Se reserva espacio en memoria para el registro de activación de B

– Los parámetros de B se inician (en el registro) a los valores calculados (pasode parámetros por valor). La variable this del nuevo registro se inicia también

–Se ejecutan las instrucciones de B; el método acaba con la instrucción return

– Acabada la llamada a B, la ejecución de A prosigue desde el punto en que sellamó a B

–El registro de activación de B se libera

20/10/2011 IIP - Curso 2011/12 19

Page 20: Introducción a la programación y la informática. Tema 5

20

Ejecución de una llamada

20/10/2011 IIP - Curso 2011/12 20

Registro de activación

de la llamada a mover

p

0.0

x 0.0

y

montículo

this

x

3

px

3.0

py

4.0

Registro de activación

de la llamada a mover

p

4.0

x 3.0

y

montículo

this

x

3

px

3.0

py

4.0

Punto p = new Punto(); int x = 3;

// p es (0,0)

p.mover(x, x+1); // p es (3.0, 4.0)

double d = 3 * p.distOrigen(); // d = 15.0

Punto q = new Punto().mover(d, p.distOrigen());

// q es (15.0, 5.0)

Page 21: Introducción a la programación y la informática. Tema 5

21

Paso de parámetros por valor: variables de tipo primitivo y referencia

20/10/2011 IIP - Curso 2011/12 21

public void intercambio(int a, int b){

int aux = a;a = b; b = aux;

}…

int i = 5, j = 7;

intercambio(i,j); // i = 5 y j = 7

public void intercambio(Punto a, Punto b){

Punto aux = a; a = b; b = aux;}

public void intercambiox(Punto a, Punto b){

double aux = a.x; a.x = b.x; b.x = aux;}…

//creados p=(3.0,5.0) y q=(6.0,2.0)

intercambio(p,q); // p=(3.0,5.0) y q=(6.0,2.0) intercambiox(p,q); // p=(6.0,5.0) y q=(3.0,2.0)

Page 22: Introducción a la programación y la informática. Tema 5

Métodos constructores

• No tienen tipo de retorno

• Su nombre es el de la clase

• Se invocan con el operador new: new NombreClase(arg1, arg2, .., argn)

• Su resultado es el objeto creado

20/10/2011 IIP - Curs 2011/12 22

public NombreClase ([ListaParametros]){

// instrucciones del cuerpo del método

}

public class Punto {…public Punto() { x=0; y=0; }public Punto(double abs,double ord){

x = abs; y = ord;}…

}

Punto p = new Punto();Punto q = new Punto(5,10);double dist = q.distancia(new Punto(2,6));

Page 23: Introducción a la programación y la informática. Tema 5

Llamada un método constructor

• Igual que en los métodos de instancia, una vez evaluados losparámetros reales se crea un registro de activación y se pasa suvalor a los parámetros formales.

• Se obtiene un bloque de memoria no utilizada en el montículo, losuficientemente grande como para contener un objeto del tipoespecificado, que pasará a ser el objeto en curso con el que seinicia this.

• Se inicializan las variables de instancia del objeto, con el valor quese especifica o con el valor por defecto.

• Si hay instrucciones en el cuerpo del constructor se ejecutan.

• Se devuelve this como resultado de la llamada al constructor.

20/10/2011 IIP - Curso 2011/12 23

Page 24: Introducción a la programación y la informática. Tema 5

Métodos constructores: uso de this

public class Punto {private double x;private double y;

public Punto(double abs,double ord){this.x = abs; this.y = ord;

}

public Punto() { this(0,0); }

public Punto(Punto p) { this(p.x,p.y); }

…}

20/10/2011 IIP - Curso 2011/12 24

Page 25: Introducción a la programación y la informática. Tema 5

Sobrecarga de métodos

public class Punto {private double x;private double y;

public Punto(double abs,double ord){this.x = abs; this.y = ord;

}

public Punto() { this(0,0); }

public Punto(Punto p) { this(p.x,p.y); }…

}20/10/2011 IIP - Curso 2011/12 25

Los métodos Java se pueden sobrecargar: pueden tener el mismo

nombre y declararse en el mismo ámbito siempre que tengan el

mismo resultado pero distintas listas de parámetros.

Page 26: Introducción a la programación y la informática. Tema 5

Métodos de clase o estáticos

• Un método de clase o método estático es un método propio dela clase (no es un método de objeto) que da funcionalidades anivel de toda la clase, es decir, del conjunto de objetos creadospara dicha clase.

• Un ejemplo de método de clase es el método main y los métodosdefinidos en la clase Math, clase predefinida en Java para realizaroperaciones aritméticas con expresiones numéricas.

20/10/2011 IIP - Curso 2011/12 26

// x es una variable de tipo double y positiva

double rx = Math.sqrt(x);

static double sqrt(double a) Returns the correctly rounded positive square root of a double value.

Page 27: Introducción a la programación y la informática. Tema 5

Métodos estáticos: definición y uso

• Se definen como los métodos de instancia añadiendo en lacabecera el modificador static.

• En el cuerpo del método no puede usarse this porque no hayobjeto en curso.

• La sintaxis para llamar a un método estático:

20/10/2011 IIP - Curso 2011/12 27

[NombreClase.]nombreMetodo ( arg1, arg2, … , argn)

Page 28: Introducción a la programación y la informática. Tema 5

Métodos estáticos: ejemplos

public class TestPunto {

/** Método principal que prueba la clase Punto. */ public static void main(String[] args) {

Punto p = new Punto(2.5,3.0);

Punto q = new Punto(4.0,5.0);

System.out.print("Dist. entre("+p.getX()+","+p.getY()+")");

System.out.print(" y ("+q.getX()+","+q.getY()+"): ");

System.out.println( distancia(p,q) );

}

/** Calcula la distancia entre dos puntos dados */

public static double distancia(Punto a, Punto b) {

double x = b.x - a.x; double y = b.y - a.y;

return Math.sqrt(x*x + y*y);

}

} 20/10/2011 IIP - Curso 2011/12 28

Page 29: Introducción a la programación y la informática. Tema 5

• Clases de utilidades: clases que no definen nuevos tiposdatos. Agrupan métodos estáticos de utilidad general sobretipos previamente definidos.

• No se definen atributos el constructor por defecto creaobjetos vacíos (por ello, se suele hacerlo private).

• No incluyen un método main: no se ejecutan, dan servicio aotras clases.

• Es habitual agrupar en paquetes clases de utilidades quepresten funcionalidades relacionadas de alguna manera.

• Entre las predefinidas de Java destaca Math, del paquetejava.lang: repertorio de operaciones sobre datos numéricos(raíz cuadrada, redondeo, funciones trigonométricas, …)

20/10/2011 IIP - Curso 2011/12 29

Métodos estáticos: clases de utilidades

Page 30: Introducción a la programación y la informática. Tema 5

Pila de llamadas• Java sólo ejecuta un método a la vez: método activo.

• Cuando un método A invoca a un método B:

– la ejecución de A queda en suspenso,

– el estado de A estado se preserva en su registro deactivación, que no se destruye hasta que se reanude yacabe su ejecución.

• En memoria pueden coexistir varios registros:

– el registro del método activo o registro activo,

– un registro por cada método que permanezca suspendido.

20/10/2011 IIP - Curso 2011/12 30

Page 31: Introducción a la programación y la informática. Tema 5

Pila de llamadas• Pila de llamadas (stack): Java gestiona los registros ordenándolos por

antigüedad. Cuando A invoca a B, su registro se dispone en la cimade la pila (1); al terminar, su registro se desapila (3).

• El método activo sólo puede acceder a las variables de la cima (2).

• Las variables de clase están aparte, y son accesibles por cualquiermétodo activo (siempre que sean públicas para el método).

20/10/2011 IIP - Curso 2011/12 31

main

A

B

main

A

B

main

A

B

(2)(1) (3)

Datos accesibles por la ejecución de B

… Información estática de las clases

públicaprivada

clase B ... otras clases

Page 32: Introducción a la programación y la informática. Tema 5

Pila de llamadas• Java usa unas variables en cada registro para facilitar sus propios cálculos

intermedios y el control de la ejecución. Entre otras, destacan:

– VR (valor de retorno): Del tipo de retorno. Es en donde se guarda el valor adevolver por la llamada (excepto si es void).

– DR (dirección de retorno): Se guarda el punto del código en donde A invoca a B.

• Ejemplo (1). El método main de una clase Prueba invoca al métododistancia de Punto:

20/10/2011 IIP - Curso 2011/12 32

0.0x q1

nullargs q2

DR

0.0x

0.0y

3.0x

4.0y

pila montículo

public double distancia(Punto p){

double x = p.x - this.x;

double y = p.y - this.y;

return Math.sqrt(x*x + y*y);

}

public static void main(String[] args){

double x = 0.0;

Punto q1 = new Punto(3.0,4.0);

Punto q2 = new Punto();

x = q2.distancia(q1);

System.out.println(x);

}

Prueba.main

Page 33: Introducción a la programación y la informática. Tema 5

Pila de llamadas

• Ejemplo (2): El método distancia ha calculado el resultadoen la variable VR de su registro, y Java está a punto dereanudar main por donde indica DR:

20/10/2011 IIP - Curso 2011/12 33

4.0y p

3.0xVR 5.0 this

DR

0.0x q1

nullargs q2

DR

0.0x

0.0y

3.0x

4.0y

pila montículo

Punto.distanciapublic double distancia(Punto p){

double x = p.x - this.x;

double y = p.y - this.y;

return Math.sqrt(x*x + y*y);

}

public static void main(String[] args){

double x = 0.0;

Punto q1 = new Punto(3.0,4.0);

Punto q2 = new Punto();

x = q2.distancia(q1);

System.out.println(x);

}

Prueba.main

Page 34: Introducción a la programación y la informática. Tema 5

Pila de llamadas

• Ejemplo (3). El método main ha recibido en x el resultado dela llamada a distancia y está a punto de terminar:

20/10/2011 IIP - Curso 2011/12 34

5.0x q1

nullargs q2

DR

0.0x

0.0y

3.0x

4.0y

pila montículo

public double distancia(Punto p){

double x = p.x - this.x;

double y = p.y - this.y;

return Math.sqrt(x*x + y*y);

}

public static void main(String[] args){

double x = 0.0;

Punto q1 = new Punto(3.0,4.0);

Punto q2 = new Punto();

x = q2.distancia(q1);

System.out.println(x);

}

Prueba.main

Page 35: Introducción a la programación y la informática. Tema 5

Sobrescritura de los métodos de Object• Object es una clase predefinida de Java que define el comportamiento

común de todos los objetos del lenguaje: tras ser creados residen en el

heap y son accesibles por referencias.

• Un Object no tiene estructura interna, es un objeto vacío.

• Cualquier objeto de Java es un caso particular de Object, de quien

heredan sus métodos, entre los que destacan:

Comprueba si el objeto y o son el mismo objeto del heap.

Devuelve una String que indica la clase del objeto y un código numérico.

20/10/2011 IIP - Curso 2011/12 35

public boolean equals(Object o)

public String toString()

Page 36: Introducción a la programación y la informática. Tema 5

Sobrescritura de los métodos de Object

IIP - Curso 2011/12 36

• Una característica primordial de los métodos heredados es que en cadaclase se pueden sobreescribir a conveniencia.

• Ejemplo. En la clase Punto:

/** Comprueba si o es un Punto y sus

* coordenadas coinciden con las del punto

*/

public boolean equals(Object o){

return o instanceof Punto

&& this.x==((Punto)o).x

&& this.y==((Punto)o).y ;

}

/** Devuelve la información del punto

* en el formato "(x,y)"

*/

public String toString(){

return "("+this.x+","+this.y+")" ;

}

El estándar recomiendaque equals compruebesi o es de la clase(operador instanceof),y la coincidenciaatributo a atributo.

Page 37: Introducción a la programación y la informática. Tema 5

Sobrescritura de los métodos de Object

20/10/2011 IIP - Curso 2011/12 37

• Si Java encuentra el método sobreescrito en la clase, usa elcódigo interno de la clase,

• sino, usaría el código del método en Object.

Page 38: Introducción a la programación y la informática. Tema 5

Documentación de los métodos

20/10/2011 IIP - Curso 2011/12 38

La documentación de los métodos de una clase sirve para dosfines diferentes:

• Previamente a la implementación. Especifica todas las característicasdel método, respecto a los datos (incluyendo casos especiales), ycuál es el resultado deseado; la implementación debe hacerse deacuerdo con esta especificación.

• Posterior e independientemente de la implementación. Indica cómousar los métodos, es decir, cuál es su perfil, qué condicionesespeciales deben cumplir los parámetros y cuál es el resultado quese puede esperar en cada caso.

• Se debe evitar, en lo posible, incluir referencias a cómo se hanimplementado. Es en el cuerpo de los métodos donde debencomentarse los detalles de implementación.

Page 39: Introducción a la programación y la informática. Tema 5

Documentación de los métodos

20/10/2011 IIP - Curso 2011/12 39

Java tiene definido un estándar de documentación, en forma decomentarios a incluir en el código fuente.

• Si se sigue el estándar, la herramienta de Java javadoc generaautomáticamente el documento html con un estilo definido.

• Básicamente:

/** Decripción del método, incluyendo condiciones de

* de los datos y casos especiales.

* @param parámetro1 tipo1

…… ……

* @param parámetroN tipoN

* @return tipoRetorno valor devuelto

*/

Descripción del valor devuelto (para métodos no void)Descripción de los parámetros

Page 40: Introducción a la programación y la informática. Tema 5

Documentación de los métodos

20/10/2011 IIP - Curso 2011/12 40

En BlueJ javadoc se ejecutaal pasar de la vista de códigoa la vista de documentación