Las clases en Java suelen disponer de métodos que son las acciones que pueden realizarse sobre los objetos que se han creado o instanciado de una determinada clase.
Para conocer los métodos que se pueden usar con los objetos de una clase hay que consultar la documentación de la misma donde debe aparecer una lista con todos los métodos disponibles, así como la forma de uso.
Los métodos disponibles para la clase Ficha que estamos usando de ejemplo se pueden encontrar junto con la descarga de la clase. Para conocer los métodos que ofrecen las clases propias de Java debes consultar la API de Java.
En el caso de la clase Ficha, puedes encontrar los siguientes métodos:
De manera similar puedes ver un extracto de los métodos que ofrece la clase Random de Java:
Llamada a un método
La utilización de un método se realiza haciendo una llamada al mismo. De forma general, se hará indicando previamente el nombre del objeto sobre el que se quiere efecutar la acción del método, seguido del nombre del método separado por un punto. Se finaliza con los paréntesis en los que se pueden indicar una serie de valores al método.
nombreObjeto.nombreMétodo();
nombreObjeto.nombreMétodo(valorParámetro1, valorParámetro2);
Parámetros formales y reales
La información ofrecido por la documentación de los métodos nos informa del número de parámetros que hay que utilizar y el tipo de dato al que deben corresponder en la llamada al método.
Observando la clase Ficha, podemos encontrar, por ejemplo, el método bajar al que no se debe indicar ningún parámetro. En cambio, al método reiniciar se debe llamar con dos parámetros de tipo int.
bajar()
reiniciar(int posicionX, int posicionY)
El nombre que aparece en los parámetros de la documentación de los métodos de las clases es simplemente informativo. Se llaman parámetros formales, y no es necesario utilizar esos nombres como parámetros cuando se hace la llamada al método.
Los parámetros reales, que serán los que se utilicen en el momento de hacer la llamada al método, puede ser cualquier valor, variable o expresión que dé como resultado un valor del mismo tipo que el indicado en la documentación. No hay que indicar el tipo de dato junto al parámetro real como se ve con los parámetros formales.
El orden de los parámetros no puede alterarse, y siempre debe haber una correspondencia entre el tipo de dato del parámetro formal con el tipo de dato del parámetro real.
Observa como ejemplo las siguientes llamadas a métodos de la clase Ficha:
//Crear objeto de la clase Ficha Ficha ficha1 = new Ficha(); //Llamada al método bajar que no tiene parámetros ficha1.bajar(); //Llamada al método reiniciar que debe tener dos parámetros int ficha1.reiniciar(3, 2);
Uso directo de métodos en la creación de objetos
Para llamar a un método puedes usar directamente un objeto creado en el momento de hacer la llamada al método.
Por ejemplo:
//Crea una ficha nueva, obtiene sus coordenadas y las muestra en pantalla System.out.println(new Ficha().dameCoordenadas());
Esta forma de trabajar con los objetos puede interesar cuando no hay que volver a hacer referencia posteriormente al objeto creado. En el ejemplo que acabas de ver tendrías el problema de que no podrías volver a utilizar ningún otro método sobre el objeto Ficha que se ha creado. Por ejemplo, no podrías subirla, bajarla, etc.
Este otro ejemplo puede tener más sentido para el caso de que desees generar un número aleatorio y no vuelvas a necesitar utilizar el objeto Random posteriormente para obtener más números aleatorios:
int numAleatorio = new Random().nextInt();
Valores de retorno
La llamada a algunos métodos puede devolvernos o retornarnos un valor como resultado de la ejecución del método. Es importante conocer el tipo de dato que nos retorna un determinado método. De nuevo eso se comprueba en su documentación, concretamente en la parte izquierda de los métodos.
Puedes comprobar que muchos de ellos utilizan como retorno el tipo void. Eso indica que el método no retorna ningún valor.
Por ejemplo, la declaración del método bajar informa que no retorna ningún valor:
void bajar()
En cambio, en la documentación puedes comprobar que el método dameCoordenadas retorna un String, el método dameNumMovimientos retorna un int o el método estáEnBorde que retorna un valor boolean.
java.lang.String dameCoordenadas()
int dameNumMovimientos()
boolean estáEnBorde()
El valor retornado por la llamada a un método puede utilizarse de igual manera que un valor del mismo tipo de dato que el que retorna. Simplemente indicando la llamada al método estarás haciendo referencia al valor que retorna, además de que se ejecute su código y realice las acciones propias del método. Por ejemplo:
Ficha ficha1 = new Ficha(); //Valor de retorno que se guarda en una variable String dondeEstaLaFicha = ficha1.dameCoordenadas(); System.out.println("La ficha está en: " + dondeEstaLaFicha); ficha1.subir(); //Valor de retorno que se usa directamente System.out.println("Ahora está en: " + ficha1.dameCoordenadas()); System.out.println("Se ha movido: " + ficha1.dameNumMovimentos() + " veces"); //Valor de retorno que se usa como parte de una expresión String peligra = ficha1.estáEnBorde() ? "Cuidado!!!" : "No hay peligro"; System.out.println(peligra);
Como has podido comprobar, la clase Random de Java también tiene métodos que retornan valores. Por ejemplo observa el método nextInt. Este método retorna un valor int que es generado aleatoriamente por la clase Random.
Este ejemplo muestra en la salida estándar un número entero aleatorio:
Random generadorNum = new Random(); //En este ejemplo se va a utilizar directamente el valor retornado // dentro de la llamada al método System.out.println System.out.println(generadorNum.nextInt());
Habrás podido comprobar que la clase Random tiene declarados dos métodos nextInt. Las clases pueden tener varios métodos con el mismo nombre, pero siempre habrá alguna diferencia en los parámetros. Puede ser en su número o en su tipo de dato.
int nextInt()
int nextInt(int n)
Para utilizar el segundo tipo del método nextInt, debemos hacer la llamada con un parámetro int, como indica en su declaración. En este ejemplo, se muestra un número aleatorio entre 1 y 10:
Random generadorNum = new Random(); //Obtener un número entre 0 y 9 //En este caso se está guardando el valor retornado en una variable int numAleatorio = generadorNum.nextInt(10); //Sumar 1 para que esté entre 1 y 10 numAleatorio++; System.out.println(numAleatorio);