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


Hoja de Problemas Interfaces TP, Ejercicios de Programación Orientada a Objetos

Hoja de problemas interfaces java

Tipo: Ejercicios

2018/2019

Subido el 14/02/2019

darldil
darldil 🇪🇸

1 documento

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Hoja 4 de Problemas
Tecnolog´ıa de la Programaci´on
Curso 2014-2015
Interfaces
1. Operaciones aritm´eticas
Implementa un programa que permita realizar operaciones aritm´eticas utili-
zando un int´erprete de comandos. Concretamente los comandos que podremos
utilizar son:
Ayuda: Que muestra por pantalla informaci´on sobre los distintos comandos
disponibles en el int´erprete.
Salir: Termina la ejecuci´on de la aplicaci´on.
Operacion Tipo Argumentos: Que permite la realizaci´on de operaciones
aritm´eticas como la suma, multiplicaci´on, divisi´on, ra´ız cuadrada, etc. Ti-
po representa el tipo de operaci´on a realizar, y Argumentos son los argu-
mentos necesarios para realizar la operaci´on. Por ejemplo, Operacion Suma
2 3 devolver´ıa como resultado 5, o Operacion Raiz 81 devolver´ıa 9 como
resultado.
Para implementar el programa utiliza dos interfaces OperacionAritmetica y
Comando, para representar las operaciones asociadas a una operaci´on aritm´etica
y a un comando respectivamente. La primera interfaz tiene los m´etodos Op e-
racionAritmetica parsea(String s) ydouble ejecuta(), mientras que la segunda
contiene Comando parsea(String cmd),void ejecuta() yboolean stop().
La OperacionAritmetica tiene que ser implementada por las clases Suma,Raiz,
etc., mientras que las comandos Ayuda,Salir yOperacion implementar´an la in-
terfaz Comando. Adem´as implementa dos clases ParserComando yParserOpe-
racionAritmetica, encargadas de parsear un String y devolver, si es posible, el
correspondiente comando u operaci´on aritm´etica. Por ejemplo, en la clase Par-
serComando tendremos el etodo public static Comando parsea(String s) que
dependiendo de sdevuelve el comando correspondiente o null si el String de
entrada no representa comando alguno. La clase ParserOperacionAritmetica se
define de forma similar, pero genera operaciones aritm´eticas.
Finalmente implementa una clase Main, con su correspondiente etodo main
para probar la aplicaci´on, de manera que de la aplicaci´on olo se puede salir
cuando se ejecute el comando Salir.
1
pf3
pf4

Vista previa parcial del texto

¡Descarga Hoja de Problemas Interfaces TP y más Ejercicios en PDF de Programación Orientada a Objetos solo en Docsity!

Hoja 4 de Problemas

Tecnolog´ıa de la Programaci´on

Curso 2014-

Interfaces

1. Operaciones aritm´eticas

Implementa un programa que permita realizar operaciones aritm´eticas utili- zando un int´erprete de comandos. Concretamente los comandos que podremos utilizar son:

Ayuda: Que muestra por pantalla informaci´on sobre los distintos comandos disponibles en el int´erprete.

Salir: Termina la ejecuci´on de la aplicaci´on.

Operacion Tipo Argumentos: Que permite la realizaci´on de operaciones aritm´eticas como la suma, multiplicaci´on, divisi´on, ra´ız cuadrada, etc. Ti- po representa el tipo de operaci´on a realizar, y Argumentos son los argu- mentos necesarios para realizar la operaci´on. Por ejemplo, Operacion Suma 2 3 devolver´ıa como resultado 5, o Operacion Raiz 81 devolver´ıa 9 como resultado.

