Sie sind auf Seite 1von 19

6.

Mtodos: un anlisis
ms detallado.

Ramiro Estigarribia Canese

Objetivos del Captulo.


Conocer cmo se asocian los mtodos.
Utilizar los mtodos Math.
Pasar informacin entre mtodos.
Comprender cmo se soporta el mecanismo de
llamada/retorno.
Conocer cmo los paquetes agrupan las clases
relacionadas.
Utilizar la generacin de nmeros aleatorios para
implementar aplicaciones para juegos.

Programas Reales.
La mayora de los programas que resuelven
problemas reales son ms grandes que los
programas que se presentan en los primeros
captulos.
La experiencia ha demostrado que la mejor forma
de desarrollar y mantener un programa extenso es
construirlo a partir de piezas (o componentes)
simples y pequeas.
A esta tcnica se le conoce como divide y
vencers.

Mdulos de programas.
Existen tres tipos de mdulos en Java:
mtodos, clases y paquetes.
Para escribir programas, se combinan los nuevos
mtodos y clases que usted escribe con los que
estn disponibles en Java.
Por lo general, las clases relacionadas estn
agrupadas en paquetes, de manera que se pueden
importar a los programas y reutilizarse.
En el captulo 8 aprender a agrupar sus propias
clases en paquetes.

Qu son los mtodos?


Los mtodos permiten dividir un programa
en mdulos.
Las instrucciones de los mtodos se escriben slo
una vez, y se reutilizan muchas veces.
Una razn para dividir un programa en mdulos es
la metodologa divide y vencers, que hace que el
desarrollo sea ms fcil de administrar.
Otra razn es la reutilizacin de software (usar los
mtodos existentes como bloques de construccin
para crear nuevos programas).

Recomendacin de
Ingeniera del Software.
Para promover la reutilizacin, cada mtodo debe
limitarse de manera que realice una sola tarea bien
definida, y su nombre debe expresar esa tarea con
efectividad.
Estos mtodos hacen que los programas sean ms
fciles de escribir, depurar y modificar.
Un mtodo se invoca mediante una llamada, y
cuando el mtodo que se llam completa su tarea,
devuelve un resultado.

La clase Math
La clase Math cuenta con una coleccin de
mtodos que nos permiten realizar clculos
matemticos.
Por ejemplo, podemos calcular la raz cuadrada de
900 con una llamada al siguiente mtodo:
Math.sqrt(900). Resultado = 30.0.
El mtodo sqrt recibe un argumento de tipo double
y devuelve el resultado.
Para imprimir el valor de la llamada anterior al
mtodo en una ventana de comandos:
System.out.println( Math.sqrt( 900 ) );

Raiz Cuadrada
package raiz;
import java.util.Scanner;
public class Raiz {
public static void main(String[] args) {
Scanner entrada = new Scanner( System.in );
double numero, raiz;
System.out.println("Ingrese 1 nmero:");
numero = entrada.nextInt();
raiz=Math.sqrt(numero);
System.out.println("La Raiz es:"+raiz);
}
}

Mayor de 2 Nmeros
package mayor;
import java.util.Scanner;
public class Mayor {
public static void main(String[] args) {
Scanner entrada = new Scanner( System.in );
double numero1, numero2, mayor;
System.out.println("Ingrese 2 nmeros:");
numero1 = entrada.nextInt();
numero2 = entrada.nextInt();
mayor=Math.max(numero1,numero2);
System.out.println("El mayor es:"+mayor);
}
}

Constante PI
La clase Math tambin declara campos
que representan unas constantes
matemticas de uso comn: Math.PI.
La constante Math.PI (3.14159265358979323846)
es la proporcin de la circunferencia de un crculo
con su dimetro.
Al hacer a estos campos static, se puede acceder a
ellos mediante el nombre de clase Math y un
separador de punto (.), justo igual que los mtodos
de la clase Math.

Funcin con 1 Parmetro.


package cuadrado;
public class Cuadrado {
static int cuadrado(int numero) {
int resultado;
resultado=numero*numero;
return resultado; }
public static void main(String[] args) {
int cuadrado, numero=12;
cuadrado = cuadrado( numero );
System.out.println("El cuadrado es: "+cuadrado);
}}

Mtodos con muchos


parmetros
Los captulos 3 a 5 presentaron clases que
contienen mtodos simples.
Ahora le mostraremos cmo escribir mtodos con
varios parmetros.
La siguiente aplicacin utiliza el mtodo mximo,
declarado por el programador, para determinar y
devolver el mayor de tres nmeros.
Cuando la aplicacin empieza a ejecutarse, el
mtodo main crea un objeto de la clase
BuscarMayor.

Utilizando Clases:
Mayor de 2 Nmeros
//Mayor.java
package mayor;
public class Mayor {
public static void main(String[] args) {
BuscarMayor BuscarMayor = new BuscarMayor();
BuscarMayor.Mayor();
}
}

package mayor;
import java.util.Scanner;
public class BuscarMayor {
Mayor de 3 Nmeros
BuscadorMaximo.java
public void Mayor()
{
Scanner entrada = new Scanner( System.in );
System.out.print("Ingrese 2 numeros:");
int numero1 = entrada.nextInt();
int numero2 = entrada.nextInt();
int resultado = maximo(numero1,numero2);
System.out.println( "El mayor es: " + resultado );
}
public int maximo(int x, int y)
{
int mayor = x; // asume que x es el mayor
if ( y > mayor )
mayor = y;
return mayor;
}
}

Combinando texto
mediante concatenacin
Java permite crear objetos String mediante el
ensamblado de objetos string ms pequeos,
mediante el uso del operador +.
A esto se le conoce como concatenacin de
objetos string.
El operador + crea un nuevo objeto String en el
cual los caracteres del operando derecho se
colocan al final de los caracteres en el operando
izquierdo.
Por ejemplo, la expresin "hola" + "a todos" crea el
objeto String "hola a todos".

Ejemplo prctico:
Sorteo de nmeros.
En sta y en la siguiente seccin desarrollaremos
un programa de juego con varios mtodos.
El programa utiliza la mayora de las instrucciones
de control presentadas hasta este punto en el libro,
e introduce conceptos nuevos.
Hay algo en el ambiente de un casino de apuestas
que anima a las personas:
Es el elemento de azar, la posibilidad de que la
suerte convierta un bolsillo lleno de dinero.
El elemento de azar puede introducirse en un
programa mediante un objeto de la clase Random
(paquete java.util)

Random
Se puede crear un generador de nmeros aleatorios
de la siguiente manera:
Random numerosAleatorios = new Random();
Despus, el generador de nmeros aleatorios puede
usarse para generar nuevos valores nmericos,
boolean, byte, float, double, int, long y gaussianos.
El mtodo nextInt de la clase Random genera un
valor int aleatorio en el rango de 2.147.483.648 a
+2.147.483.647.
Cualquier valor en ese rango debera tener una
oportunidad de salir sorteado.

Programa que lanza un


dado 5 veces
package sorteo;
import java.util.Random; //clase Random
public class Sorteo {
public static void main( String args[] )
{
Random sortear = new Random();
int cara;
for ( int contador = 1; contador <= 5; contador++ )
{
cara = 1 + sortear.nextInt( 6 );
System.out.printf( " "+cara ); // muestra el valor generado
}}}