Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Interfaces y Excepciones en Java: Conceptos Fundamentales y Ejemplos, Apuntes de Programación Orientada a Objetos

Este documento proporciona una introducción a las interfaces y excepciones en java, cubriendo conceptos clave como la implementación de interfaces, métodos default y estáticos, la jerarquía de excepciones, el manejo de excepciones con try-catch-finally, y la sobreescritura de métodos con excepciones. También se exploran los flujos de entrada y salida, incluyendo la lectura y escritura de archivos de texto y binarios, así como la serialización y deserialización de objetos.

Tipo: Apuntes

2023/2024

Subido el 20/09/2024

bolivar-alvarado
bolivar-alvarado 🇪🇨

2 documentos

1 / 13

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
INTERFACES
Una interfaz es como definir un contrato de lo que una clase puede hacer sin decirle como
hacerlo.
Las interfaces se implementan.
Las interfaces pueden ser implementadas desde cualquier clase y desde cualquier árbol de
herencia.
Las interfaces establecen una relación “ACTIA COMO” en comparación con la herencia “ES
UN”.
Una interfaz se implementa por otra clase.
Las interfaces pueden declara únicamente CONSTANTES, NO HAY VARIAVLES DE
INSTANCIA.
Una interfaz no puede implementar otra interfaz
El acceso a una interfaz solo puede ser publico o por default
Los métodos de una interfaz no pueden ser final, y siempre son públicos
ASPECTOS FUNDAMENTALES
Todos los métodos de una interfaz son implícitamente públicos y abstractos. No necesito
declararlos como public ni abstract.
Las interfaces pueden declarar únicamente CONSTANTES. NO HAY VARIABLES DE
ISTANCIA.
Una interfaz no puede implementar otra interfaz, pero puede extender de ella.
PARA QUE SIRVEN LAS INTERFACES EN JAVA
No podemos decir que evite la duplicidad de código o que favorezca la reutilización de código
puesto que realmente no proveen código.
Reúne las otras dos ventajas de la herencia: favorecer el mantenimiento y la extensión de las
aplicaciones.
Se usa para lograr la abstracción.
Con su uso se puede simular la funcionalidad de herencia múltiple.
DIFERENCIAS ENTRE CLASES ABSTACTAS Y LAS INTERFACES
Las clases abstractas pueden tener métodos abstractos y no abstractos.
Las interfaces solo tienen métodos públicos y abstractos.
Las clases abstractas pueden tener implementación.
Las interfaces esperan ser implementadas, TODOS los métodos declarados en una interfaz
deben ser implementados.
Las interfaces pueden extender de 1 o mas interfaces.
USO DE LAS INTERFACES
Las interfaces son una forma de proveer un “checklist” de los métodos que una clase debería
implementar.
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Vista previa parcial del texto

¡Descarga Interfaces y Excepciones en Java: Conceptos Fundamentales y Ejemplos y más Apuntes en PDF de Programación Orientada a Objetos solo en Docsity!

