encapsulamiento

6
Encapsulamiento en Java Presentado por León Arenas River Ing Sistemas y Telecomunicaciones Universidad Católica de Perei Fundación centro de investigación Docencia y consultoría Administrativa Facultad Ntic’s e ingenierías

Upload: leon-arenas-rivera

Post on 26-Jul-2015

127 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Encapsulamiento

Encapsulamiento en JavaPresentado por León Arenas Rivera

Ing Sistemas y Telecomunicaciones Universidad Católica de Pereira

Fundación centro de investigación

Docencia y consultoría Administrativa

Facultad Ntic’s e ingenierías

Page 2: Encapsulamiento

Encapsulamiento de Clases

Definición previa: un paquete es una colección de clases que se encuentran en el mismo directorio. Las clases permiten implementar tipos de datos abstractos. El problema que se presenta es que desde cualquier clase se puede accesar los campos de un objeto perteneciente a otra clase. Esto es una violación al principio de abstracción que dice que un tipo de datos abstracto sólo puede ser manipulado a través de las operaciones que se definen para éste.

Visibilidad de Campos y Métodos

En java al definir una clase se puede controlar la visibilidad que tendrán sus campos y métodos al exterior de la clase. Este control se efectúa de la siguiente forma:

class A{ private int privx; protected int protb; public int pubc; int paqd;

private void MetPriv() { ... } protected void MetProt() { ... } public void MetPub(A a) { // Un campo siempre es visible // en la clase en donde se define ... privx ... a.privx ... ... protb ... a.protb ... ... pubc ... a.pubc ... // Un método siempre es visible // en la clase en donde se define MetPriv(); a.MetPriv(); } void MetPaq() { ... }}

Page 3: Encapsulamiento

Las palabras private, protected y public son atributos de un campo o un método y su significado es el siguiente:private: El campo o método sólo es visible dentro de la clase donde se define.protected: El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases.public: El campo o método es visible en cualquier clase.Ninguna de las anteriores: El campo o método es visible en cualquiera de las clases pertenecientes al paquete en donde se define.Ejemplo:class B{ public void MetB() { A a= new A(); a.pubc= 1; // Ok a.priva= 2; // error, privado a.protb= 3; // error, B no es // subclase de A

a.MetPub(); // Ok a.MetPriv(); // error, privado }}

Visibilidad de ClasesAl declarar una clase se puede especificar que es pública usando el atributo public. De este modo la clase podrá ser usada por cualquier otra clase. Si la clase no es pública entonces la clase sólo puede ser usada dentro del paquete que la contiene.

public class Box extends GraphObj{ ... }Podemos hacer un resumen de los atributos que pueden tener campos, métodos o clases:Campo: {private | public | protected} {final} {static}Método: {private | public | protected} {final | abstract} {static}Clase: {public} {final | abstract}Sólo se puede especificar uno de los atributos puestos en la misma llave.

El nombre de archivoUn archivo puede contener a lo más una clase pública, en cuyo caso el nombre del archivo debe ser el mismo de la clase pública, más la extensión .java. El resto de las clases del archivo sólo serán visibles dentro del paquete. Es usual que los archivos contengan una sola clase, pero también a veces se agregan otras clases al archivo cuando éstas son usadas sólo dentro de ese mismo archivo.

Page 4: Encapsulamiento

EncapsulamientoComo se puede observar de los diagramas, las variables del objeto se localizan en el centro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros objetos en el programa. Al empaquetamiento de las variables de un objeto con la protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier tiempo sin afectar otras partes del programa.El encapsulamiento de variables y métodos en un componente de software ordenado es, todavía, una simple idea poderosa que provee dos principales beneficios a los desarrolladores de software:

Modularidad: esto es, el código fuente de un objeto puede ser escrito, así como darle mantenimiento, independientemente del código fuente de otros objetos. Así mismo, un objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.

Ocultamiento de la información: es decir, un objeto tiene una "interfaz publica" que otros objetos pueden utilizar para comunicarse con él. Pero el objeto puede mantener información y métodos privados que pueden ser cambiados en cualquier tiempo sin afectar a los otros objetos que dependan de ello. Los objetos proveen el beneficio de la modularidad y el ocultamiento de la información. Las clases proveen el beneficio de la reutilización. Los programadores de software utilizan la misma clase, y por lo tanto el mismo código, una y otra vez para crear muchos objetos. En las implantaciones orientadas a objetos se percibe un objeto como un paquete de datos y procedimientos que se pueden llevar a cabo con estos datos. Esto encapsula los datos y los procedimientos. La realidad es diferente: los atributos se relacionan al objeto o instancia y los métodos a la clase. ¿Por qué se hace así? Los atributos son variables comunes en cada objeto de una clase y cada uno de ellos puede tener un valor asociado, para cada variable, diferente al que tienen para esa misma variable los demás objetos. Los métodos, por su parte, pertenecen a la clase y no se almacenan en cada objeto, puesto que sería un desperdicio almacenar el mismo procedimiento varias veces y ello va contra el principio de reutilización de código.

Page 5: Encapsulamiento

Encapsulamiento•El encapsulamiento es la propiedad que permite envolver atributos (datos) y métodos (comportamiento) en un unidad lógica, el objeto•Se encapsulan (envuelven) atributos y métodos de una clase•El radio de un auto encapsula sus datos y el comportamiento que le permiten al conductor seleccionar una estación de radio, reproducir CD’s, entre otras acciones. •Los componentes del radio están encapsulados en su caja•El encapsulamiento permite a los objetos ocultar su implementación de otros objetos, este principio se conoce como ocultamiento de la información•Aunque los objetos se pueden comunicar entre si a través de interfaces, no están conscientes de cómo se implementan otros objetos•Los detalles de implementación se ocultan dentro de los mismos objetos (buena ingeniería de software!!!)•Cómo se logra encapsular atributos y métodos en Java?•Utilizando modificadores de acceso