SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Encapsulamiento


M.C. Mario Alberto Gómez Rodríguez
Paso de Mensajes

   Invocación de métodos.
   Medio de colaboración entre
    objetos.




                                        Conectar()
                     :MandoADistancia                :Televisor
                                         Canal(4)



                                                                  2
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
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.
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.
Encapsulamiento y paso de Mensajes
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.
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
Definición de encapsulamiento


    Una vez encapsulada, una entidad de software se
    puede visualizar como una caja negra.




                         Interfaz
            Mensaje                   Mensaje

                         Interfaz
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, ...
Encapsulamiento

                          Interface




                  Clase principal:
Encapsulamiento
                  No se preocupa
                  por como esta
                  implementado el
                  Objeto;    solo
                  necesita
                  comprender su
                  interfaz.
                                      11
Métodos

Los métodos (también conocidos como funciones y procedimientos
en otros lenguajes de programación) permiten al programador
dividir el programa en módulos, por medio de la separación de sus
tareas en unidades autónomas; también conocidas como métodos
declarados por el programador.

Las instrucciones que implementan los métodos se escriben sólo
una vez, y están ocultas de otros métodos




                                                              12
Métodos

Existen varias razones para crear programas en módulos por
medio 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
Métodos

Para promover la reutilización de software, cada método debe
limitarse de manera que realice una sola tarea bien definida, y su
nombre 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 de
probar y depurar que los métodos más grandes que realizan muchas
tareas.

Si no es posible elegir un nombre conciso que exprese la tarea de
un método, tal vez se están realizando diversas tareas en un mismo
método.

Por lo general es mejor dividirlo en varios métodos más pequeños.
                                                               14
Métodos

Un método se invoca o se llama (es decir se le indica que haga su
tarea designada) mediante la llamada a un método.

Esta llamada especifica el nombre del método y proporciona
información (en forma de argumentos) que el método llamado
requiere para realizar su tarea.

Una vez que se ha completado la llamada, el método devuelve un
resultado al solicitante (o método que hizo la llamada) o
simplemente devuelve el control.




                                                               15
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 como
encabezado del método o firma del método (method signature).

Después del encabezado del método van las declaraciones e
instrucciones entre llaves; las cuales forman el cuerpo del método,
que es un bloque.

Pueden declararse variables en cualquier bloque y los bloques
pueden anidarse.

Un método no puede declararse dentro de otro método.




                                                                16
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 el
método al solicitante.

El tipo-de-valor-de-retorno void indica que un método no devuelve
un valor.

Los métodos pueden devolver como máximo un valor.
                                                                              17
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 cada
parámetro en la declaración del método.

Cada argumento debe ser compatible con el tipo de parámetro
correspondiente (e.g., un parámetro de tipo double puede recibir
valores de 7.35 o -0.03546, pero no “hello” –porque una cadena no
puede convertirse implícitamente en una variable double- )

Si un método no acepta argumentos, la lista de parámetros esta
vacía (el nombre del método va seguido de un conjunto vacío).

                                                              18
Formato general de la declaración de
                un método
Hay tres maneras de regresar el control a la instrucción que llama
a 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
Sobrecarga de métodos

Java permite la sobrecarga de métodos, distinguiendo entre éstos
por sus diferentes firmas de método.

Esto significa que los métodos dentro de una clase pueden tener el
mismo nombre si tienen una lista diferente de parámetros.

Se utiliza cuando se necesita realizar la misma tarea pero con
diferente comportamiento.




                                                               20
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
Constructores

Un constructor es un método que es invocado cuando un objeto de
una 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
Sobrecarga de constructores

En Java, al igual que los métodos; se puede utilizar la sobrecarga
de 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
Destructores

Un destructor es un método que es invocado cuando un objeto de
una clase es finalizado.

Es lo opuesto a un constructor.

En C++ los objetos creados dinámicamente deben ser liberados
manualmente utilizando el operador delete.

En Java se utiliza el “Garbage Collector” (recolector de basura).




                                                                     24
Destructores

Para agregarlo solo se tiene que definir el método finalize( ) en la
clase.

Java llama éste método siempre que necesite liberar un objeto de
dicha clase.

Dentro del método finalize( ) se especifican aquellas acciones que
deben ser efectuadas antes de que un objeto sea destruido.

El recolector de basura de Java realiza verificaciones
periódicamente en busca de objetos que ya no son referenciados.




                                                                 25
Destructores

El recolector de basura libera automáticamente los recursos de
memoria utilizados por los objetos, pero dichos objetos pueden
mantener otros tipos de recursos tales como:
   – Archivos abiertos
   – Conexiones de red

El recolector no puede liberar este tipo de recursos por si solo; por
lo tanto es necesario un método finalizador para cualquier objeto
que necesite efectuar tales tareas como:
    – Cerrar archivos
    – Terminar las conexiones de red
    – Eliminar archivos temporales
    – etc.



                                                                  26
Destructores

Un destructor es un método que no tiene argumentos ni retorna
ningún valor.

Solamente puede haber un destructor por clase y se debe de
llamar finalize( ).

