gentoo linux, java, software libre y otras hierbas
dic, 05 2007 - 12:11 pm

[código] Métodos (o funciones) en Java (2)

(anterior) En esta sección se ofrece un análisis más detallados de los objetos. Los objetos contienen datos llamados campos y unidades llamados métodos. En esta sección se encuentran ejemplos muy conocidos sobre recursividad. Las técnicas aquí expuestas son esenciales para producir programas correctamente estructurados, especialmente los más grandes que desarrollan los programadores de sistemas y aplicaciones. También se muestra el uso de la sobrecarga de métodos y se presentan el manejo de eventos.

Un ejemplo del alcance de las variables en métodos

// Fig. 6.10: Alcance.java
// Un ejemplo del alcance.
import java.awt.Container;
import javax.swing.*;
public class Alcance extends JApplet
{
	JTextArea areaSalida;

	// campo que es accesible para todos los métodos de esta clase
	int x = 1;
	// crear GUI del subprograma
	public void init()
	{
		areaSalida = new JTextArea();
		Container contenedor = getContentPane();
		contenedor.add( areaSalida );
	} // fin del método init

	// el método start se llama después de que init termina; start llama a
	// los métodos usarLocal and usarCampo
	public void start()
	{
		int x = 5;   // variable local en método start que sombrea el campo x

		areaSalida.append( "x local en start es " + x );

		usarLocal();  // usarLocal tiene x local
		usarCampo();  // useInstance utiliza el campo x de Alcance
		usarLocal();  // usarLocal inicializa la variable local x
		usarCampo();  // Campo x de Alcance retiene su valor

		areaSalida.append( "\n\nx local en start es " + x );
	} // fin del método start

	// usarLocal crea e inicializa la variable local x durante cada llamada
	public void usarLocal()
	{
		int x = 25;  // se inicializa cada vez que se hace una llamada a usarLocal

		areaSalida.append( "\n\nx local en usarLocal es " + x +" después de entrar a usarLocal" );
		++x;
		areaSalida.append( "\nx local en usarLocal es " + x +" después de salir de usarLocal" );

	} // fin del método usarLocal

	// usarCampo modifica el campo x de Alcance durante cada llamada
	public void usarCampo()
	{
		areaSalida.append( "\n\nel campo x es " + x +" al entrar a usarCampo" );
		x *= 10;
		areaSalida.append( "\nel campo x es " + x +" al salir de usarCampo" );
	} // fin el método usarCampo
} // fin de la clase Alcance

Descargar código fuente

Uso de métodos sobrecargados

// Uso de métodos sobrecargados
import java.awt.Container;
import javax.swing.*;
public class SobrecargaMetodos extends JApplet
{
	// crear GUI y llamar a cada uno de los métodos cuadrado
	public void init()
	{
		JTextArea areaSalida = new JTextArea();
		Container contenedor = getContentPane();
		contenedor.add( areaSalida );

		areaSalida.setText( "El cuadrado del valor integer 7 es " + cuadrado( 7 ) +"\nEl cuadrado del valor double 

7.5 es " + cuadrado( 7.5 ) );
	} // fin del método init
	// método cuadrado con argumento int
	public int cuadrado( int intValor )
	{
		System.out.println( "Se llamo a cuadrado con argumento int: " + intValor );
		return intValor * intValor;
	} // fin del método cuadrado con argumento int
	// método cuadrado con argumento double
	public double cuadrado( double doubleValor )
	{
		System.out.println( "Se llamo a cuadrado con argumento double: " +doubleValor );
		return doubleValor * doubleValor;
	} // fin del método cuadrado con argumento double
} // fin de la clase SobrecargaMetodos

Descargar código fuente

Método recursivo para el factorial

// Método recursivo para el factorial.
import java.awt.*;
import javax.swing.*;
public class PruebaFactorial extends JApplet
{
	JTextArea areaSalida;

	// crear GUI y calcular factoriales del 0-10
	public void init()
	{
		areaSalida = new JTextArea();

		Container contenedor = getContentPane();
		contenedor.add( areaSalida );

		// calcular los factoriales de 0 hasta 10
		for ( long contador = 0; contador <= 10; contador++ )
			areaSalida.append( contador + "! = " +factorial( contador ) + "\n" );
	} // fin del método init

