lunes, 17 de septiembre de 2012

Encapsulamiento

Buenas amigos, en esta nueva entrada vamos a ver lo que es el "encapsulamiento".

El encapsulamiento consiste en acceder a atributos privados de una clase por medio de métodos públicos de esa misma clase, muchos de vosotros conoceréis esto como "getter y setter". Esto nos proporciona varias ventajas, tales como:



  • Impedir la corrupción de datos.
  • Facilidad en el mantenimiento de las aplicaciones
Imaginemos que tenemos una aplicación a la cual le introducimos notas de examen y no la desarrollamos con encapsulamiento:



En otra clase, y sin el encapsulamiento, nada impedirá al desarrollador hacer lo siguiente:

A esto se le llama "corrupción de datos", ya que, no suele ponerse notas negativas en un examen, por lo menos en mi época de colegio. Podríamos llenar la clase principal de bucles para evitar esto, pero para eso java implementa la encapsulación, veamoslo:

Como podemos observar, el atributo "nota" pasar a ser privado(con lo que no podrá ser accedido por ninguna otra clase), para poder acceder a él, hemos creado 2 métodos públicos(pueden ser accedidos desde cualquier clase):

Una cosa más, observaréis que el bucle condicional "if" no lleva llaves "{}", esto está permitido solamente si posee una linea de código, es decir:
  • if(nota>0)
  •   this.nota=nota:
  •   System.out.print("la nota es:"+nota);
  • else
  •   System.out.print("Nota negativa...");
Esto así, nos pega un petardazo, ya que la condición "if" posee más de una linea de código, para que funciones sin llaves, el "if" y el "else" deben de tener SOLO una linea de código.

Dicho este matiz, continuemos:
  • getNota()---> Nos permite obtener el valor del atributo "nota"
  • setNota()---> Nos permite modificar el valor del atributo "nota"
Veamos como utilizarlo en la otra clase:

Como veis en esta clase, cuando creamos un objeto de la clase "NotaExamen" ya no invocamos al atributo, ya que es "private" y no puede ser accedido, para ello invocamos sus métodos públicos, y ellos se encargarán de dar el valor a nota y de obtenerlo. En este ejemplo, cuando introducimos un valor negativo, nos manda un mensaje indicándonoslo e imprime por pantalla el valor que posee "nota".

Posteriormente y conforme vayamos avanzando, iremos profundizando más en esto, ya que en los próximos temas iremos explicando las colecciones, y es ahí donde más vamos a poder ejercer las encapsulaciones..

Hasta aquí los "getters y setter" o "Encapsulación", no tiene mucha historia, lo único que hacemos nuevo, es en vez de invocar al atributo de otra clase, invocamos sus métodos para que ellos mismo obtengan y modifiquen su valor.

Un saludo a todos.

No hay comentarios:

Publicar un comentario