PROGRAMACION ORIENTADA A OBJETOS Departamento de Ciencias de la Computación Universidad Nacional del Sur PROGRAMACIÓN ORIENTADA A OBJETOS Practico N° 6 10,11,12 GENERICIDAD - ASERCIONES - EXCEPCIONES Ejercicio 1 : Implemente en lenguaje de diseño la clase Contador20, que permita contar del 1 al 20 únicamente, con operaciones para incrementar, y decrementar el contador, ver el valor del contador e inicializarlo. Incluya para cada uno de los servicios las precondiciones (requiere) y postcondiciones (asegura) necesarias. Ejercicio 2 : Implemente en lenguaje de diseño la clase genérica Pila, con todas las operaciones necesarias, e incluya para cada uno de los servicios las precondiciones y postcondiciones necesarias. Ejercicio 3 : Implemente en lenguaje de diseño la clase genérica Cola, con todas las operaciones necesarias, e incluya para cada uno de los servicios las precondiciones y postcondiciones necesarias. Ejercicio 4: Enuncie un ejemplo en el cual debe escribirse una clase genérica, pero con ciertas condiciones sobre los posibles parámetros genéricos actuales. ¿Cómo se denomina este tipo de genericidad?. Ejercicio 5: Indique cuál es el error en la siguiente clase, donde la primer operación es pública y la segunda privada: Elecciones Padron: Lista[Personas] ... <<comandos>> requiere {EstaEnPadron (G) = Verdadero} Indicar_que_votó (G: Persona) ... <<consultas>> {} EstaEnPadron(G:Persona):boolean Ejercicio 6: Indique si las siguientes afirmaciones son verdaderas o falsas, justificando su respuesta: a) Es correcto utilizar aserciones para chequear condiciones sobre los argumentos de una operación pública. b) Si todas las operaciones poseen una precondición C, entonces C debe formar parte del invariante de clase c) Si el invariante de una clase es C, entonces ninguna operación puede poseer la precondición (not C) d) Una operación con precondiciones y postcondiciones no puede violar el invariante de clase en ningún momento de su ejecución Para los siguientes ejercicios de excepciones utilice las cláusulas rescue y retry. Ejercicio 7: Suponga que cuenta con la operacion “leer_un_entero(n)”, que permite leer un número entero ingresado por teclado. Cuando se ingresa algo que no sea un entero, la función dispara una excepción. Escriba un servicio que utilizando esta operación, solicite el ingreso de un entero tantas veces como sea necesario. Ejercicio 8: Modifique el ejercicio anterior para que solicite la lectura de un número entero no más de 5 veces. Ejercicio 9: Escriba una servicio que permita ingresar dos numeros enteros, y mostrar el resultado de la división entre ellos. El servicio debe mostrar un mensaje cuando no se ingresa un entero, y mostrar un mensaje cuando se intenta dividir por cero. PROGRAMACION ORIENTADA A OBJETOS Departamento de Ciencias de la Computación Universidad Nacional del Sur Ejercicio 10: Suponga que debe realizarse una operación determinada, de dos formas diferentes, utilizando los procedimientos Accion1 y Accion2. La primera vez, debe intentarse la Accion1. Si esta falla, debe realizarse la Accion2. Escriba un servicio que permita realizar esta tarea utilizando excepciones. Si fallan las dos operaciones debe fallar entonces este sevicio. Excepciones en Java Ejercicio 11: ¿Puede haber en Java una sentencia try sin su correspondiente catch? Ejercicio 12: ¿Debe una excepción en Java ser capturada en el mismo bloque try-catch que la generó?. Si responde que no, busque un ejemplo que justifique su respuesta. Ejercicio 13: ¿Hay algo incorrecto en esta declaración de manejo de excepciones? ... } catch (Exception e) { ... } catch (ArithmeticException a) { ... }