INTERFACES

  • Una interfaz es como definir un contrato de lo que una clase puede hacer sin decirle como hacerlo.
  • Las interfaces se implementan.
  • Las interfaces pueden ser implementadas desde cualquier clase y desde cualquier árbol de herencia.
  • Las interfaces establecen una relación “ACTIA COMO” en comparación con la herencia “ES UN”.
  • Una interfaz se implementa por otra clase.
  • Las interfaces pueden declara únicamente CONSTANTES, NO HAY VARIAVLES DE INSTANCIA.
  • Una interfaz no puede implementar otra interfaz
  • El acceso a una interfaz solo puede ser publico o por default
  • Los métodos de una interfaz no pueden ser final, y siempre son públicos ASPECTOS FUNDAMENTALES
  • Todos los métodos de una interfaz son implícitamente públicos y abstractos. No necesito declararlos como public ni abstract.
  • Las interfaces pueden declarar únicamente CONSTANTES. NO HAY VARIABLES DE ISTANCIA.
  • Una interfaz no puede implementar otra interfaz, pero puede extender de ella. PARA QUE SIRVEN LAS INTERFACES EN JAVA
  • No podemos decir que evite la duplicidad de código o que favorezca la reutilización de código puesto que realmente no proveen código.
  • Reúne las otras dos ventajas de la herencia: favorecer el mantenimiento y la extensión de las aplicaciones.
  • Se usa para lograr la abstracción.
  • Con su uso se puede simular la funcionalidad de herencia múltiple. DIFERENCIAS ENTRE CLASES ABSTACTAS Y LAS INTERFACES
  • Las clases abstractas pueden tener métodos abstractos y no abstractos.
  • Las interfaces solo tienen métodos públicos y abstractos.
  • Las clases abstractas pueden tener implementación.
  • Las interfaces esperan ser implementadas, TODOS los métodos declarados en una interfaz deben ser implementados.
  • Las interfaces pueden extender de 1 o mas interfaces. USO DE LAS INTERFACES
  • Las interfaces son una forma de proveer un “checklist” de los métodos que una clase debería implementar.
  • Proveen polimorfismo
  • Las interfaces no proveen necesariamente reducción de código como la Herencia masa bien mantienen un buen diseño de nuestra aplicación. INTERFACES ANIDADAS
  • Una interfaz puede declararse miembro de una clase u otra interfaz.
  • Las interfaces anidadas(internas). SI pueden declararse como public, private or protected. Las externas solo public o default. METODO DEFAULT EN INTERFACES
  • En general las interfaces no están destinadas a contener código o implementación
  • Desde Java 8 las interfaces pueden contener métodos que lleven una implementación predeterminada,
  • Los métodos default permiten extender una interfaz sin generar problemas de compatibilidad.
  • Los métodos default pueden ser sobrescritos por las clases que implementan la interfaz. PROBLEMAS DE HERENCIA MULTIPLE Y METODOS DEFAULT
  • La implementación de una clase tiene prioridad sobre una implementación predeterminada de interfaz.
  • Una clase que implementa dos interfaces que tienen el mismo método default tiene la obligación de sobrescribir el método sino se producirá un error.
  • En los casos en que una interfaz hereda otra, y ambas tienen un método default en común, el método de la versión heredera de la interfaz tiene prioridad.
  • Es posible hacer referencia explicita a una implementación predeterminada en una interfaz heredada mediante el uso de una nueva forma de super. METODOS ESTATICOS
  • JDK 8 incluye también la capacidad de definir métodos estáticos.
  • De la misma manera como se hace con los métodos estáticos de las clases.
  • No necesita que la interface se implemente para acceder al método.
  • Los métodos de interfaz estáticos no son heredados por una clase o implementados por una subinterfaz. INTERFACE COMPARABLE
  • Comparable es una interfaz que solo contiene un método compareTo que nos sirve para ordenar los valores según un orden natural, bien sea numérico o alfabetico.
  • Comparable es una interfaz de java, que esta creada o desarrollada dentro del JRE de Java, por lo cual es necesario tan solo implementarla directamente en las clases con implementes Comparable y especificar el tipo de clase(objeto) COMO FUNCIONA compareTo
  • compareTo recibe un tipo del objeto correspondiente
  • Pueden existir mas de un bloque catch. Throw
  • Permite iniciar una excepción manualmente. Throws
  • Permite lanzar una excepción manualmente desde un método. Finally
  • Define el bloque de código que debe ejecutarse obligatoriamente después de completarse el proceso del bloque try/catch BLOQUE TRY – CATCH
  • Delimitar la porción de código dentro de un método en el que necesitamos desviar el control si una excepción ocurre allí (la parte try).
  • Definir el código que manejara el error o atrapara la excepción (la parte catch).
  • El código dentro del try puede generar mas de una excepción, y se puede capturar todas ellas.
  • Si un bloque de código lanza varias excepciones y se usan varios catch:
  • La excepción se captura en el primer catch que se ajusta a la excepción.
  • Los catch deben capturar las excepciones mas concretas en primer lugar, y las mas generales al final.
  • Si no lo hacemos así, hay bloques catch en los que no se entrara nunca BLOQUE FINALLY
  • Finally se utiliza cuando el programador solicita ciertos recursos al sistema que se deben liberar. Se coloca después del ultimo catch o luego del bloque try. TRY-WITH-RESOURCES
  • Try que declara uno o mas recursos (objetos que deben cerrarse luego que se termina de usarlos).
  • Asegura que cada recurso es cerrado al final del bloque.
  • Objetos que implementan java.lang.AutoCloseable pueden ser usados como recursos. ANUNCIAR QUE UNA EXCEPCION SE PRODUCE
  • Cuando un método desea disparar una excepción, se debe indicar como parte de la signatura del método usando la clausula throws. CONSTRUCCION DE UN OBJETO EXCEPTION Y LA INTRUCCION THROW
  • throw nos permite lanzar una excepción propia.
  • Esta instrucción recibe como parámetro un objeto de la clase Exception, el cual es lanzado o disparado al método que corresponda. CLASE EXCEPTION
  • getMessage(), que retorna el mensaje con el que fue creada la excepción.
  • printStackTrace(), que imprime en la consola de ejecución la traza incluida en el objeto (la secuencia anidada de invocaciones de métodos que dio lugar al error), tratando de informar al usuario respecto de la posición y la causa del error. REVISAR COMO CREAR EXCEPCIONES PERSONALIZADAS SOBREESCRITURA Y EXCEPCIONES
  • En sobreescritura la lista de ARGUMENTOS del método debe ser exactamente la MISMA.
  • En sobreescritura la visibilidad puede MANTENERSE o AMPLIARSE, nunca reducirse. REGLAS PARA SOBREESCRITURA CON EXCEPCIONES
  • Regla 1: Si el método en la superclase no declara ninguna excepción usando throws, entonces el método sobreescrito en la subclase NO puede declara ninguna checked exception aaunque puede declarar unchecked exception con la clausula throws.
  • Regla 2: Si el método en la superclase ha declarado una excepción usando throws entonces la sobre escritura del método en la subclase puede: o NO PONER o PONER LAS MISMAS EXCEPCIONES o PONER SUBCLASES DE LAS MISMAS
  • Regla 2.1: NO DECLARAR EXCEPCION Al sobrescribir el método se puede elegir no lanzar ninguna excepción aun cuando la superclase lo haga
  • Regla 2.2: USAR LA MISMA EXCEPCION Si el método en la superclase ha declarado una excepción entonces la subclase puede declarar la misma excepción como esta declarada en la superclase.
  • Regla 2.3: UTILIZAR SUBCLASES Subclase puede declarar un subtipo de la excepción declarada en el método de la superclase. Por lo tanto, la subclase no debe utilizar una clase de Excepcion en una jerarquía superior de la declarada en la superclase. CONCEPTOS DE FLUJO DE ENTRADA Y SALIDA Flujo o stream
  • La E/S en java se basa en el concepto de flujo(stream)
  • El flujo es una secuencia ordenada de datos que tiene una fuente(flujo de entrada) o un destino(flujo de salida)
  • Dos tipos de flujos:
  • InputStream: leer datos de una fuente
  • OutputStream: escribir datos a un archivo
  • El manejo de flujos se lo realiza a través de los paquetes java.io y java.nio

