JFo 4 1 Esp
JFo 4 1 Esp
JFo 4 1 Esp
4-1
¿Qué es un método?
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivos
En esta lección se abordan los siguientes objetivos:
• Estructurar código en una clase
• Instanciar un objeto
• Comprender las ventajas de los métodos
• Usar el operador de punto (.) para acceder a los métodos
y campos del objeto
• Proporcionar argumentos para un método
• Devolver valores desde un método
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 3
Temas
• Cómo estructurar una clase
• Transferencia de valores a métodos
• Devolución de valores desde métodos
Declaración
¿Qué es un
import y Clase String Clase Random Clase Math
método?
paquetes
Sección 4
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 4
Clases que encontrará
En el desarrollo Java, encontrará muchas clases para
numerosos tipos de objetos distintos, incluidas...
• Clases propias que escribirá
• Clases escritas por otra persona
• Clases que pertenecen a Java
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 5
Clases que encontrará
• Estas clases describen los siguientes elementos de
los objetos…
– Propiedades (campos)
– Comportamientos (métodos)
• El objetivo de esta lección es ofrecer una descripción
de cómo trabajar con cualquier clase, sus campos y
sus métodos.
• En las siguientes lecciones de esta sección se explorarán las
clases importantes que proporciona Java.
• Comenzaremos explorando las clases y los métodos de un
modo más detallado.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 6
Ejercicio 1, parte 1
Consideremos un caso y cómo podemos modelar los
componentes implicados:
Es el cumpleaños de Alex. Ha reunido a un grupo de ocho
amigos para celebrarlo en un restaurante local. Cuando llega la
factura, nadie sabe exactamente lo que debe. Solo se conoce el
total antes de impuestos (5%) y la propina (15%). ¡Pero que no
cunda el pánico! Se ha traído el portátil y se le pide que
escriba un programa para calcular el total de todos.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 7
Ejercicio 1, parte 2
• Importe y edite el proyecto Tip01.
• Esto es lo que debe cada uno antes de impuestos (5%) y
la propina (15%):
Persona 1: 10 $ Persona 5: 7 $
Persona 2: 12 $ Persona 6: 15 $ (Alex)
Persona 3: 9 $ Persona 7: 11 $
Persona 4: 8 $ Persona 8: 30 $
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 8
Ejercicio 1, parte 3
El programa debe generar la siguiente salida:
person1: $12.0
person2: $14.4
person3: $10.8
person4: $9.6
person5: $8.4
person6: $18.0
person7: $13.2
person8: $36.0
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 9
Modelado de objetos
Puede que haya sentido la tentación de modelar el total
de cada persona escribiendo esto:
public class Tip01{
public static void main(String args[]){
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 10
Modelado de más objetos
Si tuviera que modelar dos invitados a cenar, podría tener
la tentación de copiar, pegar y cambiar el nombre:
public class Tip01{
public static void main(String args[]){
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 11
Modelado de varios objetos
• ¿Y si tuviera que hacer el cálculo para 1000 invitados?
//You might think …
//Do I really have to copy, paste, and rename 1,000
//times?
• ¿Qué sucede si uno de sus amigos olvida la cartera?
¿Qué sucede si ha cometido un error en la fórmula?
//You might think …
//Do I need to make 1,000 edits?!
//There has to be a better way!!!
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 12
Las variables ofrecen flexibilidad
Si se tiene que cambiar el porcentaje de los impuestos o la
propina...
• No habría que hacer 1000 modificaciones.
• Solo se debe editar cada variable una vez.
double tax = 0.05;
double tip = 0.15;
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 13
Los métodos ofrecen una flexibilidad similar
• Se repiten los mismos cálculos y comportamientos de impresión.
• Pero esta vez la lógica se puede escribir una sola vez en un
método.
double tax = 0.05;
double tip = 0.15;
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 14
Cuándo se deben utilizar los métodos
Es recomendable escribir un método si...
• Repite líneas de código muy parecidas,
incluidos los cálculos
• Necesita describir el comportamiento de un objeto
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 15
Cómo utilizar un método main
• El método main se denomina como controlador.
– Utilícelo para controlar los eventos de un programa.
– Utilícelo para acceder a campos y métodos, o bien a
otras clases.
• El método main no describe el comportamiento de
un objeto concreto.
– Manténgalo separado de las clases de objeto.
– Utilice solo un método main para cada aplicación.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 16
¿Cuál es el aspecto de las clases de objeto?
• El código debe ajustarse al siguiente formato.
• Veamos cómo se puede conseguir que nuestro código
tenga este aspecto:
1 public class Calculator{
2 public String name = "Junior Duke";
3 public int custID = 1205;
4
5
Propiedades
public String address;
public int orderNum;
6 public int age;
7
8 public void displayCustomer(){
9
10 }
Comportamientos
System.out.println("Customer: "+name);
11 }
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 17
Paso 1) Trasladar los campos desde el método main
public class Calculator{
//Fields
//Fields
public
publicdouble
doubletax
tax==0.05;
0.05;
public static void main(String args[]){
public
publicdouble
doubletip
tip==0.15;
0.15;
double tax = 0.05;
public
publicdouble
doubleoriginalPrice
originalPrice==10;
10;
double tip = 0.15;
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 18
Paso 2) Trasladar los comportamiento repetidos desde
el método main
public class Calculator{
//Fields
public double tax = 0.05;
public double tip = 0.15;
public double originalPrice = 10;
//Methods
public void findTotal(){
//Calculate total after tax and tip
//Print this value
}
19
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Paso 3) Eliminar el método main
public class Calculator{
//Fields
public double tax = 0.05;
public double tip = 0.15;
public double originalPrice = 10;
//Methods
public void findTotal(){
//Calculate total after tax and tip
//Print this value
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 20
¡Correcto!
public class Calculator{
//Fields
public double tax = 0.05;
Propiedades
public double tip = 0.15;
public double originalPrice = 10;
//Methods
calculateTip(){
public void findTotal(){
Comportamientos
Tip
//Calculate total after tax and tip
Totalvalue
//Print this
}
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 21
¿Dónde incluyo el método main?
public class CalculatorTest {
public static void main(String args[]){
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 22
Variables para objetos
int age = 22;
String str = "Happy Birthday!";
Scanner sc = new Scanner();
Calculator calc = new Calculator();
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 23
Uso del operador de punto
Coloque el operador de punto (.) después del nombre de
una variable para acceder a sus campos o métodos.
public class CalculatorTest {
public static void main(String args[]){
Calculator calc = new Calculator();
calc.printTip(); //prints 0.15
calc.tip = 0.10;
calc.printTip(); //prints 0.10
}
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 24
Ejercicio 2, parte 1
• Importe y abra el proyecto Tip02.
• Complete el método findTotal(), que debe:
– Calcular un total en función de los campos tax, tip y
originalPrice
– Imprimir el total de una persona
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 25
Ejercicio 2, parte 2
• En el método main:
– Instancie un objeto Calculator llamado calc.
– Observe NetBeans después de escribir "calc".
– Acceda a los campos y métodos de este objeto para
imprimir el total de cada persona en la fiesta de cumpleaños.
• Si prefiere usar otros valores, cambie tip y tax.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 26
Temas
• Cómo estructurar una clase
• Transferencia de valores a métodos
• Devolución de valores desde métodos
Declaración
¿Qué es un
import y Clase String Clase Random Clase Math
método?
paquetes
Sección 4
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 27
Lo que puede haber escrito
Es posible que haya escrito un programa como el siguiente:
• Se necesitan dos líneas para cada persona.
• Y más si decide imprimir los nombres o cambiar los valores de
impuestos o propina.
public class CalculatorTest{
public static void main(String args[]){
Calculator calc = new Calculator();
calc.originalPrice = 10;
calc.findTotal();
calc.originalPrice = 12;
calc.findTotal();
}
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 28
Aumento de la flexibilidad
• Pero es posible hacer lo mismo en una sola línea.
• También es peligroso escribir programas que accedan
directamente a los campos.
– Lo explicaremos más adelante.
– El objetivo de esta lección es prepararle para trabajar con
clases importantes proporcionadas por Java.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 29
Recuerdo de la clase JOptionPane
• Cuando agregamos el literal String "type
something:" a la llamada de método, proporcionamos
argumentos al método.
• Este argumento modifica la clase JOptionPane
resultante.
JOptionPane.showInputDialog("Type something:");
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 30
¿Cuándo pueden aceptar argumentos
los métodos?
• Verá que hay muchos métodos que se ven afectados por los
argumentos.
• Pero los métodos se deben escribir de forma que acepten
argumentos. De lo contrario, el compilador se queja.
• El método calculate se escribe de modo que no acepte argumentos.
Calculator calc = new Calculator();
calc.calculate(); //Good
calc.calculate(3); //Fail
calc.calculate(3, 2.0); //Fail
public void calculate(){
//How do I calculate?
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 31
Animación del argumento del método
Pero el método calculate se ha escrito para aceptar dos
argumentos:
• El primer argumento debe ser un valor de tipo int.
• El segundo argumento debe ser un valor de tipo double.
Calculator calc = new Calculator();
calc.calculate(3, 2.0);
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 32
El orden de los argumentos es importante
• ¿Qué sucede si invertimos el orden de los argumentos?
Calculator calc = new Calculator();
calc.calculate(2,0, 3);
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 33
Ejercicio 3, parte 1
• Importe y abra el proyecto Tip03.
• En el método main:
– Utilice una instancia de objeto Calculator y proporcione
argumentos a findTotal() para imprimir el total de cada
persona.
– Indicación: Observe el método findTotal() de la clase
Calculator para averiguar cuántos argumentos acepta este
método.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 34
Ejercicio 3, parte 2
¿A quién pertenece cada total?
• Modifique el método findTotal() para aceptar un
argumento name de tipo String adicional.
• Concatene la sentencia print para incluir name.
• Observe la queja de NetBeans en el método main y
revise las llamadas al método findTotal().
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 35
Argumentos y parámetros de método
Un argumento es un valor que se transfiere durante una
llamada a un método:
Calculator calc = new Calculator();
calc.calculate(3, 2.0); //should print 1.5
Argumentos
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 36
Parámetros de método: Ejemplos
Los métodos pueden aceptar cualquier número o tipo de parámetros:
public void calculate0(){
System.out.println("No parameters");
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 37
Ámbito de los parámetros
• A los métodos se les debe indicar lo que tienen que
hacer con los argumentos que reciban.
• Para ello, se utilizan parámetros de método.
– Los parámetros de método son variables que existen en todo
el ámbito de un método. Se crean en la declaración de método.
– Ámbito hace referencia al {bloque de código} que pertenece a
un método después de su declaración.
public void calculate(int x, double y){
System.out.println(x/y);
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 38
Referencia a parámetros de método
• Se puede hacer referencia a una variable en cualquier
parte de su bloque actual después de declararse.
• No se puede hacer referencia a una variable fuera del
bloque donde se ha declarado o antes de que se declare.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 39
Temas
• Cómo estructurar una clase
• Transferencia de valores a métodos
• Devolución de valores desde métodos
Declaración
¿Qué es un
import y Clase String Clase Random Clase Math
método?
paquetes
Sección 4
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 40
Búsqueda de la suma total: Caso
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 41
Suma de totales
Otra forma de plantearlo:
• He calculado un valor en un método...
• Pero está almacenado como una variable que no puede
existir fuera del ámbito de su bloque de método...
• ¿Cómo puedo obtener este valor desde fuera?
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 42
Suma de totales
double total
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 43
Suma de totales
Si piensa escribir un programa como este:
public class CalculatorTest{
public static void main(String args[]){
Calculator calc = new Calculator();
calc.findTotal(10);
calc.findTotal(12);
System.out.println(calc.findTotal(10) + calc.findTotal(12));
}
}
• Ha acertado a medias.
• Pero NetBeans presenta el siguiente error:
'void' type not allowed here
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 44
¿Qué es un tipo void?
• showInputDialog() es un método de tipo String.
– Devuelve un valor que se puede almacenar como String.
String input = JOptionPane.showInputDialog("Type something:");
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 45
Tipos de retorno de método
• Las variables pueden tener valores de muchos tipos distintos:
long
Calculadora
• Las llamadas de método también devuelven muchos tipos
distintos:
long
Calculadora
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 46
Tipos de retorno de método: Ejemplos
Los métodos deben devolver datos que coincidan con su
tipo de retorno:
public void printString(){
System.out.println("Hello");
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 47
Animación de retorno del método
Los ejemplos de código siguientes producen resultados equivalentes:
public static void main(String[] args){
int num1 = 1, num2 = 2;
int result = num1 + num2;
System.out.println(result);
}
public
public static
static void
void main(String[]
main(String[] args){
args){
int num1 = 1, num2 = 2;
1 3 num2);
int result = sum(num1, 2
System.out.println(result);
System.out.println(result);
}
}
public static
public static int 1 x,
int sum(int
sum(int 2 y){
x, int
int y){
return(x1 +
return(x 3
+ 2y);
y);
}
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 48
Transferencia de argumentos y
devolución de valores
1 2
Valor transferido
desde el método de Valor recibido por el
llamada al método de Objetos método de trabajo
trabajo
método
1
2
3 1
4 2
5 3
6 4
7
3
Valor devuelto al
método de llamada
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 49
Ejercicio 4, parte 1
• Edite la solución Tip03.
– O importe el proyecto Tip04.
• Busque e imprima el total de toda la tabla, sin incluir los
impuestos ni la propina.
– Deberá editar findTotal()para que devuelva su valor
calculado.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 50
Ejercicio 4, parte 2
• Persona8 ha olvidado su cartera. Y la comida de Alex
pretende ser un regalo de cumpleaños. Modifique
findTotal()para que el costo de sus comidas se
reparta por igual con el resto del grupo.
• Vuelva a calcular el total de toda la tabla. Este número
no debe haber cambiado.
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 51
Resumen de la sintaxis de método
Nombre del
método
Parámetros
Tipo de retorno de método
public double calculate(int x, double y){
double quotient = x/y;
return quotient; Implantación
}
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 52
Resumen
En esta lección, debe haber aprendido lo siguiente:
• Estructurar código en una clase
• Instanciar un objeto
• Comprender las ventajas de los métodos
• Utilizar el operador de punto para acceder a los
campos y los métodos de un objeto
• Proporcionar argumentos para un método
• Devolver valores desde un método
JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 53