3 dic 2010

Métodos con valor de retorno

Los métodos con valor de retorno son módulos de programa que pueden recibir datos de entrada por medio de variables locales (parámetros) y posteriormente retorna un resultado al punto donde es llamado. Este tipo de métodos se utiliza para operar cualquier tipo de proceso que produzca un resultado.

Los métodos con valor de retorno se clasifican en dos tipos:

  • Métodos con valor de retorno sin parámetros.
  • Métodos con valor de retorno con parámetros.
1. Métodos con valor de retorno sin parámetros
Este tipo de métodos no reciben datos de entrada; pero de igual forma retornan un resultado al punto donde son llamados.



Su definición es de la siguiente manera:
tipo nombreMetodo(){
          Declaracion de variables locales
          Cuerpo del método
          return valor;
}

Donde:
  • valor: Es el valor que es retornado por el método.
  • tipo: Es el tipo del valor de retorno.
Invocación (llamado):
variable = nombreMetodo();
Donde:
  • variable: Es la variable que recibe el valor retornado por el método.


2. Métodos con valor de retorno con parámetros
Este tipo de métodos reciben datos de entrada por medio de parámetros y retornan un resultado al pundo de su llamado.


Su definición es de la siguiente manera:

tipo nombreMetodo(tipo1 p, tipo2 q, tipo3 r, ...){
          Declaración de variables locales
          Cuerpo del método
          return valor;
}

Donde:
tipo: Es el tipo de valor de retorno.
p, q, r, ... : son los nombres de los parámetros.
tipo1, tipo2, tipo3, ... : son los tipos de datos de los parámetros.
valor: es el valor de retorno.

Invocación (llamado):
variable = nombreMetodo(v1, v2, v3, ...);

Donde:
variable: Es el nombre del método llamado.
v1, v2, v3, ... : Son los valores dados a los parámetros.

Ejemplo (métodos con valor de retorno con parámetros): convertir cantidad dada en segundos en HH:MM:SS

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class HHMMSS extends JApplet implements ActionListener{

          JButton btnCal, btnRes;
          JLabel lblSeg;
          JTextField txtSeg;
          JTextArea txtA;
          JScrollPane scpScroll;

          public void init(){
                    getContentPane().setLayout(null);
                    getContentPane().setBackground(Color.darkGray);

                    lblSeg = new JLabel("SEGUNDOS:");
                    lblSeg.setBounds(20,20,90,23);
                    lblSeg.setForeground(Color.white);
                    lblSeg.setFont(new Font("arial",1,14));
                    getContentPane().add(lblSeg);

                    txtSeg = new JTextField();
                    txtSeg.setBounds(120,20,100,23);
                    txtSeg.setBackground(new Color(255,200,0));
                    txtSeg.setFont(new Font("arial",1,14));
                    getContentPane().add(txtSeg);

                    btnCal = new JButton("CALCULAR");
                    btnCal.setBounds(20,53,100,23);
                    btnCal.addActionListener(this);
                    getContentPane().add(btnCal);

                    btnRes = new JButton("RESET");
                    btnRes.setBounds(120,53,100,23);
                    btnRes.addActionListener(this);
                    getContentPane().add(btnRes);

                    txtA = new JTextArea();
                    txtA.setFont(new Font("arial",1,16));
                    txtA.setBackground(Color.darkGray);
                    txtA.setForeground(Color.green);
                    txtA.setEditable(false);

                    scpScroll = new JScrollPane(txtA);
                    scpScroll.setBounds(20,86,200,80);
                    getContentPane().add(scpScroll);
          }

          public void actionPerformed(ActionEvent e){
                    if(e.getSource()==btnCal)
                              hms();
                    if(e.getSource()==btnRes)
                              reset();
          }

          void hms(){
                    txtA.setText("");
                    int cantSeg = getSegundos(),
                    hor = horas(cantSeg),
                    min = minutos(cantSeg),
                    seg = segundos(cantSeg);
                    imprimir("Resultado:");
                    imprimir("----------------\n");
                    txtA.append("HH:MM:SS >> "+hor+":"+min+":"+seg);
          }

          void reset(){
                    txtA.setText("");
                    txtSeg.setText("");
                    txtSeg.requestFocus();
          }

          //Métodos con valor de retorno con parámetros
          int horas(int seg){
                    int h = seg/3600;
                    return h;
          }

          int minutos(int seg){
                    int m = (seg%3600)/60;
                    return m;
          }

          int segundos(int seg){
                    int s = (seg%3600)%60;
                    return s;
          }

          //Método que retorna el valor numérico entero de la caja de texto
          int getSegundos(){
                    int cs;
                    //donde cs: cantidad de segundos.
                    //Se realiza la validación de datos empleando TRY - CATCH
                    try{ cs = Integer.parseInt(txtSeg.getText());}
                    catch(Exception e){ cs = 0;}
                    return segundos;
          }

          void imprimir(String cad){
                    txtA.append(cad+"\n");
          }
}



Ir a ejemplos tipo void con parámetros.
Ir a la lección de ESTRUCTURAS REPETITIVAS.

5 comentarios:

  1. que pinche pagina tan guena wow
    me ayudaron en mucho gradcie

    ResponderEliminar
  2. Excelente explicación

    ResponderEliminar
  3. En java se puede implementar el return de el método abstracto: public abstract String getNombreCompleto(); de la clase padre en las clases hijas? se puede? eso existe?

    ResponderEliminar
  4. Que buena explicación amigo Gracias por la ayuda

    ResponderEliminar