lunes, 22 de marzo de 2010

Setters & Getters

Setters & Getters
Los Setters & Getters son métodos de acceso lo que indica que son siempre declarados públicos, y nos sirven para dos cosas:

Setters: Del Inglés Set, que significa establecer, pues nos sirve para asignar un valor inicial a un atributo, pero de forma explícita, además el Setter nunca retorna nada (Siempre es void), y solo nos permite dar acceso público a ciertos atributos que deseemos el usuario pueda modificar.

Getters: Del Inglés Get, que significa obtener, pues nos sirve para obtener (recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para cierto método.

Entonces veamos en un ejemplo, si tenemos una Clase de nombre Estudiante, cómo serían sus Setters & sus Getters?

public Class Estudiante
{
        private String nombre;
        private String apellido;
        private String correo;

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

        public String getApellido()
        {
                return apellido;
        }
        public void setApellido(String apellido)
        {
                this.apellido = apellido;
        }

        public String getCorreo()
        {
                return correo;
        }
        public void setCorreo(String correo)
        {
                this.correo = correo;
        }
}

Y en el main la implementación sería:

public Class Principal
{
        public static void main(String args[])
        {
                Estudiante estudiante1 = new Estudiante();
                //Ingreso los datos con los Setter a la nueva instancia de
                //Estudiante, estos datos pueden ingresarse desde teclado
                //o a través de una GUI
                estudiante1.setNombre("María");
                estudiante1.setApellido("Paucar");
                estudiante1.setCorreo("maria.paucar@epn.edu.ec");

                //Para obtener los datos uso los Getter
                //y los podemos imprimir en Consola o a una GUI
                System.out.println(estudiante1.getNombre());
                System.out.println(estudiante1.getApellido());
                System.out.println(estudiante1.getCorreo());
        }
}

19 comentarios:

  1. Estoy en temas de Java y esto me ayuda a tener un poco mas de luz jejej gracias por tu aportacion

    ResponderEliminar
  2. Por nada, espero que te sirva, y gracias por comentar :)

    ResponderEliminar
  3. muchas gracias amigo por su aporte la verdad me ayuda de mucho, pero tambien quiero saber como insertar registro a una base de datos con metodos getters y setters y actualizar tambien logicamente haciendo referencia a esa clase que tiene los metodos getters y setters????? me podrias ayudar ???

    ResponderEliminar
  4. Saludos, gracias por comentar, me alegra que te haya sido de ayuda, y con respecto a tus dudas te recomiendo lo siguiente:
    - Utiliza setters & getters para establecer los valores de los atributos de un objeto.
    - Utiliza un método distinto para realizar la inserción en la Base de datos, así tu código será más limpio e independiente.

    Un pequeño ejemplo rápido de lo que te digo sería algo así:

    //Instancia de Estudiante donde con setters y getters llenamos los valores de sus atributos.
    Estudiante es1 = new Estudiante();
    es1.setNombre("Julia");
    es1.setEdad("19");

    //Instancia de Operador, clase que contendrá los métodos para hacer consultas, inserciones, actualizaciones y eliminaciones de la BDD.
    Operador op = new Operador();
    //Insertamos en la BDD la información de es1
    op.insertar(es1);

    Pero que tendría el método insertar de la Clase Operador?, Algo como esto:

    Statement st = conexion.createStatement();

    st.executeUpdate("INSERT INTO estudiantes (nombre, edad) VALUES ('"+es1.getNombre()+"',"+es1.getEdad()+")");

    Espero que te haya quedado más claro lo que me preguntabas. Si tienes dudas escríbeme no más. :)

    ResponderEliminar
  5. Muy bien explicado y con ejemplo.. gracias

    ResponderEliminar
    Respuestas
    1. De nada, espero que te haya sido útil, cualquier inquietud que tengas, no dudes en avisarme, que haré lo posible por ayudarte ^_^

      Eliminar
  6. Gracias compi excelente aporte ..:D el profe lo pinto algo enrredoso :D ajjaja

    ResponderEliminar
  7. super gracias solo lo ultimo no me qdo claro
    ehmm bueno me llega otra pregunta sabes quiero hacer una calculadora con Setters & Getters como lo haria ???
    ayuda porfa me llego esa duda como mando por decirles 2 valores (a y b ) y q estos los sume en Setters y los pida en el Getters ....

    ResponderEliminar
    Respuestas
    1. Hola Alfredo, gracias por comentar, me gustaría saber de lo último que es lo que no te quedo claro.

      Con respecto a tu otra duda, los Setters y Getters son el principio de la Encapsulamiento en la Programación Orientada a Objetos, este principio determina que los atributos de los objetos deben ser siempre privados: no deben ser accesibles desde fuera del objeto, sino que solo el objeto tiene la potestad de para escribirlos o leerlos. Por tal razón se crean métodos públicos que sustituyan una u otra operación, o ambas, cada vez que la situación lo requiera. Estos métodos se denominan "Setters" y "Getters".

      Por tanto si tu quieres un método que sume a y b, con Setters y Getters también para ambos números, sería algo así:

      public Class OperacionSuma
      {
      private int numero1;
      private int numero2;
      private int suma;

      public int getNumero1()
      {
      return numero1;
      }
      public void setNumero1(int numero1)
      {
      this.numero1 = numero1;
      }

      public int getNumero2()
      {
      return numero2;
      }
      public void setNumero2(int numero2)
      {
      this.numero2 = numero2;
      }

      public int getSuma()
      {
      return suma;
      }
      public void setSuma(int numero1, int numero2)
      {
      this.suma = numero1 + numero2;
      }
      }

      Espero te sirva, saludos!!

      Eliminar
  8. Amigo buen aporte tendras alguna pagina????

    ResponderEliminar
    Respuestas
    1. Hola César, alguna página personal te refieres, porque sobre Java publico todo acá.

      Saludos! =)

      Eliminar
  9. Muchas gracias, me sirvio mucho, para entender un poco el uso correcto del get y set, gracias! :D

    ResponderEliminar
    Respuestas
    1. Hola Luis, de nada, me alegra que te haya servido bastante, igualmente te agradezco por haber dedicado tiempo para comentar al respecto.

      Saludos! =)

      Eliminar
  10. Esta buenísimo, entendí a la primera, lo has abstraído al modo más práctico para entender la idea detrás de set y get. Gracias.

    ResponderEliminar
    Respuestas
    1. Hola, gracias por comentar, me alegro que te haya sido útil.

      Saludos! =)

      Eliminar
  11. Respuestas
    1. Hola Ernesto, de nada, me alegra que te haya servido bastante, igualmente te agradezco por haber dedicado tiempo para comentar al respecto.

      Saludos! =)

      Eliminar
  12. Respuestas
    1. Hola, Gracias por comentar, me alegra que te haya servido.

      Saludos! =)

      Eliminar