viernes, 12 de agosto de 2016

Capítulo 61. Java: Metodos Get y Set


Diario de un programador.- Día 158


JAVA.


Ya pasado del día 157 se ha visto en cada lenguaje las instrucciones y operaciones que son comunes entre ellos, (variables, ciclos, condiciones, etc.) Es hora de ver y aprender los aspectos únicos de cada lenguaje. Como son cosas nuevas las que se verán a continuación en este y los capítulos siguientes, volveré a explicar en forma tranquila y pausada para tratar en lo posible de que no se quede ninguna duda.

Métodos Set y Get


Es muy probable que en algún momento, sea necesario obtener el valor de un atributo (variable) de un método para poder utilizarlo en algún otro sitio. Las variables que se declaran dentro de un método se conocen como variables locales, y sólo se pueden utilizar en ese método. Cuando termina ese método, se pierden los valores de sus variables. Por lo tanto, para poder acceder a esas variables locales, es que se utilizan los métodos Set y Get. Lo que hace el método Set, es establecer o dar un valor a un atributo, en cambio el método Get, lo que hace es recuperar o conseguir ese valor para que pueda ser utilizado más tarde. Como ejemplo, crearé 3 métodos. Un método Set, un método Get y por último un método para mostrar el valor del atributo recuperado.


Para empezar, crearé un proyecto nuevo al cual llamaré GetySet01 (El nombre da lo mismo, ese escogí yo) y posteriormente crearé una clase a la cual llamaré Métodos.


Esta clase tendrá dos atributos; Nombre y edad, los cuales tendrá como modificadores de acceso private
Un atributo para una clase, se le conoce también con el nombre de "variable de instancia", la mayoría de las declaraciones de variables de instancia van precedidas por el modificador de acceso private. Las variables declaradas como private son accesibles sólo para los métodos de esa clase.
Por regla general, las variables de instancia se deben declarar como private y los métodos como public, aunque pueden haber excepciones.


Lo siguiente, será crear el método Set que reciba un nombre escrito por el usuario (el cual será solicitado en otra clase).


Aprovecho de dejar en claro que tanto la palabra Set como Get utilizada en los nombres de los métodos no son obligatorias. Se utilizan simplemente como "guía" para saber que método establece un valor y qué método recupera un valor. Los métodos podría llamarlos como yo quisiera y no pasaría nada, pero como dije antes, esos nombres sirven de guía y es bueno ponerlos para tener una idea de que hace ese método.

Este método set, no retorna ningún valor ("void", los métodos set no retornan valores, solamente los establecen) En sus paréntesis se puede ver que recibe como parámetro una cadena de caracteres que en este caso en nombrada como "nom". En la línea 6 se puede ver como la variable de instancia "nombre", tomará el valor de "nom" cuando este reciba algún dato
De esta misma forma, voy a crear el método set que reciba la edad escrita por el usuario.


Muy bien, ya están creados los métodos set. Ahora crearé los métodos get. El primero me servirá para recuperar el valor del atributo "nombre" y el segundo me servirá para recuperar el valor del atributo "edad"


El primer método "getNombre", se puede ver que es un método que tiene un tipo de retorno de tipo "String", además de que este método (y el siguiente) no tiene parámetros ya que no necesita de ningún argumento para completar su tarea, a diferencia de los anteriores. La línea 12 indica que este método debe devolver o retorna el valor del atributo "nombre". Al devolver dicho valor, se pude ocupar en otro sitio, como se verá más abajo. Para el método "getEdad" la explicación es la misma. Este método retorna el valor del atributo "edad".

Ahora, en esta clase solo falta crear un método que utilice los datos "retornados" por estos métodos. Voy a crear el método "datosPersonales" que se encargará de esta tarea.


Este método, es un método que no devuelve ningún valor ni recibe atributos, porque simplemente se encarga de mostrar el contenido de los métodos get mediante las instrucciones System.out.println.
El código completo de esta clase es el siguiente:

public class Metodos{
    private String nombre;
    private int edad;
   
    public void setNombre(String nom){
      nombre = nom;
    }
    public void setEdad(int ed){
      edad = ed;
    }
    public String getNombre(){
      return nombre;
    }
    public int getEdad(){
      return edad;
    }
    public void datosPersonales(){
      System.out.println("Nombre: " + getNombre());
      System.out.println("Edad: "+ getEdad());
    }
}//fin class

Ahora lo que voy a hacer, es crear otra clase para solicitar al usuario que ingrese sus datos personales. A esta clase la llamaré "Inicio"


En esta clase, voy a solicitar del usuario su nombre y edad. Para ello tendré que utilizar la clase Scanner, además de declarar la variable "nombre" y "edad" que utilizaré para guardar los datos.


Lo siguiente que voy a hacer, será crear un objeto que me permita utilizar la clase "Metodos" y sus métodos.


Esto ya casi está listo. Lo próximo que voy a hacer, será solicitar los datos al usuario.


Y por último, llamaré a los métodos para que hagan su tarea.


La línea 16 se encarga de enviar los datos de la variable "nombre" que está en el parámetro, hacia el método setNombre. Lo mismo hace la línea 17 pero con la variable "edad". En la línea 18 se ejecuta el método que finalmente recupera y muestra los datos ingresados por el usuario.

Si se ejecuta este programa, muestra el siguiente resultado.

El código de esta clase es el siguiente:

import java.util.Scanner;
public class Inicio{
  public static void main(String[]args){
  Scanner ingresoSt = new Scanner(System.in);
  Scanner ingresoEd = new Scanner(System.in);
  String nombre;
  int edad;

  Metodos datos = new Metodos();
 
  System.out.print("Ingresa tu nombre: ");
  nombre = ingresoSt.nextLine();
  System.out.print("Ingresa tu edad: ");
  edad = ingresoEd.nextInt();
 
  datos.setNombre(nombre);
  datos.setEdad(edad);
  datos.datosPersonales();
 
  }//fin main
}//fin class

Espero se haya entendido. Lo único que queda es practicar y practicar


Gustavo J. Cerda Nilo
Febrero 2016, Agosto 2016




2 comentarios:

  1. Estuve días con este problema, hasta que ayer por instinto hice lo mismo que tú, crear variables en la clase Main para que almacenen los datos obtenidos por Scanner y luego le pase ese dato al método set para almacenarlo en el atributo de la clase.
    Gracias, ahora me siento más tranquilo de que lo que hice está bien.

    ResponderEliminar

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...