Un destructor puede lanzar cualquier tipo de excepción o error,
pero cuando es invocado automáticamente por el recolector de
basura, cualquier excepción o error que éste lance será ignorada y
solo causará que el método destructor retorne.

Los destructores típicamente son declarados como protected, pero
también pueden ser declarados como public.

El método finalize( ) está declarado en la clase java.lang.Object.

                                                                      27
Destructores

public 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

Más contenido relacionado

La actualidad más candente

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y ReporteTransformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y ReporteNeoinquisidor
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Marta Silvia Tabares
 
Funciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de DatosFunciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de DatosJesus Parra
 
Integridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosIntegridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosDrakonis11
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
5 estructura interna de un objeto
5  estructura interna de un objeto5  estructura interna de un objeto
5 estructura interna de un objetozeta2015
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.carmenmc2017
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)Roberto Rojas
 
Implementación de clases
Implementación de clasesImplementación de clases
Implementación de clasesFernando Solis
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a ObjetosIsmael Perea
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETRoberto Taborda
 

La actualidad más candente (20)

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y ReporteTransformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Funciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de DatosFunciones y Componente de un Sistema de Gestión de Base de Datos
Funciones y Componente de un Sistema de Gestión de Base de Datos
 
Integridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosIntegridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De Datos
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
5 estructura interna de un objeto
5  estructura interna de un objeto5  estructura interna de un objeto
5 estructura interna de un objeto
 
Estructura de registros
Estructura de registrosEstructura de registros
Estructura de registros
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Implementación de clases
Implementación de clasesImplementación de clases
Implementación de clases
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
Base de datos
Base de datos Base de datos
Base de datos
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Modelo jerarquico
Modelo jerarquicoModelo jerarquico
Modelo jerarquico
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NET
 

Similar a Encapsulamiento (20)

Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Guia1 pii
Guia1 piiGuia1 pii
Guia1 pii
 
Examen ipoo wha_estudiar
Examen ipoo wha_estudiarExamen ipoo wha_estudiar
Examen ipoo wha_estudiar
 
Examen ipoo wha_estudiar
Examen ipoo wha_estudiarExamen ipoo wha_estudiar
Examen ipoo wha_estudiar
 
Conceptos y definiciones de poo (quino ortiz & miguel martinez)
Conceptos y definiciones de poo (quino ortiz & miguel martinez)Conceptos y definiciones de poo (quino ortiz & miguel martinez)
Conceptos y definiciones de poo (quino ortiz & miguel martinez)
 
Configuracion de variables de entorno
Configuracion de variables de entornoConfiguracion de variables de entorno
Configuracion de variables de entorno
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Encapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANSEncapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANS
 
Diseño de Sistemas
Diseño de SistemasDiseño de Sistemas
Diseño de Sistemas
 
Tad
TadTad
Tad
 
Practica retro java 28102013
Practica retro java 28102013Practica retro java 28102013
Practica retro java 28102013
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
Métodos en Java-Con ejemplos
Métodos en Java-Con ejemplosMétodos en Java-Con ejemplos
Métodos en Java-Con ejemplos
 
Clases y objetos
Clases y objetosClases y objetos
Clases y objetos
 
Logica subprogramas
Logica subprogramasLogica subprogramas
Logica subprogramas
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
Conceptos estructuras de datos
Conceptos estructuras de datosConceptos estructuras de datos
Conceptos estructuras de datos
 
Tc2 301403 21
Tc2 301403 21Tc2 301403 21
Tc2 301403 21
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 

Más de Whaleejaa Wha (20)

Windows 7
Windows 7Windows 7
Windows 7
 
Windows 7 avanzado
Windows 7 avanzadoWindows 7 avanzado
Windows 7 avanzado
 
Virtualizacion con vm ware
Virtualizacion con vm wareVirtualizacion con vm ware
Virtualizacion con vm ware
 
Unity
UnityUnity
Unity
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Tecnico windows
Tecnico windowsTecnico windows
Tecnico windows
 
Tecnico hardware desde cero
Tecnico hardware desde ceroTecnico hardware desde cero
Tecnico hardware desde cero
 
Soluciones pc desde cero
Soluciones pc desde ceroSoluciones pc desde cero
Soluciones pc desde cero
 
Silverlight
SilverlightSilverlight
Silverlight
 
Servicio tecnico notebooks
Servicio tecnico notebooksServicio tecnico notebooks
Servicio tecnico notebooks
 
Seguridad pc desde cero
Seguridad pc desde ceroSeguridad pc desde cero
Seguridad pc desde cero
 
Seguridad informatica
Seguridad informaticaSeguridad informatica
Seguridad informatica
 
Routers y switches cisco
Routers y switches ciscoRouters y switches cisco
Routers y switches cisco
 
Robotica
RoboticaRobotica
Robotica
 
Redes wireless
Redes wirelessRedes wireless
Redes wireless
 
Redes wifi
Redes wifiRedes wifi
Redes wifi
 
Proteus vsm
Proteus vsmProteus vsm
Proteus vsm
 
Produccion musical
Produccion musicalProduccion musical
Produccion musical
 