Para implementar el programa utiliza dos interfaces OperacionAritmetica y Comando, para representar las operaciones asociadas a una operaci´on aritm´etica y a un comando respectivamente. La primera interfaz tiene los m´etodos Ope- racionAritmetica parsea(String s) y double ejecuta(), mientras que la segunda contiene Comando parsea(String cmd), void ejecuta() y boolean stop(). La OperacionAritmetica tiene que ser implementada por las clases Suma, Raiz, etc., mientras que las comandos Ayuda, Salir y Operacion implementar´an la in- terfaz Comando. Adem´as implementa dos clases ParserComando y ParserOpe- racionAritmetica, encargadas de parsear un String y devolver, si es posible, el correspondiente comando u operaci´on aritm´etica. Por ejemplo, en la clase Par- serComando tendremos el m´etodo public static Comando parsea(String s) que dependiendo de s devuelve el comando correspondiente o null si el String de entrada no representa comando alguno. La clase ParserOperacionAritmetica se define de forma similar, pero genera operaciones aritm´eticas. Finalmente implementa una clase Main, con su correspondiente m´etodo main para probar la aplicaci´on, de manera que de la aplicaci´on s´olo se puede salir cuando se ejecute el comando Salir.

2. Algoritmos de Ordenaci´on

Vamos a desarrollar una aplicaci´on que nos va a permitir medir el tiempo medio que requiere un determinado algoritmo de ordenaci´on en ordenar arrays de distinto tama˜no y de distintas caracter´ısticas. Para ello crea una interfaz Generador con un ´unico m´etodo generadorArray(int tam), que devolver´a un array que es el que utilizaremos en los algoritmos de ordenaci´on. Crea las clases Gene- radorAleatorio, GeneradorAscendente y GeneradorDescendente, que implementan la interfaz Generador, implementando el m´etodo generadorArray(int tam) como sigue:

GeneradorAleatorio. Crea un array con los elementos 0 ,... , tam introduci- dos aleatoriamente;

GeneradorAscendente. Genera un array con los elementos 0 ,... , tam orde- nados crecientemente;

GeneradorDescendente. Genera un array con los elementos 0 ,... , tam or- denados decrecientemente.

Despu´es crea una interfaz AlgoritmosOrdenacion con un ´unico m´etodo or- denar(int[] array), que servir´a para ordenar el array pasado como par´ametro. Crea las clases AlgoritmoSeleccion y AlgoritmoQuickSort e implementa el m´etodo anterior convenientemente. Crea la clase Benchmark para que nos permita probar los distintos algoritmos de ordenaci´on. Esta clase tendr´a un atributo de tipo Generador gen y otro de tipo AlgoritmosOrdenacion alg, que se inicializan en el constructor de la clase. Adem´as dicha clase contendr´a un m´etodo void ejecuta(), que ser´a el encargado de medir el tiempo que tarda en ordenarse un array generado por gen utilizando el algoritmo de ordenaci´on alg. Para medir el tiempo de ejecuci´on puedes utilizar el siguiente c´odigo dentro del m´etodo ejecuta:

// Generamos el array int[] prototipo = gen.generadorArray(); long totalTime = 0; // Repetimos la ordenacion nRep veces for (long i = 0; i < nRep; i++) { int [] array = Arrays.copyOf(prototipo, tam); long startTime = System.currentTimeMillis(); alg.ordenar(array); long endTime = System.currentTimeMillis(); totalTime += endTime - startTime; } System.out.println(”Avg time: ”+ totalTime/nRep ); Implementa una clase Main, con su correspondiente m´etodo main para probar los distintos algoritmos de ordenaci´on, creando distintos objetos de la clase Benchmark e invocando a su m´etodo ejecuta.

public class A implements A1, A2{ } public class B extends A { } public class C extends A { }

Explica razonadamente si las instrucciones siguientes son ciertas o falsas:

(a) A1 a = new A1(); (b) A1 a = new B(); (c) C c = new A(); (d) B b = new C();

(d) Dado el siguiente c´odigo:

interface I1 {} interface I2 {} class A {} class B {} class C implements I1 {} class D implements I2 {}

Indica cuales de las siguientes declaraciones de clase son correctas:

(a) class W extends A, B {} (b) class X extends C implements I1 {} (c) class Y extends D implements I1, I2 {} (d) class Z implements I1, I2 {}