Bienvenidos sean a este post, hoy hablaremos sobre metodos los cuales en otros lenguajes son llamados tambien funciones.
Los metodos son una accion determinada por distintos tipos de instrucciones, los metodos estan almacenados en las clases y estos nos permitiran ejecutar una accion X, p.e. println() es un metodo que nos pemite mostrar textos en una consola, main() tambien es un metodo y es el encargado de ejecutar nuestra clase pero no deja de ser un metodo, si bien hemos visto algunos metodos muy basicos hoy veremos como construirlos, como es su estructura y otras caracteristicas, primero veamos su estructura:
modificador tipoRetorno nombreMetodo ([Lista de parametros])
{
.…. Instrucciones …..
}
Veamos cada una de sus caracteristicas:
- modificador, el tipo de acceso a nuestro metodo (public, private, protected)
- tipoRetorno, el tipo de valor que devolvera (int, long, String, etc)
- nombreMetodo, el nombre que va a identificar a nuestro metodo y deben evitar que coincida con las palabras reservadas
- Lista de parametros, por esta via podremos enviar informacion a nuestro metodo pero es opcional
- Instrucciones, el conjunto de instrucciones para nuestro metodo
El llamar a un metodo puede producir dos resultados, el primero es retornar un valor y el segundo es procesar una informacion y no devolver nada, podemos llamar directamente al metodo y que ejecute esas instrucciones o si devuelve un valor podemos asignarselo a una variable, veamos primero un ejemplo de llamada normal a un metodo cualquiera:
mifuncion();
Este es un llamado simple que podemos hacer en cualquier parte del cuerpo de main() ahora veamos como utilizarlo para asignar un valor a una variable:
int total = sumar(6,9);
En esta linea tenemos un metodo que suma los valores enviados al mismo, en este caso sumar(), el cual retornara un valor de 15 y se lo asignara a total para poder ser utilizado por el programa, antes de ver un ejemplo hablemos sobre una de las caracteristicas mas utilizadas en lenguajes derivadas de C o C++ en este caso void (y no el Boyyy de God of War).
Void es una palabra reservada y usualmente puede ser utilizada como comodin porque nos permite crear un metodo sin necesidad de que devuelva un tipo de dato especifico pero tambien en algunos otros casos he visto que se usa mucho para cuando no sabemos si debe devolver un tipo u otro de dato y por este motivo es utilizado por la mayoria (aunque no sea una buena practica). En los ejemplo que vimos aca en Java el main() es de tipo void pero en mis posts de C++ para Linux el main() es de tipo int porque nos permite retornar un valor de cero donde indicaria que sale correctamente y es una mejor practica.
Para entender un poco mejor el concepto de metodos veamos un ejemplo:
ExampleVoid.java
public class ExampleVoid
{
public static void main(String[] args)
{
metodoRankPuntos(255.7);
}
public static void metodoRankPuntos(double puntos)
{
if (puntos >= 202.5)
{
System.out.println("Rank A1");
}
else if (puntos >= 122.4)
{
System.out.println("Rank A2");
}
else
{
System.out.println("Rank A3");
}
}
}
En este ejemplo podemos ver como nuestra clase en su cuerpo main() unicamente llama a metodoRankPuntos() al cual le enviamos un valor, para este caso 255.7, despues tenemos por fuera de main() definido al metodo metodoRankPuntos(), en este metodo tendremos tres condicionales, el primero evaluara si el valor informado es mayor o igual a 202.5, en caso de ser verdadero mostrara el mensaje Rank A1, en caso contrario chequea si el valor es mayor o igual a 122.4 , en caso de ser verdadero mostrara el mensaje Rank A2, de caso contrario mostrara el mensaje Rank A3, si lo compilamos y ejecutamos obtendremos la siguiente salida:
tinchicus@dbn001vrt:~/programacion/java/program$ java ExampleVoid
Rank A1
tinchicus@dbn001vrt:~/programacion/java/program$
Observen como el valor enviado coincidio con el primer condicional muestra el mensaje Rank A1 y sale del programa porque el metodo main() no tiene otro metodo o instruccion en su cuerpo y el metodo llamado es lo unico que hace.Por ultimo, veremos que es el pasaje de valores como dijimos antes los metodos tambien tienen la posibilidad de tener una lista de parametros o atributos, los cuales contendran valores para ser procesados por nuestro metodo, estos pueden ser informados por un valor directo o por una referencia, tambien conocida como variable, tambien podemos utilizar otro metodo perteneciente a un objeto creado de una clase, veamos un ejemplo de como enviar informacion a un metodo:
swappingExample.java
public class swappingExample
{
public static void main(String[] args)
{
int a = 30;
int b = 45;
System.out.println("Antes de cambiarlo, a = "
+ a + " y b = " + b);
funcionSwap(a,b);
System.out.println(
"\n**Ahora antes y despues del cambio los" +
" valores seran los mismos**");
System.out.println("Despues del cambio, a = "
+ a + " y b = " + b);
}
public static void funcionSwap(int a, int b)
{
System.out.println(
"Antes del cambio(Dentro), a = " + a
+ " y b = " + b);
int c = a;
a = b;
b = c;
System.out.println(
"Despues del cambio(Dentro), a = " + a
+ " y b = " + b);
}
}
En este ejemplo dentro del cuerpo main() tendremos dos variables, a y b, con los valores 30 y 45 respectivamente, mostraremos los valores de a y b en pantalla, luego llamaremos al metodo funcionSwap() donde enviaremos los valores de a y b, luego mostrara un mensaje y nuevamente los valores de a y b, hablemos del metodo funcionSwap(), este metodo recibira dos valores de tipo int primero mostraremos un mensaje, aclarando que es dentro del metodo, los valores de a y b, luego haremos el intercambio entre a y b, y finalmente lo mostraremos por otro mensaje aclarando que es dentro del metodo, compilemos y ejecutemos para ver la salida:
tinchicus@dbn001vrt:~/programacion/java/program$ java swappingExample
Antes de cambiarlo, a = 30 y b = 45
Antes del cambio(Dentro), a = 30 y b = 45
Despues del cambio(Dentro), a = 45 y b = 30
**Ahora antes y despues del cambio los valores seran los mismos**
Despues del cambio, a = 30 y b = 45
tinchicus@dbn001vrt:~/programacion/java/program$
Observen como primero vemos el valor de a y b, luego antes de cambiarlo pero dentro del metodo, luego lo vemos cambiado siempre dentro del metodo y por ultimo volvemos a mostrar los valores de a y b pero del cuerpo del main() donde vemos que tienen los valores de antes pero que paso? no los habiamos cambiado? Si los habiamos cambiado pero dentro del metodo y nosotros al no devolver los valores fuera del mismo el main() nunca tuvo ese cambio y por este motivo mantuvo los valores sin cambiarlos:
En resumen, hoy hemos visto los metodos, su estructura, algunas formas de llamarlo, asignarlo a una variable, hemos hablado sobre el void, para que se usa, por ultimo como enviar informacion a un metodo, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.


Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50