Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión 1.0.1 Diseño de tipos Igualdad, representación, código,

Slides:



Advertisements
Presentaciones similares
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Advertisements

Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Manejo de Excepciones
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Uso de variables de tipo referencia
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Programación en Java Instructor:.
MANEJO DE EXCEPCIONES EN C++
Curso de Java Estructura del Lenguaje
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
UNIVERSIDAD LATINA (UNILA)
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Manejo de excepciones en Java
Lic. Rosemary Torrico Bascopé
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación EXCEPCIONES EN JAVA Diciembre de 2008.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Clase Teórica No. 4 Programación IV
El lenguaje de programación Java
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Tema 11: Excepciones Antonio J. Sierra.
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Programación Orientada a Objetos Temario Excepciones – Definición. – Funcionalidad – Tipos de Excepciones – API de las Excepciones – Captura de Excepciones.
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
USO DE EXCEPCIONES EN JAVA LSC. Natalia Rodríguez Castellón.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
Unidad III Manejo de Excepciones en Java y C++
Excepciones Unidad 5.
Sintaxis Completa los siguientes esquemas: Esquema de excepción Excepción Definición Tipos Implementación En el lenguaje Java, excepción es un tipo de.
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Herencia clase Object polimorfismo y ligadura dinámica super
Java.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Detalles Generales sobre Java
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Tratamiento de excepciones
¿Qué son? – tipos – manejo - ejemplos
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Clases “ Es una Abstracción de un elemento del mundo real ”
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Entorno de Trabajo e Introducción a Java Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 1.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Patricia López & Julio Medina Computadores y Tiempo Real Santander, 2013 G80 - Advanced Computation 1 Generación de Código con BOUML.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Excepciones Diseño y manejo de excepciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 5 Versión
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Tema 1: Concurrencia con Java
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código, copia y relación de orden

PR4: Diseño de tipos Índice  Gestión de excepciones  Igualdad, representación y código hash  Clonación  Orden natural

PR4: Diseño de tipos Gestión de excepciones  Una excepción es un evento que ocurre durante la ejecución de un programa y que indica una situación anormal que hay que gestionar.  Cuando se produce un evento de este tipo se dice que se ha elevado una excepción.  Cuando tomamos decisiones después de haberse producido un evento decimos que gestionamos o tratamos la excepción.  Un método puede generar excepciones que habrá que gestionar si alguna de ellas se eleva durante su llamada.  Hay excepciones que estamos obligados a declarar en la signatura del mismo y hay otras que no.  Existen objetos que representan las excepciones. Los podemos tomar de las librerías o crear nosotros las clases.  En cada programa necesitamos excepciones (objetos) de tipos específicos.

PR4: Diseño de tipos Gestión de excepciones  Elevación de una excepción de forma manual: if ( condicion_de_elevación ) { throw new NombreDeLaClase(“TextoExplicativo”); }  Las excepciones pueden ser elevadas automáticamente. Ejemplo: al ejecutar la expresión 1/0.  Una excepción lanzada será capturada o abortará la ejecución del programa.

