Tema3 Clases y Encapsulacion Set Get
Transcript of Tema3 Clases y Encapsulacion Set Get
-
7/23/2019 Tema3 Clases y Encapsulacion Set Get
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 ! "!# $tilizamos hasta un ejemplo en el que ya aparezcan,as como la manera de automatizar este proceso en et%eans y que nos evite escribir
cdigo.
&.' Ejemplo en el que ! se utilizan los mtodos set y get y por tanto no
e(iste 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 e(isten*.
En este ejemplo, los atributos de cualquier objeto de la clase Alumnoson pblicos al no
haber especi+icado lo contrario ) #tring nombre, int edad*. ebido a esto tambin esposible en la clase GestionaAlumno el hacer una re+erencia directa a los atributos del
objeto al, y as en las ltimas lneas del mtodo main podeis ver la re+erencia a -al.nombre, al.edad.
package gestionaalumno;
public class Alumno{
String nombre;
int edad;
Alumno (String n, int e){ ichero que guarda la clase
nombre = n; /lumno, con atributos pbicos
edad = e; y mtodo constructor. }
}
package gestionaalumno;
import java.util.;
! "#. $avier %oldes
!
public class GestionaAlumno {
public static void main(String&' args) {
Scanner teclado = ne Scanner (Sstem.in);
Sstem.out.println(*+ombre del alumno*);
String teto = teclado.net-ine();
Sstem.out.println(*dad*);
int edad = teclado.net/nt();
Alumno al= ne Alumno(teto, edad);
Sstem.out.print(*l alumno *0al.nombre); 0ostrar el valor de
Sstem.out.println(* tiene *0al.edad0* a1os*);los atributos dea& a
traves del operador).) al.edad = 22;
}
}
"a encapsulacin por tanto no e(iste.
1ambiamos el valor del atributo edaddesde otra clase.
-
7/23/2019 Tema3 Clases y Encapsulacion Set Get
2/3
2.' Ejemplo en el que #3 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;
public String get+ombre() {
return nombre;
}
public void set+ombre(String nombre){ t3is.nombre = nombre;
}
public int getdad() {
return edad;
}
public void setdad(int edad) {
t3is.edad = edad;
}
Alumno2 (String n, int e){
nombre = n; edad = e;
}
}
4amos a ver como et%eans nos permite crear autom5ticamente estos mtodos set y
get. #itu5ndose en el cdigo , con el botn derecho, seleccionamos 6e+actor'
Encapsulate ields.
/l de+inir los atributos como privados, evitamos que
desde +uera de la clase se acceda directamente a los
atributos.
1on estos mtodos, podemos asignar
valores a los atributos de los objetos de
la clase /lumno2 y mostrar sus
contenidos, pero slo desde mtodos
propios de la clase.#e encapsulan as los atributos de la
clase /lumno2.
-
7/23/2019 Tema3 Clases y Encapsulacion Set Get
3/3
/qu veremos los atributos de esa clase y como ves nos permite escoger que mtodos
queremos crear.
"o 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 /lumno2 y pulsar
6e+actor. /utom5ticamente nos crea el cdigo.
7a en el programa principal,
package gestionaalumno2;
import java.util.;
public class GestionaAlumno2 {
public static void main(String&' args) {
Scanner teclado = ne Scanner (Sstem.in);
!4on esta l5nea 6ue sigue aseguro 6ue los 7loat double
siempre lo introdu8camos con . no con ,
para los decimales lo 6ue nos puede ocurrir si
ejecutamos el programa en un 9indos en espa1ol.
!
teclado.use-ocale(java.util.-ocale.:s de los m>todos
!!set
persona.set+ombre(nom);
persona.setdad(edad);
!!?isuali8amos los valores a trav>s de los m>todos get
Sstem.out.println (*l alumno es *0 persona.get+ombre());
Sstem.out.println (*l alumno tiene *0 persona.getdad()0
* a1os*);
teclado.close();
}
}
#i os +ij5is 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.