Está en la página 1de 4

Encapsulación:

También conocida como ocultamiento. Cuando me acuesto a ver televisión


no me preocupo del modo como éste funciona, o lo que hace para cambiar
de canal o aumentar el volumen. A menos que seas experto en electrónica o
técnico en televisores, te pasará lo mismo: no lo sabes y no te importa; sólo
sabes que al presionar un botón ocurre la magia.

La encapsulación se encarga de mantener ocultos los procesos internos que


necesita para hacer lo que sea que haga, dándole al programador acceso sólo
a lo que necesita. Esto da dos ventajas iniciales: Lo que hace el usuario
puede ser controlado internamente (incluso sus errores), evitando que todo
colapse por una intervención indeseada (tú no quieres que tu mamá, que no
tiene ni idea de electrónica, abra tu televisor y empiece a jugar con los
circuitos para cambiar los canales manualmente ¿verdad?). La segunda
ventaja es que, al hacer que la mayor parte del código esté oculto, puedes
hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van
a utilizar tu código. Sólo tienes que mantener igual la forma de acceder a él
(en el caso del control de la tele, que los botones sigan siendo los mismos y
que el botón de “apagado” no cambie el volumen). Por cierto, estas puertas
de acceso que das a los usuarios son lo que se conoce como interfaz.(7)

El encapsulamiento consiste en unir


en la Clase las características y
comportamientos, esto es, las
variables y métodos. Es tener todo
esto es una sola entidad. En los
lenguajes estructurados esto era
imposible. Es evidente que el
encapsulamiento se logra gracias a
la abstracción y el ocultamiento que
veremos a continuación.

La utilidad del encapsulamiento va


por la facilidad para manejar la
complejidad, ya que tendremos a las
Clases como cajas negras donde sólo
se conoce el comportamiento pero
no los detalles internos, y esto es
conveniente porque nos interesará
será conocer qué hace la Clase pero
no será necesario saber cómo lo
hace.

La encapsulación es un mecanismo que consiste en organizar datos y métodos de una


estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso
a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulación
garantiza la integridad de los datos que contiene un objeto.
Ocultación de datos

El usuario de una clase en particular no necesita saber cómo están estructurados los datos
dentro de ese objeto, es decir, un usuario no necesita conocer la implementación Al evitar que
el usuario modifique los atributos directamente y forzándolo a utilizar funciones definidas para
modificarlos (llamadas interfaces), se garantiza la integridad de los datos (por ejemplo, uno
puede asegurarse de que el tipo de datos suministrados cumple con nuestras expectativas
bien que los se encuentran dentro del periodo de tiempo esperado).
La encapsulación define los niveles de acceso para elementos de esa clase. Estos niveles de
acceso definen los derechos de acceso para los datos, permitiéndonos el acceso a datos a
través de un método de esa clase en particular, desde una clase heredada o incluso desde
cualquier otra clase. Existen tres niveles de acceso:
 público: funciones de toda clase pueden acceder a los datos o métodos de una clase que se
define con el nivel de acceso público. Este es el nivel de protección de datos más bajo

 protegido: el acceso a los datos está restringido a las funciones de clases heredadas, es
decir, las funciones miembro de esa clase y todas las subclases

 privado: el acceso a los datos está restringido a los métodos de esa clase en particular. Este
es nivel más alto de protección de datos (10)

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());
}
}

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;
}
}
En el ejemplo que te adjunto aquí, la clase creada con el post anterior se llamará "Lector.java" y el método será
"leer()", en la clase Principal o Main iría algo como esto:

public class Main {


public static void main(String args[]) {
Estudiante estudiante1 = new Estudiante();

Lector teclado = new Lector();


estudiante1.setNombre(teclado.leer());
estudiante1.setApellido(teclado.leer());
estudiante1.setCorreo(teclado.leer());

System.out.println(estudiante1.getNombre());
System.out.println(estudiante1.getApellido());
System.out.println(estudiante1.getCorreo());
}
}

http://aularagon.catedu.es/materialesaularagon2013/POO-Tecnologia/M3/encapsulamiento.html

También podría gustarte