Tema3 Clases y Encapsulacion Set Get

download Tema3 Clases y Encapsulacion Set Get

of 3

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.