Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

JFo 4 1 Esp

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 54

Fundamentos de Java

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[]){

double person1 = 10;


double total1 = person1*(1 +.05 +.15);
System.out.println(total1);
}
}

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[]){

double person1 = 10;


double total1 = person1*(1 +.05 +.15);
System.out.println(total1);

double person2 = 12;


double total2 = person2*(1 +.05 +.15);
System.out.println(total2);
}
}

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;

double person1 = 10;


double total1 = person1*(1 +tax +tip);
System.out.println(total1);

double person2 = 12;


double total2 = person2*(1 +tax +tip);
System.out.println(total2);

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;

double person1 = 10;


double total1 = person1*(1 +tax +tip);
System.out.println(total1);

double person2 = 12;


double total2 = person2*(1 +tax +tip);
System.out.println(total2);

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;

double person1 = 10;


double total1 = person1*(1 +tax +tip);
System.out.println(total1);
}
public static void main(String args[]){
//
//double tax = 0.05;
//
//double tip = 0.15;
//
//double person1 = 10;
double total1 = person1*(1 +tax +tip);
System.out.println(total1);
}
}

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
}

public static void main(String args[]){


// double total1 = person1*(1 +tax +tip);
// System.out.println(total1);
}

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
}

//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. 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[]){

//Create Calculator object instance


Calculator calc = new Calculator();

calc.tip = 0.10; //Altering a field


calc.findTotal(); //Calling a method
}
}

• Incluya el método main en otra clase, como una clase de prueba.


• El método main controla la acción del programa:
– Crea instancias de los objetos.
– Llama a los campos y los métodos de una instancia con el operador de
punto (.).

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();

• Los objetos, como los primitivos, se representan


mediante variables.
• La mayoría de los objetos requieren la palabra clave
new cuando se inicializan para crear instancias nuevas.
– Esto se denomina instanciar un objeto.
– Hay algunas excepciones, como los objetos String, que no
requieren la palabra clave new.

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
}
}

public class Calculator{


public double tip = 0.15; //initialized value 0.15
public void printTip(){
System.out.println(tip);
}
}

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.

calc.originalPrice = 10; //Dangerous


calc.findTotal();

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);

public void calculate(int


3 x, double
2.0 y){
System.out.println(x/y);
3/2.0 //prints 1.5
//prints 1.5
}

• A la variable int x se le asigna el valor 3.


• A la variable double y se le asigna el valor 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);

• Se obtiene un error del compilador:


– A int x no se le puede asignar un valor double.
– El primer argumento debe ser un valor int.
x, double3 y){
public void calculate(int 2.0
System.out.println(x/y);
}

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

Un parámetro es una variable que se define en la


declaración de método: 3 2.0
public void calculate(int x, double y){
System.out.println(x/y); Parámetros
}

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");
}

public void calculate1(int x){


System.out.println(x/2.0);
}

public void calculate2(int x, double y){


System.out.println(x/y);
}

public void calculate3(int x, double y, int z){


System.out.println(x/y +z);
}

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.

public void calculate(int x, double y){


System.out.println(x/y); Ámbito de x
}

public void calculate2(){ No es ámbito de x


System.out.println(2*x); //What is x?
}

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

– Sus amigos están impresionados con lo que ha aprendido en


el curso de Fundamentos de Java. Alex pregunta: “¿Cuál es
el total de toda la mesa?”. Saber la respuesta a esta
pregunta permitirá asegurarse de que todos contribuyan y
que el camarero reciba el importe correcto.

– ¿Cómo se puede incluir en el código?

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?

public void findTotal(double price, String name){


double total = price*(1+tax+tip);
System.out.println(name +": $" +total);
}

JFo 4-1
¿Qué es un método? Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 42
Suma de totales

public class CalculatorTest public class Calculator

public static void public void findTotal()


main(String[] args)

double total

¡Ajá! ¡Intenta obtenerme!

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:");

• Los métodos de tipo void no devuelven ningún valor.


– No hay valores para devolver después de llamar a un método
de tipo void.
System.out.println("println is a void type method");

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

• Cómo conseguir que un método devuelva un valor:


– Declare el método como un tipo de devolución que no sea void.
– Utilice la palabra clave return en un método, seguida de un valor.

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");
}

public String returnString(){


return("Hello");
}

public int sum(int x, int y){


return(x + y);
}

public boolean isGreater(int x, int y){


return(x > y);
}

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

También podría gustarte