Diario de un programador.- Día 177
Funciones Set y Get en C++
En este
capítulo veremos unas funciones muy parecidas a la vistas el capítulo 61 con
Java, por lo que esta clase será algo similar a aquella.
Es muy
probable que en algún momento, sea necesario obtener el valor de una variable
de una función para poder utilizarla en algún otro sitio. Las variables que se declaran dentro
de una función se conocen como variables locales, y sólo se pueden utilizar en esa función. Cuando termina
esa función, se pierden los valores de sus variables. Por lo tanto, para poder
acceder a esas variables locales, es que se utilizan las funciones Set y Get.
Lo que hace la función set, es establecer o dar un valor a una variable, en
cambio la función Get, lo que hace es recuperar o conseguir ese valor para que
pueda ser utilizado más tarde. Como ejemplo, crearé 3 funciones. Una función
Set, una función Get y por último una función para mostrar el valor de la variable
recuperada.
Para empezar, crearé un nuevo
archivo, la cual tendrá una clase llamada “Antecedentes”.
Esta clase tendrá dos variables;
Nombre y edad, los cuales tendrá como modificadores de acceso private
Las variables declaradas como private son accesibles sólo para las
funciones de esa clase.
Lo siguiente, será crear las funciones Set que reciba un nombre
escrito por el usuario (el cual será solicitado en la función principal). Las
funciones son de acceso public, esto es para que puedan ser accesibles por
otras funciones.
Aprovecho de dejar en claro que tanto la palabra Set como Get
utilizada en los nombres de las funciones no
son obligatorias. Se utilizan simplemente como "guía" para saber
que función establece un valor y qué función recupera un valor. Las funciones
podría llamarlas 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 esa función.
Esta función set, no retorna ningún valor ("void", las funciones
set no retornan valores, solamente los establecen) En sus paréntesis se puede
ver que la primera función recibe como parámetro una cadena de caracteres que
en este caso es nombrada como "nom". En la siguiente línea se puede
ver como la variable "nombre", tomará el valor de "nom"
cuando ésta reciba algún dato
Muy bien, ya están creados las funciones set. Ahora crearé las funciones
get. El primero me servirá para recuperar el valor de la variable
"nombre" y el segundo me servirá para recuperar el valor de la variable
"edad"
En la primera función "getNombre", se puede ver que es
una función que tiene un tipo de retorno de tipo "string", además de
que esta función (y la 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 de la primera función indica que
esta debe devolver o retornar el valor de la variable "nombre". Al
devolver dicho valor, se pude ocupar en otro sitio, como se verá más abajo.
Para la función "getEdad" la explicación es la misma. Esta función
retorna el valor de la variable "edad".
Ahora, aunque no es necesario, crearé en esta clase una función
que utilice los datos "retornados" por estas funciones. Voy a crear la
función "informe" que se encargará de esta tarea.
Esta función, es una función que no devuelve ningún valor ni
recibe atributos, porque simplemente se encarga de mostrar el contenido de las funciones
get mediante las instrucciones cout
Ahora lo que voy a hacer, es crear la función “main” para
solicitar al usuario que ingrese sus datos personales.
En esta función, voy a solicitar del usuario su nombre y edad.
Para ello tendré que declarar la variable "nombreUsuario" y
"edadUsuario" que utilizaré para guardar los datos.
Lo siguiente que voy a hacer, será crear un objeto que me permita
utilizar la clase "Antecedentes" y sus funciones
Esto ya casi
está listo. Lo próximo que voy a hacer, será solicitar los datos al usuario.
Y por último,
llamaré a las funciones para que hagan su tarea.
La línea 48 se encarga de enviar los datos de la variable
"nombreUsuario" que está en el parámetro, hacia la función setNombre.
Lo mismo hace la línea 49 pero con la variable "edadUsuario". En la
línea 50 se ejecuta la función que finalmente recupera y muestra los datos
ingresados por el usuario.
Si se ejecuta este programa, muestra el siguiente resultado.
El código completo
es el siguiente:
#include<iostream>
#include<string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::getline;
class Antecedentes{
private:
string nombre;
int edad;
public:
void setNombre(string nom){
nombre = nom;
}
void setEdad(int ed){
edad = ed;
}
string getNombre(){
return nombre;
}
int getEdad(){
return edad;
}
void informe(){
cout << "Nombre: " << getNombre() << endl;
cout << "Edad: " << getEdad() << endl;
}
};
int main(void){
string nombreUsuario;
int edadUsuario;
Antecedentes datos;
cout << "Ingresa tu nombre:
";
getline(cin, nombreUsuario);
cout << "Ingresa tu edad:
";
cin >> edadUsuario;
datos.setNombre(nombreUsuario);
datos.setEdad(edadUsuario);
datos.informe();
return 0;
}
Una pequeña modificación al programa anterior que podemos hacer es
que solicite los datos por separado, o sea que se pueda ver solo el nombre,
solo la edad o ambos. Esto se puede lograr con una instrucción switch. El
código completo de este programa es el siguiente:
#include<iostream>
using std::cout;
using std::cin;
using std::string;
using std::endl;
using std::getline;
class Antecedentes{
private:
string nombre;
int edad;
public:
void setNombre(string
establecerNombre){
nombre =
establecerNombre;
}
void setEdad(int
establecerEdad){
edad = establecerEdad;
}
string getNombre(){
return nombre;
}
int getEdad(){
return edad;
}
void informe(){
cout << "Nombre: " << getNombre() << endl;
cout << "Edad: " << getEdad() << endl;
}
};
int main(void){
string nom;
int ed;
int opcion;
Antecedentes datos;
cout <<
"Ingresa tu nombre: ";
getline(cin, nom);
datos.setNombre(nom);
cout <<
"Ingresa tu edad: ";
cin >> ed;
datos.setEdad(ed);
cout <<
"\n";
cout <<
"Ingresa una opcion: " <<endl;
cout << "1
Mostrar informe" << endl;
cout << "2
Mostrar nombre" << endl;
cout << "3
Mostrar edad\n" << endl;
cin >> opcion;
switch (opcion){
case 1:
datos.informe();
break;
case 2:
cout << "Nombre: " << datos.getNombre();
break;
case 3:
cout << "Edad: " << datos.getEdad();
break;
default:
cout << "Opcion no valida" << endl;
}
return 0;
}
Espero se haya
entendido. Lo único que queda es practicar y practicar
Gustavo J. Cerda Nilo
Julio 2016, Octubre 2016
Muchas gracias amigo :D
ResponderEliminar