Métodos Algoritmos y Desarrollo de Programas I
Cuando utilizar métodos Los métodos se utilizan para romper un problema en pedazos de forma que este resulte mas manejable. (Divide and Conquer) Se utilizan también cuando tenemos grupos de instrucciones que se repiten en distintos puntos de un programa.
Métodos… Los métodos sirven para hacer un programa mas simple. Un método lleva a cabo una tarea en específico. Estas pueden ser de diversa naturaleza: Input Output Cálculo Un método debe incluir: Encabezado Cuerpo
Definición de un método public static void displayMesssage() { System.out.println("Hello"); } Encabezado Cuerpo
Elementos del encabezado public static void displayMessage() { System.out.println("Hello"); } Modificadores “Return Type” Nombre del método Paréntesis con lista de parámetros
Descripción de los elementos del encabezado Modificadores public - el método está disponible para ser usado fuera de la clase static - el método pertenece a la clase en general “Return type” void tipo de dato Nombre del método debe ser descriptivo relacionado a la tarea Paréntesis - puede contener una lista de variables que se conocen con el nombre de parámetros
Llamadas a un método Un método es ejecutado cuando es llamado o invocado desde otro método. El método main es el único que es ejecutado automáticamente al comenzar la ejecución de un programa. El método displayMessage descrito antes se llamaría así: displayMessage(); Al hacer la llamada no se incluyen ni los modificadores ni el void. Es como si ejecutáramos una instrucción.
Métodos con lista de parámetros El metodo displayMessage() no tiene parámetros por eso los parentesis estan vacios. El siguiente método contiene un parámetro: public static void displayValue( int num) { System.out.println(“ The value is: ” + num); } Un ejemplo de llamada a este método sería: displayValue( 23); Los valores que se envián al llamar un método se conocen como argumentos.
Ejemplo… displayValue(5); public static void displayValue(int num) { System.out.println("The value is " + num); } El argumento: 5 es copiado en la variable parámetro num. El método va a mostrar: The value is 5
Ejemplo con dos parametros… showSum(5.0,10.0); public static void showSum(double num1, double num2) { double sum;//to hold the sum sum = num1 + num2; System.out.println("The sum is " + sum); } El argumento 5 es copiado a la variable parámetro num1 El argumento 10 es copiado a la variable parámetro num2
Argumentos y Parámetros El tipo del argumento tiene que corresponder al tipo del parámetro en la declaración. La correspondencia entre argumentos y parámetros es de uno a uno según el orden. En el método anterior el 5 va a corresponder a num1 y el 10 a num2. ( 5 y 10 son argumentos, num1 y num2 son parámetros) Los argumentos se usan en la llamada y los parámetros en la definición del método.
Otro ejemplo de llamada: public static void main() { int x, y; x = 500; y = 200; showSum(x,y); } Otro ejemplo de llamada: Las variables que se van a usar como argumentos tienen que estar declaradas en el método que hace la llamada.
Argumentos y parámetros… Cuando se pasan argumentos a un método debemos estar seguros de que cada uno es compatible con la declaración del parámetro correspondiente. Java hace conversiones automáticas si el argumento es menor en tamaño que el parámetro (widening) pero no al inverso (narrowing) En el caso del ejemplo anterior la siguiente llamada ocasiona un error de compilación: double x = 1.0; double y = 5.5; showSum(x, y); Error!
Métodos … Los métodos pueden ser de dos tipos: Métodos que no devuelven nada (void) Métodos que devuelven algún valor (value- returning) Los métodos que hemos visto hasta ahora son tipo void. El método main es de tipo void Hay métodos que devuelven un valor: “value returning methods”
Metodos que devuelven un valor (Value returning) En el encabezado se indica el tipo de valor que se devuelve. Se puede devolver int, double, boolean, char, String o cualquier otro tipo de dato. Casos más comunes: métodos que hacen cálculos métodos para recoger y validar datos Se llaman muchas veces desde el lado derecho de una instrucción de asignación. Deben contener una instrucción de return para devolver el valor. Esta hace que se termine la ejecución del método y se regrese al punto de llamada con un valor.
Ejemplo de un método que devuelve un valor pero no tiene lista de parámetros //Método para recoger un número del teclado public static int getValue() { Scanner keyboard= new Scanner(System.in); System.out.print(“Entra un numero entero: ”); int x = keyboard.nextInt(); return x; } Instrucción para devolver el valor al método que llama. Tipo del valor a devolver (return type)
Ejemplo de un método para calcular suma con lista de parámetros public static int sumTwo(int num1, int num2) { int sum;//to hold the sum sum = num1 + num2; return sum; }
Llamadas a métodos que devuelven un valor Las llamadas a este tipo de métodos se hace desde otra instrucción, como por ejemplo desde una instrucción de output ó desde una instrucción de asignación. x = getValue(); result =sumTwo(x,y);
...Llamada a getValue y a sum public static void main() { int x, y, result; x = getValue(); y = getValue(); result =sumTwo(x,y); System.out.println(result); x = 12; y = 3; System.out.println(sumTwo(x,y)); } Llamada desde instrucción de asignación Llamada desde instrucción de output
Comparación de Métodos Void Puede o no tener lista de parámetros En general no devuelve nada Se invocan usando el nombre con su lista de argumentos solamente No lleva return dentro del cuerpo Value returning Puede o no tener lista de parámetros Devuelve un solo valor Se tienen que llamar desde otra instrucción Necesita un return al final del cuerpo