La clase Reader es la clase abstracta de la cual heredan todas las clases concretas que se utilizan para leer información en forma textual.

  • InputStreamReader: Clase que representa una conexión entre un stram de bytes y un stream de caracteres.
  • FileReader: clase para leer los archivos de texto usando charset por defecto del sistema operativo.
  • BufferedReader: lee el texto de un flujo de caracteres con eficacia (los caracteres se almacenan en bufer para evitar la lectura frecuente del flujo subyacente) y proporciona un método conveniente para leer una línea de texto: readLine().
  • METODOS DE LA CLASE READER
  • read(): lee un carácter.
  • read(char[]): lee un arreglo de caracteres.
  • skip(long): se salta algunos caracteres.
  • close(): cierra el flujo de datos. JAVA.IO= FileReader FileReader(String filePath) FileReader(File fileObj) Puede lanzar la excepción FileNotFoundException JAVA.IO- BufferedReader Permite leer texto de un InputStream de una forma sencilla BufferedReader(Reader in) BufferedReader(Reader in, int sz) PAQUETE IO – ESCRITUA DE ARCHIVOS DE TEXTO La clase Writer es la clase abstracta de la cual heredan todas las clases concretas que se utilizan para escribir información en forma textual
  • OutputStreamWriter: Clase que representa una conexión entre un flujo de bytes y un flujo de caracteres: caracteres escritos son en codificado en bytes usando un charset especifico.
  • FileWriter: clase para escribir archivos de texto usando charset por defecto del sistema operativo. JAVA.IO – FileWriter FileWriter(String filePath)

FileWriter(String filePath, boolean append) FileWriter(File fileObj) Puede lanzar la excepción IOException Si no existe el archivo lo crea JAVA.IO – BufferedWriter BufferedWriter(Writer out) BufferedWrtier(Writer out, int sz) FileInputSream

  • Usada para leer datos binarios como imágenes, audio, video, etc. FielOutputStream
  • Usada para escribir datos binarios. PAQUETE NIO
  • Similar a java.io
  • N es nono- blocking
  • Permite operaciones E/S rápidas y escalables tomando ventaja de los avances de E/S sin bloqueo en los sistemas operativos. PAQUETES NIO PARA MANEJO DE ARCHIVOS
  • Interface Path
  • Clase Paths
  • Clase Files

CLASE OBJECTOUTPUTSTREAM

  • Usada para escribir los datos primitivos y objetos a un OutputStream(Serializacion)
  • Solo objetos que implementan Serializable pueden ser escritos a streams.
  • Para escribir objetos en un fichero binario en Java se utiliza la clase ObjectOutputSteream derivada de OutputStream
  • Un objeto ObjectOuputStream se crea a partir de un objeto excepción FileOutputStream asociado al fichero.
  • Lanza ecepcion IOException
  • El constructor de la clase es: ObjectOutputStream(OutputStream nombre); METODOS IMPORTANTES
  • writeObject(Objecto obj) Escribe el objeto especificado en el flujo de salida
  • flush() descarga el flujo de salida actual
  • close() Cierra el flujo de salida CLASE OBJECTINPUTSTREAM
  • Para leer los objetos contenido en un fichero binario que han sido almacenados mediante ObjectOutputStram se utiliza la clase ObjectInputStream derivada de InputStream.
  • Un objeto ObjectInputStream se crea a partir de un objeto FileInputStream asociado al fichero.
  • Lanza una excepción IOException.
  • El constructor de la clase es: ObjectInputStram(InputStream nombre);
  • La clase proporciona el metodo readObject() que devuelve el objeto del fichero(tipo Object).
  • Es necesario hacer un casting para guardarlo en una variable del tipo adecuado
  • Es necesario cerrar el flujo de bytes de salida para esto se usa el metodo close()