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
buen ejemplo
ResponderEliminarEstuve 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.
ResponderEliminarGracias, ahora me siento más tranquilo de que lo que hice está bien.