	// declaración recursiva del método factorial
	public long factorial( long numero )
	{
		// caso base
		if ( numero <= 1 )
			return 1;
		// paso recursivo
		else
			return numero * factorial( numero - 1 );
	} // fin del método factorial
} // fin de la clase PruebaFactorial

Descargar código fuente

Método recursivo fibonacci

// Método recursivo fibonacci.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaFibonacci extends JApplet implements ActionListener
{
	JLabel numeroEtiqueta, resultadoEtiqueta;
	JTextField numeroCampo, resultadoCampo;

	// configurar la GUI del subprograma
	public void init()
	{
		// obtener el panel de contenido y establecer su esquema como FlowLayout
		Container contenedor = getContentPane();
		contenedor.setLayout( new FlowLayout() );

		// crear numeroEtiqueta y adjuntarlo al panel de contenido
		numeroEtiqueta = new JLabel( "Escriba un entero y oprima Intro" );
		contenedor.add( numeroEtiqueta );

		// crear numeroCampo y adjuntarlo al panel de contenido
		numeroCampo = new JTextField( 10 );
		contenedor.add( numeroCampo );

		// registrar este subprograma como ActionListener de numeroCampo
		numeroCampo.addActionListener( this );

		// crear resultadoEtiqueta y adjuntarlo al panel de contenido
		resultadoEtiqueta = new JLabel( "El valor de Fibonacci es" );
		contenedor.add( resultadoEtiqueta );

		// crear numeroCampo, hacerlo no editable
		// y adjuntarlo al panel de contenido
		resultadoCampo = new JTextField( 15 );
		resultadoCampo.setEditable( false );
		contenedor.add( resultadoCampo );
	} // fin del método init

	// obtener entrada del usuario y llamar al método fibonacci
	public void actionPerformed( ActionEvent event )
	{
		long numero, valorFibonacci;

		// obtener entrada del usuario y convertirla en long
		numero = Long.parseLong( numeroCampo.getText() );
		showStatus( "Calculando ..." );

		// calcular valor de fibonacci para el número introducido por el usuario
		valorFibonacci = fibonacci( numero );
		// indicar que el procesamiento se completó y mostrar el resultado
		showStatus( "Listo." );
		resultadoCampo.setText( Long.toString( valorFibonacci ) );

	} // fin del método actionPerformed

	// declaración recursiva del método fibonacci
	public long fibonacci( long n )
	{
		// caso base
		if ( n == 0 || n == 1 )
			return n;
		// paso recursivo
		else
			return fibonacci( n - 1 ) + fibonacci( n - 2 );
	} // fin del método fibonacci
} // fin de la clase PruebaFibonacci

Descargar código fuente

38 Comentarios | deja el tuyo

Un enlace entrante

37 Comentarios en “[código] Métodos (o funciones) en Java (2)”

  1. yerko escalona dice:

    -Hola sabes que tengo una tranca con los metodos;mutadores,accesadores e impresor.

  2. nathaly dice:

    lo que pasa que tengo que hacer una serie por medio de metodos y quisiera que me ayuden es fibonacci con la potencia de factorial sobre numeros primos

  3. D@VID dice:

    necesito hacer un tringulo con asteriscos
    pero no rellenos de astericos solo los
    lados ….alguien me puede ayudar…??

    Gracias

  4. deysy dice:

    necesito saber como puedo llamar una gui dentro de otra…osea tengo una gui principal con un menu el cual me da la opcion de relizar configuraciones al programa principal, cuando presiono el boton configuracion la idea es q me llame una gui llamada config en donde se ingresan unos datos importantes para el programa principal ….si puedes ayudarme uchisimas gracias.

  5. Cristian dice:

    @deysy:

    Si la GUI que quieres cargar es, por ejemplo, un JFrame… basta con que hagas esto en la acción del botón:

    new NombreClaseGUI();

    Y listo.

  6. dey dice:

    hola cristian, en este boton:
    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) { new configura();}

    Como se puede ver escribi new configura(); como me sugeriste pero no pasa nada, no abre la nueva interfaz(configura). me aparece q configura es una nueva variable pero no como si estuviera llamando una gui

  7. Cristian dice:

    @dey:

    ¿Puedes poner el constructor de la clase “configura”?

  8. wilmer dice:

    como puedo obtener un manual Phyton

  9. cristian dice:

    que onda necesito hacer un metodo de operaciones basicas

  10. cristian dice:

    espero que alguien me pueda ayudar y sacar mi ignoracia x lo menos 5min please

  11. Laura dice:

    Hola, esta muy buena tu pagina, pero tengo un problema con los codigos de ejemplo, ya que trato de correrlos y me sale que no tiene clase principal

  12. yop dice:

    import java.util.Scanner;

    class Fib {

    static int num;
    static int IntroduceNumero(){
    Scanner escan= new Scanner(System.in);
    System.out.println(“Introduce un numero:”);
    num=escan.nextInt();
    return num;
    }

    static int Fibo( int num ){

    if (num == 0 || num==1){
    return num;}

    else{
    return Fibo(num-1)+Fibo(num-2);

    }
    }

    public static void calcula(){
    int numero=Fib.IntroduceNumero();
    int nu=Fib.Fibo(numero);

    System.out.println(nu);
    }
    }

    public class Fibonacci {

    public static void main(String[] args) {
    Fib.calcula();

    }

    }

  13. Irina Dávila dice:

    están muy interesantes los programas, lastima que los que yo ando buscando no los encuentro. Busco el código en java para la aceleración, la velocidad, y para un cuadrado perfecto. si los tienen les agradezco su ayuda. Gracias

  14. toño dice:

    hola esta muy padre su pagina porfa me podrian ayudar necesito saber como va la funcion para comparar 2 fechas(comparacion de dias meses y años). y otra funcion de comparacion de cual numero es maoyr y menor porfa estoy en examen

  15. LIZETHABV dice:

    C V BN PERO YI STOY BUSCANDO EJEMPLO DE FUNCION EN JAVA

¡Déjanos tu comentario!