Php avanzado
Php avanzadoPhp avanzado
Php avanzado
 
Overclocking
OverclockingOverclocking
Overclocking
 

Encapsulamiento

  • 2. Paso de Mensajes  Invocación de métodos.  Medio de colaboración entre objetos. Conectar() :MandoADistancia :Televisor Canal(4) 2
  • 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. 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. 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.
  • 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. 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. Definición de encapsulamiento  Una vez encapsulada, una entidad de software se puede visualizar como una caja negra. Interfaz Mensaje Mensaje Interfaz
  • 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. Encapsulamiento Interface Clase principal: Encapsulamiento No se preocupa por como esta implementado el Objeto; solo necesita comprender su interfaz. 11
  • 12. Métodos Los métodos (también conocidos como funciones y procedimientos en otros lenguajes de programación) permiten al programador dividir el programa en módulos, por medio de la separación de sus tareas en unidades autónomas; también conocidas como métodos declarados por el programador. Las instrucciones que implementan los métodos se escriben sólo una vez, y están ocultas de otros métodos 12
  • 13. Métodos Existen varias razones para crear programas en módulos por medio 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. Métodos Para promover la reutilización de software, cada método debe limitarse de manera que realice una sola tarea bien definida, y su nombre 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 de probar y depurar que los métodos más grandes que realizan muchas tareas. Si no es posible elegir un nombre conciso que exprese la tarea de un método, tal vez se están realizando diversas tareas en un mismo método. Por lo general es mejor dividirlo en varios métodos más pequeños. 14
  • 15. Métodos Un método se invoca o se llama (es decir se le indica que haga su tarea designada) mediante la llamada a un método. Esta llamada especifica el nombre del método y proporciona información (en forma de argumentos) que el método llamado requiere para realizar su tarea. Una vez que se ha completado la llamada, el método devuelve un resultado al solicitante (o método que hizo la llamada) o simplemente devuelve el control. 15
  • 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 como encabezado del método o firma del método (method signature). Después del encabezado del método van las declaraciones e instrucciones entre llaves; las cuales forman el cuerpo del método, que es un bloque. Pueden declararse variables en cualquier bloque y los bloques pueden anidarse. Un método no puede declararse dentro de otro método. 16
  • 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 el método al solicitante. El tipo-de-valor-de-retorno void indica que un método no devuelve un valor. Los métodos pueden devolver como máximo un valor. 17
  • 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 cada parámetro en la declaración del método. Cada argumento debe ser compatible con el tipo de parámetro correspondiente (e.g., un parámetro de tipo double puede recibir valores de 7.35 o -0.03546, pero no “hello” –porque una cadena no puede convertirse implícitamente en una variable double- ) Si un método no acepta argumentos, la lista de parámetros esta vacía (el nombre del método va seguido de un conjunto vacío). 18
  • 19. Formato general de la declaración de un método Hay tres maneras de regresar el control a la instrucción que llama a 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. Sobrecarga de métodos Java permite la sobrecarga de métodos, distinguiendo entre éstos por sus diferentes firmas de método. Esto significa que los métodos dentro de una clase pueden tener el mismo nombre si tienen una lista diferente de parámetros. Se utiliza cuando se necesita realizar la misma tarea pero con diferente comportamiento. 20
  • 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. Constructores Un constructor es un método que es invocado cuando un objeto de una 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. Sobrecarga de constructores En Java, al igual que los métodos; se puede utilizar la sobrecarga de 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. Destructores Un destructor es un método que es invocado cuando un objeto de una clase es finalizado. Es lo opuesto a un constructor. En C++ los objetos creados dinámicamente deben ser liberados manualmente utilizando el operador delete. En Java se utiliza el “Garbage Collector” (recolector de basura). 24
  • 25. Destructores Para agregarlo solo se tiene que definir el método finalize( ) en la clase. Java llama éste método siempre que necesite liberar un objeto de dicha clase. Dentro del método finalize( ) se especifican aquellas acciones que deben ser efectuadas antes de que un objeto sea destruido. El recolector de basura de Java realiza verificaciones periódicamente en busca de objetos que ya no son referenciados. 25
  • 26. Destructores El recolector de basura libera automáticamente los recursos de memoria utilizados por los objetos, pero dichos objetos pueden mantener otros tipos de recursos tales como: – Archivos abiertos – Conexiones de red El recolector no puede liberar este tipo de recursos por si solo; por lo tanto es necesario un método finalizador para cualquier objeto que necesite efectuar tales tareas como: – Cerrar archivos – Terminar las conexiones de red – Eliminar archivos temporales – etc. 26
  • 27. Destructores Un destructor es un método que no tiene argumentos ni retorna ningún valor. Solamente puede haber un destructor por clase y se debe de llamar finalize( ). Un destructor puede lanzar cualquier tipo de excepción o error, pero cuando es invocado automáticamente por el recolector de basura, cualquier excepción o error que éste lance será ignorada y solo causará que el método destructor retorne. Los destructores típicamente son declarados como protected, pero también pueden ser declarados como public. El método finalize( ) está declarado en la clase java.lang.Object. 27
  • 28. Destructores public 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