PR4: Diseño de tipos Gestión de excepciones  Ejemplo de elevación de excepción por el sistema: public class TestExcepcion1 extends Test { public static void main(String[] args) { Integer n = 1/0; mostrar(n); } public class TestExcepcion1 extends Test { public static void main(String[] args) { Integer n = 1/0; mostrar(n); } Exception in thread "main" java.lang.ArithmeticException: / by zero at TestExcepcion1.main(TestExcepcion1.java:8) Exception in thread "main" java.lang.ArithmeticException: / by zero at TestExcepcion1.main(TestExcepcion1.java:8)

PR4: Diseño de tipos La excepción puede ser capturada y el programa continuaría siempre que esté dentro de un bloque try, pero las sentencias posteriores a la elevación de la excepción y hasta el final del bloque try no se ejecutan, y sí se ejecutarán las del bloque catch y siguientes. public class TestExcepcion2 extends Test { public static void main(String[] args) { Integer n = null; try { n = 1/0; } catch (ArithmeticException e) { mostrar (n); mostrar ("El valor es infinito "); } mostrar ("Final del programa"); } public class TestExcepcion2 extends Test { public static void main(String[] args) { Integer n = null; try { n = 1/0; } catch (ArithmeticException e) { mostrar (n); mostrar ("El valor es infinito "); } mostrar ("Final del programa"); } El objeto es: null El valor es infinito Final del programa El objeto es: null El valor es infinito Final del programa Gestión de excepciones

PR4: Diseño de tipos La excepción puede ser elevada por nuestro propio código. Supongamos que consideramos inapropiado construir un Punto con alguna coordenada null. El siguiente constructor elevaría la excepción java.lang.IllegalArgumentException: public PuntoImpl (Double x1, Double y1) { if (x1==null || y1 == null){ throw new IllegalArgumentException ("Algún parámetro es null"); } x=x1; y=y1; } public PuntoImpl (Double x1, Double y1) { if (x1==null || y1 == null){ throw new IllegalArgumentException ("Algún parámetro es null"); } x=x1; y=y1; } Gestión de excepciones

PR4: Diseño de tipos El intento de crear un objeto punto con alguna coordenada null terminará en una excepción y, si no establecemos una captura, con la finalización anormal del programa. public class testExcepcionPunto extends Test { public static void main(String[] args) { Punto p1 = new PuntoImpl(null,4.0); mostrar (p1); } public class testExcepcionPunto extends Test { public static void main(String[] args) { Punto p1 = new PuntoImpl(null,4.0); mostrar (p1); } Gestión de excepciones Exception in thread "main" java.lang.IllegalArgumentException: Algún parámetro es null at punto.PuntoImpl. (PuntoImpl.java:7) at test.testPunto.main(testPunto.java:4) Exception in thread "main" java.lang.IllegalArgumentException: Algún parámetro es null at punto.PuntoImpl. (PuntoImpl.java:7) at test.testPunto.main(testPunto.java:4)

PR4: Diseño de tipos Índice  Gestión de excepciones  Igualdad, representación y código hash  Clonación  Orden natural

PR4: Diseño de tipos Igualdad, representación y código hash... boolean equals(Object o); int hashCode(); String toString();...  equals: se utiliza para comparar si dos objetos son iguales.  hashCode: devuelve el código hash del objeto. Dos objetos iguales tendrán el mismo código hash.  toString: devuelve una cadena de texto que representa al objeto.  Estas propiedades se establecen redefiniendo los métodos correspondientes de la clase Object, que es la raíz de la jerarquía de clases en Java y obligatoria de ser extendida por cualquier nueva clase.

PR4: Diseño de tipos Igualdad, representación y código hash Puede generar el código utilizando los esquemas explicados en teoría o utilizar el sistema de generación automática de código de Eclipse. Sitúese en el fichero PuntoImpl y active la pestaña Source -> Generate hashCode () and equals() Aparecerá una ventana para elegir los atributos que participan en la igualdad y el código hash. Puede generar los otros métodos de igual forma.

PR4: Diseño de tipos Índice  Gestión de excepciones  Igualdad, representación y código hash  Clonación  Orden natural

PR4: Diseño de tipos Clonación  La realizaremos implementando la interfaz Copiable. Para ello usaremos la plantilla de teoría o crearemos una plantilla en Eclipse que nos sirva en otras ocasiones. public interface Copiable extends Cloneable{ T clone(); } public class PuntoImpl implements Punto, Copiable {... public Punto clone(){ Punto copia=null; try{ copia=(Punto)super.clone(); }catch(CloneNotSupportedException e){e.printStackTrace();} return copia; }

PR4: Diseño de tipos  Una plantilla en Eclipse se crea desde la ventana Templates. A la derecha aparecen los botones insertar en el editor, crear, editar, eliminar y en la parte de abajo el código de la plantilla clone. Botones Clonación

PR4: Diseño de tipos Índice  Gestión de excepciones  Igualdad, representación y código hash  Clonación  Orden natural

PR4: Diseño de tipos Orden natural  La ordenación de un tipo la realizaremos implementando la interfaz Comparable. Para ello usaremos la plantilla de teoría o crearemos una plantilla en Eclipse que nos sirva en otras ocasiones. package java.lang; public interface Comparable { int compareTo(T o); } public class PuntoImpl implements Punto, Comparable {... public int compareTo(Punto p){ int cmp = getX().compareTo(p.getX()); if(cmp == 0){ cmp = getY().compareTo(p.getY()); } return cmp; }

PR4: Diseño de tipos

Pasos a la hora de realizar la práctica  Crear un directorio como espacio de trabajo llamado WS_Practica04_  Arrancar Eclipse escogiendo el directorio anterior como espacio de trabajo (Workspace)  Crear un proyecto.  Añadirle al proyecto los paquetes necesarios.  Añadir las clases e interfaces a los paquetes correspondientes. Puede copiar los ficheros de las prácticas anteriores y completarlos.  Comprobar que el código Java escrito no tiene errores de compilación.  Ejecutar el proyecto y comprobar que tampoco hay errores en tiempo de ejecución y que el programa funciona como se espera.