Creación de métodos.¶
Los métodos en Java son bloques de código que realizan una tarea en concreto, se utilizan para encapsular la lógica de un programa en funciones o procedimientos reutilizables. Los métodos sirven para hacer nuestro código más legible, más fácil de mantener y sin código duplicado.
Todo el tiempo hemos estado usando un método llamado main
, dentro de él se encuentran todas las sentencias que hemos ido ejecutando, ahora vamos a crear nuestros propios métodos. Para ello tendremos en cuenta:
- Tienen que estar dentro de una clase
- Tienen una definición: visibilidad [static] tipoDeRetorno nombreMetodo ([parámetros])
- tipoDeRetorno, indica el tipo de dato que devuelve el método. Si no devuelve ningún valor se pone void
- nombreDelMetodo
- parámetros: lista de variables que acepta el método, esto es opcional.
- Invocación a métodos: los métodos se invocan desde otros métodos o desde el
main
, para llamar a un método se utiliza el nombre y paréntesis, y si tiene se añaden los argumentos.

Importante
La definición de los métodos se alinean unos debajo de otros, no se puede insertar un método dentro de otro método, y además deben estar dentro de la clase.
Un valor devuelto es información que un método devuelve al código que lo llamó. Cada método solo puede devolver un valor: cuando un método regresa, deja de ejecutarse (y continuamos donde lo dejamos antes de llamar al método). Para que el código que llamó al método use el valor devuelto, el valor devuelto debe almacenarse en una variable o usarse inmediatamente.
public static type nombreMetodo(parametros){
....
return expresion;
}
......
type nombreVariable = nombreMetodo(parametros)
public class Main {
public static void main(String[] args) {
boolean gameOver = true;
int puntuacion = 5000;
int nivelCompletado = 5;
int bonus = 10;
int score = calcularPuntuacion(gameOver, puntuacion, nivelCompletado, bonus);
System.out.println(score);
// otra forma de hacerlo es pasarle directamente el valor de las variables
score = calcularPuntuacion(true, 1000, 10, 30);
System.out.println(score);
}
public static int calcularPuntuacion(boolean gameOver, int puntuacion, int nivelCompletado, int bonus) {
if (gameOver) {
int puntuacionFinal = puntuacion + (nivelCompletado * bonus);
puntuacionFinal += 100;
return puntuacionFinal;
} else {
return -1;
}
}
// OTRAS FORMAS MÁS EFICIENTES DE CREAR EL MÉTODO calcularPuntuaciones
// 1. Método más eficiente sin sentencia else
public static int calcularPuntuacion(boolean gameOver, int puntuacion, int nivelCompletado, int bonus) {
if (gameOver) {
int puntuacionFinal = puntuacion + (nivelCompletado * bonus);
puntuacionFinal += 100;
return puntuacionFinal;
}
return -1;
}
// 2. Otra forma de realizar el método calcularPuntuacion sin utilizar dos sentencias de return seria
public static int calcularPuntuacion(boolean gameOver, int puntuacion, int nivelCompletado, int bonus) {
int puntuacionFinal = -1;
if (gameOver) {
int puntuacionFinal = puntuacion + (nivelCompletado * bonus);
puntuacionFinal += 100;
}
return puntuacionFinal;
}
}
En el ejemplo vemos que se han usado muchos de los conceptos expuestos en la presente unidad, pero nos queda realizar una serie de matizaciones para poder lograr un pleno conocimiento de lo que es un método.
Aunque se ha tratado todo como método, hay que hacer una distinción entre método y función:
- Función: Las funciones son un conjunto de líneas de código (instrucciones), encapsulados en un bloque, usualmente reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente retornan un valor. En otras palabras una función puede recibir parámetros o argumentos (algunas no reciben nada), hace uso de dichos valores recibidos como sea necesario y retorna un valor usando la instrucción
return
, si no retorna algo, entonces no es una función. En Java las funciones usan el modificadorstatic
. - Método: los métodos y las funciones en Java están en capacidad de realizar las mismas tareas, es decir, son funcionalmente idénticos, pero su diferencia radica en la manera en que hacemos uso de uno u otro (el contexto). Un método también puede recibir valores, efectuar operaciones con estos y retornar valores, sin embargo en método está asociado a un objeto, siempre, básicamente un método es una función que pertenece a un objeto o clase, mientras que una función existe por sí sola, sin necesidad de un objeto para ser usada.
Una vez visto esto, se puede enunciar que en Java se debe hablar de métodos y no de funciones, pues en Java estamos siempre obligados a crear un objeto para usar el método. Para que sea una función esta debe ser static
, para que no requiera de un objeto para ser llamada.
Una vez que hemos aclarado esto, podemos hacer uso, en cualquier circunstancia, de nuestros métodos. Nos queda ver qué es lo que pasa si llamamos a un método a sí mismo, ¿es posible?
Actividades¶
-
AC 401 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC1 / 3p). Has de generar un programa que diga si se le concede una hipoteca a una persona o no. Para ello deberás generar tres métodos:
edadOptima
: este método recibirá como parámetro la edad, que si es mayor de 18 podrá optar a un préstamo. Si es mayor de 65 se le denegará. No ha de mostrar mensaje. Devolverá si la edad es óptima o no.ingresosPersona
: se le introducirá el total de ingresos de una persona y el coste de la hipoteca que solicita. Si la hipoteca es mayor de un tercio de los ingresos debe denegarla.calculoHipoteca
: se le pasarán por parámetros los resultados obtenidos y deberá ver si se le concede o no. Debe mostrar un mensaje afirmativo, y en caso de que se deniegue mostrar las razones.
Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio. -
AC 402 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC1 / 3p). Has de generar un programa que calcule el coste por niño en una excursión. Para ello se deberán programar los siguientes métodos:
calculoAutobus
: este método recibirá como parámetro el número de niños. Ha de devolver el coste por niño del autobús.calculoEntradas
: este método recibirá como parámetro el número de niños. Ha de devolver el coste por niño por entrada.calculoExcursion
: se le pasarán por parámetros los resultados obtenidos y deberá calcular el total de cada niño en la excursión. Se deberá mostrar un mensaje en el que se indique el precio desglosado y el total por niño.
Info
La forma de cobrar el autobús es la siguiente: si son 100 alumnos o más, el costo por cada alumno es de 65.0 euros; de 50 a 99 alumnos, el costo es de 70.5 euros, de 30 a 49, de 95.0 euros, y si son menos de 30, el costo del alquiler del autobús es de 400.0 euros, sin importar el número de alumnos.
La forma de cobrar las entradas es la siguiente: si son 100 alumnos o más, el costo por cada alumno es de la mitad del coste base de la entrada; de 50 a 99 alumnos, el costo es dos terceras partes del coste base y menos de 50 es el coste base de la entrada. Este coste ha de estar parametrizado, y ha de ser un dato global y lo más protegido posible. Para la temporada 2023/2024 su coste es de 9.99€
Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio. -
AC 403 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC1 / 3p). Este programa calculará la nota media de un estudiante basándose en tres tipos de evaluaciones (exámenes, trabajos y participación). Deberás usar varios métodos para desglosar el cálculo de cada categoría. El programa deberá contener los siguientes métodos:
calculoExamenes
: este método recibirá como parámetros las notas de los exámenes. Devolverá el promedio de los exámenes.calculoTrabajos
: este método recibirá como parámetro las notas de los trabajos. Devolverá el promedio de los trabajos.calculoParticipacion
: este método recibirá la nota de participación del alumno. Devolverá la nota de participación.calculoNotaFinal
: este método recibirá los resultados de los métodos anteriores y calculará la nota final del alumno. La nota final será una combinación ponderada: exámenes 50%, trabajos 40%, participación 10%. Se mostrará un desglose y el promedio final del alumno.
Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio. -
AC 404 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC1 / 3p). Este programa calculará el Índice de Masa Corporal de una persona a partir de su peso y altura. Se usará una serie de métodos para hacer los cálculos y evaluar la categoría del IMC (bajo peso, normal, sobrepeso, etc.).El programa deberá contener los siguientes métodos:
calculoIMC
: recibirá como parámetros el peso (en kg) y la altura (en metros). Devolverá el resultado del IMC utilizando la fórmula: IMC = peso / (altura * altura).clasificacionIMC
: recibirá como parámetro el resultado del IMC calculado. Devolverá la categoría correspondiente en base a los siguientes valores:- Menos de 18.5: Bajo peso
- Entre 18.5 y 24.9: Peso normal
- Entre 25 y 29.9: Sobrepeso
- 30 o más: Obesidad
resultadoFinalIMC
: se le pasarán por parámetro el peso, la altura, el IMC y la clasificación del mismo, y deberá mostrar un mensaje con toda la información desglosada.
El IMC
El IMC es un indicativo poco exacto de la apariencia de una persona. En este ejercicio se hace uso del mismo a título educativo, en ningún caso se pretende que el alumnado tenga una concepción negativa de sí mismo.
Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio. -
AC 405 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC1 / 3p). Este programa calculará el salario neto de un trabajador tras aplicar deducciones como impuestos y seguridad social. El programa deberá contener los siguientes métodos:
calculoImpuestos
: este método recibirá como parámetro el salario bruto y el porcentaje de impuestos aplicables. Devolverá la cantidad descontada por impuestos.calculoSeguridadSocial
: este método recibirá como parámetro el salario bruto y el porcentaje que se descuenta para la seguridad social. Devolverá el descuento correspondiente.calculoSalarioNeto
: recibirá como parámetros el salario bruto, el importe de impuestos y el importe de seguridad social. Devolverá el salario neto del trabajador. Mostrará un desglose del salario bruto, las deducciones y el salario neto final.
Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio. -
AR 406 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC1 / 3p). Este programa convertirá una temperatura de grados Celsius a Fahrenheit y Kelvin. Utilizará varios métodos para descomponer el cálculo y mostrar los resultados. El programa deberá contener los siguientes métodos:
convertirAFahrenheit
: este método recibirá como parámetro una temperatura en grados Celsius y devolverá su equivalente en grados Fahrenheit. La fórmula de conversión es: F = (C * 9/5) + 32.convertirAKelvin
: este método recibirá como parámetro una temperatura en grados Celsius y devolverá su equivalente en Kelvin. La fórmula de conversión es: K = C + 273.15.mostrarResultados
: este método recibirá como parámetros la temperatura en Celsius, Fahrenheit y Kelvin, y deberá mostrar un mensaje con los valores de las tres temperaturas de forma clara.
Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio. -
PR 407 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC2 / 5p). Desarrolla un programa que contenga:
- Un método que pida al usuario introducir números por teclado, haga la suma de éstos y muestre el resultado al salir del programa. El usuario controla si desea continuar o no ingresando números, ya que si inserta un 0 sale del bucle, el mensaje que se muestra al usuario iterativamente es: “Inserta un número (0 para salir)”. Al finalizar se muestra: “La suma de los valores es X”, donde X es el total.
- Agrega al programa anterior un método que de cada número introducido por parámetro diga si es par o impar. Se llamará
esPar
. - Gracias al uso de variables y su definición, genera dos métodos que calculen de los números introducidos cuál es el máximo y cuál es el mínimo. Se llamarán
maxIntroducido
yminIntroducido
.
Es obligatorio el uso de métodos y comentarios en javadoc para obtener la máxima puntuación del ejercicio.
-
PR 408 (RA2 / CE2b, CE2d, CE2e, CE2f, CE2i / IC2 / 5p). Desarrolla un programa que muestre el siguiente menú:
- Entrantes
- Primeros
- Segundos
- Postres
- Salir
El menú ha de devolver la opción selecciona. En función de esta, cada uno de ellos (salvo en el 5) deberás mostrar un mínimo de 3 opciones (a tu elección) cada opción con un precio diferente. Sería interesante que generases los siguientes métodos (o puede que otros):
entrantes
: Muestra el menú de entrantes, no devuelve nada solo mensaje del plato seleccionado.primerosPlatos
: Muestra el menú de primeros platos, no devuelve nada solo mensaje del plato seleccionado.segundosPlatos
: Muestra el menú de segundos platos, no devuelve nada solo mensaje del plato seleccionado.postres
: entrantes: Muestra el menú de postres, no devuelve nada solo mensaje del plato seleccionado.
Al final se ha de generar otro método que muestre la cuenta total. Es obligatorio el uso de métodos y comentarios en
javadoc
para obtener la máxima puntuación del ejercicio.Aclaración
Un menú ha de estar compuesto por al menos un primero o un segundo. Esto ha de servirte como indicador para poder salir del menú. El menú ha de mostrarse hasta que se marque Salir, pero el precio no se mostrará si no se ha rellenado un menú válido.
Se considerará seleccionado cuando se entre al menú de opciones. No se contempla entrar y no elegir.