Você está na página 1de 5

ENCAPSULAMIENTO, CONTROL DE ACCESO

MODIFICADOR ESTATICO

Definicin de Encapsulamiento:
Este concepto consiste en la ocultacin del estado, o lo que es lo mismo, de los
datos miembro de un objeto, de forma que slo es posible modificar los mismos
mediante las operaciones (mtodos, en Java) definidos para dicho objeto.
Cada objeto est aislado del exterior, de forma que la aplicacin al final es un
conjunto ms o menos extenso de objetos que colaboran entre s mediante el
paso de mensajes entre ellos, es decir, mediante la invocacin de sus
operaciones o mtodos. De esta forma, los detalles de implementacin
permanecen "ocultos" a las personas que usan las clases, evitando as
modificaciones o accesos indebidos a los datos que almacenan las clases.
Adems, el usuario de la clase no se tiene que preocupar de cmo estn
implementados los mtodos y propiedades, concentrndose slo en cmo
debe usarlos.
La encapsulacin es una de las principales ventajas que proporciona la
programacin orientada a objetos.


El encapsulamiento permite a los objetos elegir qu informacin es publicada y
qu informacin es ocultada al resto de los objetos. Para ello los objetos suelen
presentar sus mtodos como interfaces pblicas y sus atributos como datos
privados e inaccesibles desde otros objetos.

Para permitir que otros objetos consulten o modifiquen los atributos de los
objetos, las clases suelen presentar mtodos de acceso. De esta manera el
acceso a los datos de los objetos es controlado por el programador, evitando
efectos laterales no deseados.

Con el encapsulado de los datos se consigue que las personas que utilicen un
objeto slo tengan que comprender su interfaz, olvidndose de cmo est
implementada, y en definitiva, reduciendo la complejidad de utilizacin.

Caractersticas De Un Encapsulamiento Eficaz:

Un encapsulamiento eficaz permite escribir componentes autnomos de
software.

Las tres caractersticas de un encapsulamiento eficaz son:

Abstraccin
Ocultamiento de la implementacin
Divisin de la responsabilidad


Definicin control de acceso:
La encapsulacin proporciona otra importante caracterstica: el control de acceso. ste
consiste en poder controlar qu partes de un programa pueden acceder a los
miembros de una clase. Si se permite el acceso a los datos de una clase solamente a
travs de un conjunto de mtodos bien definidos, se puede prevenir la incorrecta
utilizacin de esos datos.
Una clase bien implementada debe ser como una "caja negra" que puede ser utilizada
pero no deja ver los detalles internos de su implementacin.
El tipo de acceso a un miembro de una clase se define con el especificador de acceso
que modifica su declaracin. Los especificadores de acceso en Java son public
pblico), private (privado) y protected (protegido), package (fiendly, sin declaracin
especfica)
TIPOS DE COCTROL DE ACCESO EN JAVA:
private
private String NumeroDelCarnetDeIdentidad;
Las variables y mtodos de instancia privados slo pueden ser accedidos desde
dentro de la clase. No son accesibles desde las subclases de esa clase. Hay que
resaltar una vez ms, que un mtodo de instancia de un objeto de una clase puede
acceder a todos los miembros privados de ese objeto, o miembros privados de
cualquier otro objeto de la misma clase. Es decir, que en Java el control de acceso
existe a nivel de clase, pero no a nivel de objeto de la clase.
public
Public void CualquieraPuedeAcceder (){}
Cualquier clase desde cualquier lugar puede acceder a las variables y mtodos de
instancia pblicos.

Protected
Protected void SoloSubClases (){}
Slo las subclases de la clase y nadie ms puede acceder a las variables y mtodos
de instancia protegidos. Los mtodos protegidos pueden ser vistos por las clases
derivadas, como en C++, y tambin, en Java, por los paquetes. Todas las clases de un
paquete pueden ver los mtodos protegidos de ese paquete. Esto difiere
significativamente de C++, en donde los miembros protegidos solamente pueden ser
accedidos por miembros de la misma clase o miembros de subclases.
Package (fiendly, sin declaracin especfica)
Void MetodoDeMiPaquete (){}
Por defecto, si no se especifica el control de acceso, las variables y mtodos de
instancia se declaran package (friendly, amigas), lo que significa que son accesibles
por todos los objetos dentro del mismo paquete, pero no por los externos al paquete.
Aparentemente, parece lo mismo que protected; la diferencia estriba en que la
designacin de protected es heredada por las subclases de un paquete diferente,
mientras que la designacin package no es heredada por subclases de paquetes
diferentes.
Debido a la complejidad y posible confusin respecto a los niveles de proteccin que
proporciona Java para permitir el control preciso de la visibilidad de variables y
mtodos, se puede generar otra tabla en base a cuatro categoras de visibilidad entre
los elementos de clase:



private sin modificador protected public
Misma clase SI SI SI SI
Misma subclase de paquete NO SI SI SI
Misma no-subclase de paquete NO SI SI SI
Subclase de diferente paquete NO NO SI SI
No-subclase de diferente paquete NO NO NO SI




Modificador Esttico:
Datos estticos
Un dato esttico es una variable miembro que no se asocia a un objeto (instancia)
de una clase, sino que se asocia a la clase misma; no hay una copia del dato para
cada objeto sino una sola copia que es compartida por todos los objetos de la clase.

Por ejemplo:

class Punto {
int x , y ;
static int numPuntos = 0;

Punto ( int a , int b ) {
x = a ; y = b;
numPuntos ++ ;
}
}

En el ejemplo numPuntos es un contador que se incrementa cada vez que se crea
una instancia de la clase Punto.

Obsrvese la forma en que se declara numPuntos, colocando el modificador static
delante del tipo. La sintaxis general para declarar una variable es:

[modificadores] tipo_variable nombre;

static es un modificador. En los siguientes captulos se irn viendo otros
modificadores. Los [ ] en la expresin anterior quieren decir que los modificadores
son opcionales.

El acceso a las variables estticas desde fuera de la clase donde se definen se
realiza a travs del nombre de la clase y no del nombre del objeto como sucede con
las variables miembro normales (no estticas). En el ejemplo anterior puede
escribirse:

int x = Punto.numPuntos;

No obstante tambin es posible acceder a las variables estticas a travs de una
referencia a un objeto de la clase. Por ejemplo:

Punto p = new Punto();
int x = p.numPuntos;

Las variables estticas de una clase existen, se inicializan y pueden usarse antes
de que se cree ningn objeto de la clase.


Mtodos estticos
Para los mtodos, la idea es la misma que para los datos: los mtodos estticos se
asocian a una clase, no a una instancia.

Por ejemplo:

class Punto {
int x , y ;
static int numPuntos = 0;

Punto ( int a , int b ) {
x = a ; y = b;
numPuntos ++ ;
}

static int cuantosPuntos() {
return numPuntos;
}
}

La sintaxis general para la definicin de los mtodos es, por tanto, la siguiente:

[modificadores ] Tipo_Valor_devuelto nombre_mtodo ( lista_argumentos ) {
bloque_de_codigo;
}

El acceso a los mtodos estticos se hace igual que a los datos estticos, es decir,
usando el nombre de la clase, en lugar de usar una referencia:

Int totalPuntos = Punto.cuantosPuntos();

Dado que los mtodos estticos tienen sentido a nivel de clase y no a nivel de
objeto (instancia) los mtodos estticos no pueden acceder a datos miembros que
no sean estticos.

Você também pode gostar