Encapsulamiento

1,866 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,866
On SlideShare
0
From Embeds
0
Number of Embeds
180
Actions
Shares
0
Downloads
82
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Encapsulamiento

  1. 1. EncapsulamientoM.C. Mario Alberto Gómez Rodríguez
  2. 2. Paso de Mensajes Invocación de métodos. Medio de colaboración entre objetos. Conectar() :MandoADistancia :Televisor Canal(4) 2
  3. 3. Paso de Mensajes Un mensaje es una petición de un objeto a otro objeto, al que se le solicita ejecutar uno de sus métodos. Por convenio, el objeto que envía la petición se denomina emisor y el objeto que recibe la petición se denomina receptor Esta técnica de enviar mensajes a objetos se denomina paso de mensajes. 3
  4. 4. Definición de encapsulamiento 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. El encapsulamiento consiste en el ocultamiento del estado (valores de los atributos) de un objeto, de modo que solo sea posible modificarlos mediante métodos del mismo objeto.
  5. 5. Definición de encapsulamiento El encapsulamiento permite generar componentes autónomos de software tomando una parte de funcionalidad y ocultando los detalles de la implementación al mundo exterior (otros objetos). Típicamente 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.
  6. 6. Encapsulamiento y paso de Mensajes
  7. 7. Encapsulamiento El encapsulamiento provee dos principales beneficios a los desarrolladores de software: – Modularidad: el código fuente de un objeto puede ser escrito, así como darle mantenimiento, independientemente del código fuente de otros objetos. – Ocultamiento de la información: 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.
  8. 8. Encapsulamiento El ocultamiento de la información permite a un objeto elegir qué información es publica y qué información es privada para los clientes. Los objetos suelen presentar sus métodos como públicos y sus atributos como privados e inaccesibles desde otros objetos. Para permitir que otros objetos consulten o modifiquen los atributos de los objetos, las clases suelen presentar métodos de acceso. De esta manera el acceso a los datos de los objetos es controlado por el programador. 8
  9. 9. Definición de encapsulamiento Una vez encapsulada, una entidad de software se puede visualizar como una caja negra. Interfaz Mensaje Mensaje Interfaz
  10. 10. Encapsulamiento Con el encapsulado de los datos se consigue que las personas que utilicen un objeto sólo tengan que comprender su interfaz, olvidándose de cómo está implementada. private int i; private int j; private int tmp; private int cont; public int factorial(int n){ } Sens => VolUp => Sens => VolUp => l => Settings.vol++ Vo => Settings.vol++ + => DAC23.out=0.7 => DAC23.out=0.7 => Amp02.gain=1.7 => Amp02.gain=1.7 => OSD, Pref, ...10 => OSD, Pref, ...
  11. 11. Encapsulamiento Interface Clase principal:Encapsulamiento No se preocupa por como esta implementado el Objeto; solo necesita comprender su interfaz. 11
  12. 12. MétodosLos métodos (también conocidos como funciones y procedimientosen otros lenguajes de programación) permiten al programadordividir el programa en módulos, por medio de la separación de sustareas en unidades autónomas; también conocidas como métodosdeclarados por el programador.Las instrucciones que implementan los métodos se escriben sólouna vez, y están ocultas de otros métodos 12
  13. 13. MétodosExisten varias razones para crear programas en módulos pormedio de los métodos: Metodología “divide y vencerás”: Hace que el desarrollo de programas sea más fácil de administrar. Reutilización de software : Usar los módulos existentes como bloques de construcción para crear nuevos programas 13
  14. 14. MétodosPara promover la reutilización de software, cada método debelimitarse de manera que realice una sola tarea bien definida, y sunombre debe expresar esa tarea con efectividad.Con esto se logra que los programas sean más fáciles de escribir,depurar, mantener y modificar.Los métodos pequeños que realizan una tarea son más fáciles deprobar y depurar que los métodos más grandes que realizan muchastareas.Si no es posible elegir un nombre conciso que exprese la tarea deun método, tal vez se están realizando diversas tareas en un mismométodo.Por lo general es mejor dividirlo en varios métodos más pequeños. 14
  15. 15. MétodosUn método se invoca o se llama (es decir se le indica que haga sutarea designada) mediante la llamada a un método.Esta llamada especifica el nombre del método y proporcionainformación (en forma de argumentos) que el método llamadorequiere para realizar su tarea.Una vez que se ha completado la llamada, el método devuelve unresultado al solicitante (o método que hizo la llamada) osimplemente devuelve el control. 15
  16. 16. Formato general de la declaración de un métodoLa primera línea de la declaración de un método se le conoce comoencabezado del método o firma del método (method signature).Después del encabezado del método van las declaraciones einstrucciones entre llaves; las cuales forman el cuerpo del método,que es un bloque.Pueden declararse variables en cualquier bloque y los bloquespueden anidarse.Un método no puede declararse dentro de otro método. 16
  17. 17. Formato general de la declaración de un métodoEl formato básico de la declaración de un método es:tipo-de-valor-de-retorno nombre-del-método(parámetro1, parámetro2, …, parámetroN){ declaraciones e instrucciones}El nombre-del-método es cualquier identificador válido.El tipo-de-valor-de-retorno es el tipo de resultado devuelto por elmétodo al solicitante.El tipo-de-valor-de-retorno void indica que un método no devuelveun valor.Los métodos pueden devolver como máximo un valor. 17
  18. 18. Formato general de la declaración de un métodoLos parámetros se declaran en una lista separada por comas,encerrada entre paréntesis.Se declara el tipo y nombre de cada uno de los parámetros.Debe haber un argumento en la llamada al método para cadaparámetro en la declaración del método.Cada argumento debe ser compatible con el tipo de parámetrocorrespondiente (e.g., un parámetro de tipo double puede recibirvalores de 7.35 o -0.03546, pero no “hello” –porque una cadena nopuede convertirse implícitamente en una variable double- )Si un método no acepta argumentos, la lista de parámetros estavacía (el nombre del método va seguido de un conjunto vacío). 18
  19. 19. Formato general de la declaración de un métodoHay tres maneras de regresar el control a la instrucción que llamaa un método: Si el método no devuelve un resultado, el control regresa cuando el flujo del programa llega a la llave derecha de finalización del método, o cuando se ejecuta la instrucción: return; Si el método devuelve un resultado, la instrucción return expresión; evalúa la expresión y después devuelve el valor resultante al solicitante. Cuanto se ejecuta una instrucción return, el control regresa inmediatamente a la instrucción que llamo al método. 19
  20. 20. Sobrecarga de métodosJava permite la sobrecarga de métodos, distinguiendo entre éstospor sus diferentes firmas de método.Esto significa que los métodos dentro de una clase pueden tener elmismo nombre si tienen una lista diferente de parámetros.Se utiliza cuando se necesita realizar la misma tarea pero condiferente comportamiento. 20
  21. 21. Sobrecarga de métodosEjemplo:public class Operacion { public int suma(int a, int b) { return a + b; } public double suma(double a, double b) { return a + b; } public long suma(long a, long b) { return a + b; }} 21
  22. 22. ConstructoresUn constructor es un método que es invocado cuando un objeto deuna clase es creadoSe utiliza para inicializar los atributos de un objeto.No retornan ningún valor.Puede tener o no tener parámetros.public class Estudiante { int edad; String nombre; Estudiante( ) { //constructor edad = 0; nombre = “Juan”; }} 22
  23. 23. Sobrecarga de constructoresEn Java, al igual que los métodos; se puede utilizar la sobrecargade constructores:public class Estudiante { int edad; String nombre; Estudiante( ) { //constructor edad = 0; nombre = "junaid"; } Estudiante( int n, String s) { //constructor edad = n; nombre = s; }} 23
  24. 24. DestructoresUn destructor es un método que es invocado cuando un objeto deuna clase es finalizado.Es lo opuesto a un constructor.En C++ los objetos creados dinámicamente deben ser liberadosmanualmente utilizando el operador delete.En Java se utiliza el “Garbage Collector” (recolector de basura). 24
  25. 25. DestructoresPara agregarlo solo se tiene que definir el método finalize( ) en laclase.Java llama éste método siempre que necesite liberar un objeto dedicha clase.Dentro del método finalize( ) se especifican aquellas acciones quedeben ser efectuadas antes de que un objeto sea destruido.El recolector de basura de Java realiza verificacionesperiódicamente en busca de objetos que ya no son referenciados. 25
  26. 26. DestructoresEl recolector de basura libera automáticamente los recursos dememoria utilizados por los objetos, pero dichos objetos puedenmantener otros tipos de recursos tales como: – Archivos abiertos – Conexiones de redEl recolector no puede liberar este tipo de recursos por si solo; porlo tanto es necesario un método finalizador para cualquier objetoque necesite efectuar tales tareas como: – Cerrar archivos – Terminar las conexiones de red – Eliminar archivos temporales – etc. 26
  27. 27. DestructoresUn destructor es un método que no tiene argumentos ni retornaningún valor.Solamente puede haber un destructor por clase y se debe dellamar finalize( ).Un destructor puede lanzar cualquier tipo de excepción o error,pero cuando es invocado automáticamente por el recolector debasura, cualquier excepción o error que éste lance será ignorada ysolo causará que el método destructor retorne.Los destructores típicamente son declarados como protected, perotambién pueden ser declarados como public.El método finalize( ) está declarado en la clase java.lang.Object. 27
  28. 28. Destructorespublic class AbrirArchivo { FileInputStream refArchivo = null; AbrirArchivo (String nombreArchivo) { try { refArchivo = new FileInputStream(nombreArchivo); } catch (java.io.FileNotFoundException e) { System.err.println("No se pudo abrir el archivo " + nombreArchivo); } } protected void finalize () throws throwable { if (refArchivo != null) { refArchivo.close(); refArchivo = null; } // Si la superclase tiene un método finalizador, éste es invocado al final super.finalize(); }} 28

×