Вы находитесь на странице: 1из 3

En el ejemplo que apareca en el documento del operador this, aparecan en la clase

Alumno varios mtodos que son tpicos de Java y que lo que hacen es proporcionar la
encapsulacin de los datos , es decir que nicamente los mtodos de una clase hagan las
asignaciones y los cambios de datos en los atributos de esa clase.
Este documento va a incidir sobre este sistema que es el correcto, empezando desde un
ejemplo sencillo donde NO LOS Utilizamos hasta un ejemplo en el que ya aparezcan,
as como la manera de automatizar este proceso en NetBeans y que nos evite escribir
cdigo.
1.- Ejemplo en el que NO se utilizan los mtodos set y get y por tanto no

existe esa encapsulacin.


En este ejemplo, los atributos de la variable al, de tipo Alumno , son mostrados desde el
mtodo principal sin usar ningn mtodo propio de la clase Alumno (no existen).
En este ejemplo, los atributos de cualquier objeto de la clase Alumno son pblicos al no
haber especificado lo contrario ( String nombre, int edad). Debido a esto tambin es
posible en la clase GestionaAlumno el hacer una referencia directa a los atributos del
objeto al, y as en las ltimas lneas del mtodo main podeis ver la referencia a :
al.nombre, al.edad.

package gestionaalumno;
public class Alumno{
String nombre;
int edad;
Alumno (String n, int e){
nombre = n;
edad = e;
}
}

Fichero que guarda la clase


Alumno, con atributos pbicos
y mtodo constructor.

package gestionaalumno;
import java.util.*;
/** @F. Javier Moldes
*/
public class GestionaAlumno {
public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);
System.out.println("Nombre del alumno");
String texto = teclado.nextLine();
System.out.println("Edad");
int edad = teclado.nextInt();
Alumno al= new Alumno(texto, edad);
System.out.print("El alumno "+al.nombre);
Mostrar el valor de
System.out.println(" tiene "+al.edad+" aos");los atributos de a1 a
traves del operador( .)
al.edad = 22; Cambiamos el valor del atributo edad
desde otra clase.
}
}

La encapsulacin por tanto no existe.

2.- Ejemplo en el que SI se utilizan los mtodos set y get con lo que se
asegura la privacidad de los atributos de los objetos de la clase y la
encapsulacin.
package gestionaalumno2;
public class Alumno2 {
private String nombre;
private int edad;

Al definir los atributos como privados, evitamos que


desde fuera de la clase se acceda directamente a los
atributos.

public String getNombre() {


return nombre;
}
public void setNombre(String nombre){
this.nombre = nombre;
}

Con estos mtodos, podemos asignar


valores a los atributos de los objetos de
la clase Alumno2 y mostrar sus
contenidos, pero slo desde mtodos
propios de la clase.
Se encapsulan as los atributos de la
clase Alumno2.

public int getEdad() {


return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
Alumno2 (String n, int e){
nombre = n;
edad = e;
}
}

Vamos a ver como NetBeans nos permite crear automticamente estos mtodos set y
get. Situndose en el cdigo , con el botn derecho, seleccionamos RefactorEncapsulate Fields.

Aqu veremos los atributos de esa clase y como ves nos permite escoger que mtodos
queremos crear.
Lo nico que nos queda por hacer es seleccionar ambos mtodos para todos los atributos
que nos interesen, en este caso los dos atributos privados de la clase Alumno2 y pulsar
Refactor. Automticamente nos crea el cdigo.
Ya en el programa principal,
package gestionaalumno2;
import java.util.*;
public class GestionaAlumno2 {
public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);
/*Con esta lnea que sigue aseguro que los float y double
siempre lo introduzcamos con . y no con ,
para los decimales lo que nos puede ocurrir si
ejecutamos el programa en un Windows en espaol.
*/
teclado.useLocale(java.util.Locale.ROOT);
String nom = new String();
int edad;
Alumno2 persona = new Alumno2();
System.out.println("Introduzca el nombre: ");
nom = teclado.nextLine();
System.out.println("Introduzca la edad: ");
edad = teclado.nextInt();
//Asignamos los valores a los atributos a travs de los mtodos
//set
persona.setNombre(nom);
persona.setEdad(edad);
//Visualizamos los valores a travs de los mtodos get
System.out.println ("El alumno es: "+ persona.getNombre());
System.out.println ("El alumno tiene "+ persona.getEdad()+
" aos");
teclado.close();
}
}

Si os fijis ahora la gestin de los atributos de la clase corre siempre a carga de mtodos
de la misma clase con lo que aseguramos la privacidad de los mismos.

Вам также может понравиться