Posts Tagged ‘programacion orientada objetos

30
Abr
13

Propiedades de la P.O.O. (Encapsulamiento)

El Encapsulamiento  es una de las características de la programación orientada a objetos, esta trata de reducir el nivel de cohesión entre clases a través de dos principios básicos:

1) ocultar la complejidad del código y

2) ocultar las fuentes de cambios; proporcionando una interfaz pública de la clase más fácil de usar.

El primer punto hace referencia a: que podemos utilizar una funcionalidad de la clase sin necesidad de conocer la naturaleza de la complejidad que se desarrolla al ejecutar dicha funcionalidad o sea que podemos ejecutar un método y esperar una respuesta de este sin conocer la lógica que se desarrolla para entregar dicha respuesta. El segundo punto hace referencia a que dicha complejidad puede cambiar incluso en su implementación, pero a nivel externo seguirá funcionando sin que los llamados a esta funcionalidad se de por advertidos, o sea que usamos un método de una clase e instalamos una nueva versión de dicha clase y puede que el código de dicho método tuviese una actualización pero a nosotros como usuarios de dicho método en realidad lo único que nos interesa es que el método ofrezca la misma respuesta.

En otras palabras el punto uno se refiere a que la clase provea los métodos para usar la lógica interna sin necesidad de  que conozcamos dicha lógica y el segundo punto hace referencia a que dicho código puede cambiar y no nos afecte en la manera que los hayamos usado.

Al momento de encapsular las abstracciones es un proceso de cuidado y debe hacerse de manera adecuada, ya que realizar la descripción de interfaces sin los niveles adecuados de encapsulación terminará causando dificultades a los cambios que se den de manera posterior. Así podemos entender a la encapsulación como un atributo que permite modificación, evolución, crecimiento de nuestro código, siempre y cuando respetemos la interfaz pública de nuestras clases ademas reducir la complejidad de las abstracciones. proporcionando una forma de ocultar los detalles de implementación y también nos ayudan a minimizar la interdependencia y facilitar el modificaciones a su vez brindando la libertad para cambiar lo que queramos del funcionamiento interno encapsulado.  podemos resumir la encapsulación en la siguiente premisa En la maximización de encapsulación, reduciendo al mínimo la exposición de los detalles de implementación.

La encapsulación es mucho más que getters y setters, y la naturaleza de esta va mucho más allá que la de proporcionar una interfaz pública a atributos privados. El sentido de los getters y setters no es para ocultar los datos en sí, en realidad es para ocultar los detalles de la implementación de cómo se manipula la información. Así, una vez más, lo que hacemos es proporcionar una interfaz pública a través del cual podemos acceder a estos datos.

el ejemplo más sencillo que se me puede ocurrir de encapsulamiento es:

package ingenio.ds.examples;

public class Main {

   public static void main(String argumentos[]){
		/*Al momento de acceder a la propiedad nombre del estudiante ya que es públi
		 *ca no tenemos ningún problema en tomar el valor. Y esta se nos mostrará c
		 *omo null.
		 *Al momento de acceder a la propiedad nombre del profesor este encapsula c
		 *ierta lógica que nos impide accesarla de manera directa y apersar que el
		 *valor es null el dato retornado es diferente.
		 */
		 Estudiante estudiante= new Estudiante();
		 Profesor profesor= new Profesor();
		 System.out.println("Nombre estudiante "+estudiante.nombre);
		 System.out.println("Nombre profesor   "+profesor.getNombre());
	}
}

class Estudiante {
	public String nombre;
	public String identificacion;
}

class Profesor{
	private String nombre;
	private String identificacion;

	public String getNombre(){
		if(nombre==null){
			return "NULO";
		}else if(nombre==""){
			return "N/A";
		}
		return nombre;
	}

	public String getIdentificacion(){
		if(identificacion==null || nombre==""){
			return "NO IDENTIFICADO";
		}
		return nombre;
	}

	public void setNombre(String nombre){
		this.nombre=nombre;
	}
	public void setIdentificacion(String identificacion){
		this.identificacion=identificacion;
	}
}

Referencias

http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)

http://www.javaworld.com/javaworld/jw-05-2001/jw-0518-encapsulation.html?page=9

http://java.about.com/od/workingwithobjects/a/accessormutator.htm

http://java.dzone.com/articles/why-encapsulation-matters




I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 354 suscriptores

Redes Sociales y Archivos

Entradas

May 2024
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031