Вы находитесь на странице: 1из 6

Mdulo

Java: Desarrollo de aplicaciones para Internet


(cdigo 330)

Desarrollo y programacin de aplicaciones para Internet en Java


(cdigo 352)

La fecha de entrega de este conjunto de ejercicios es el da 1 de marzo. Como resultado de su resolucin hay que depositar un nico archivo en formato ZIP en el servidor del curso (ftp://java:estudiante@cursos.dia.uned.es/modulo2/). Este archivo contendr un fichero (texto plano o Word) con todas las respuestas a las preguntas tericas y un fichero .java por cada programa Java que se haya desarrollado. En cada programa Java se debe indicar mediante un comentario inicial a qu nmero de ejercicio se corresponde. Las normas de entrega de los trabajos se encuentran detalladas en la carta que se envo al comienzo del curso. Se puede localizar en formato PDF en el servidor WWW http://cursos.dia.uned.es/java/. Lecturas recomendadas para la realizacin de los ejercicios: Modificadores, herencia, polimorfismo, paquetes: Temas 6 y 7 (Deitel y Deitel) Temas 6, 7 y 8 (Eckel) Excepciones: Tema 12 (Deitel y Deitel) Tema 10 (Eckel) Arrays: Tema 5 (Deitel y Deitel) Tema 9 (Eckel) Tema 4 (PDF Java 1.2 - localizado en el CD-ROM) Listas y colas: Temas 17 (Deitel y Deitel) Temas 9 (Eckel) Tema 4 (PDF Java 1.2 - localizado en el CD-ROM) Documentacin del JDK (localizado en el CD-ROM) Resto de estructuras de datos: Tema 18 (Deitel y Deitel) Temas 9 (Eckel) Tema 4 (PDF Java 1.2.2 - localizado en el CD-ROM)
1

Dpto. Informtica y Automtica. UNED

Documentacin del JDK (localizado en el CD-ROM) Con el objeto de proporcionarle ms informacin sobre estructuras de datos y algoritmos, le recomendamos la lectura del documento Algoritmos.pdf almacenado en el servidorWWW del curso. 1) Suponga que se ha definido la siguiente jerarqua de clases.
class Forma { void dibujar() {} void borrar() {} } class Circulo extends Forma { void dibujar() { System.out.println("Dibujo un crculo"); } void borrar() { System.out.println("Borro el crculo"); } } class Cuadrado extends Forma { void dibujar() { System.out.println("Dibujo un cuadrado"); } void borrar() { System.out.println("Borro el cuadrado"); } } class Triangulo extends Forma { void dibujar() { System.out.println("Dibujo un tringulo"); } void borrar() { System.out.println("Borro el tringulo"); } }

y que creamos una clase para demostrar el funcionamiento del polimorfismo con el siguiente cdigo:
public class ListaFormas { public static Forma generaForma() { switch((int)(Math.random() * 3)) { default: case 0: return new Circulo(); case 1: return new Cuadrado(); case 2: return new Triangulo(); } } public static void main(String[] args) { Forma[] f = new Forma[12]; // Generamos las formas geometricas for(int i = 0; i < f.length; i++) f[i] = generaForma();

2 grupo de ejercicios

Dpto. Informtica y Automtica.UNED // Llamamos a la funcion dibujar para cada forma generada for(int i = 0; i < f.length; i++) f[i].dibujar(); } }

Aada un mtodo nuevo llamado getNombre() en la clase Forma que imprima un mensaje indicando el nombre de la clase. Utilice este mtodo en el mtodo main para cada objeto que se cree y ejecute la clase ListaFormas. Explique qu ocurre y porqu. 2) Con el cdigo generado del ejercicio anterior sobrescriba el mtodo getNombre() en una de las clases hijas (por ejemplo, la clase Triangulo). Ejecute la clase ListaFormas y explique qu ocurre y porqu. Escriba un applet para demostrar la diferencia entre sobrescribir (override) y sobrecargar (overload) mtodos de una clase padre con tres mtodos: primero(int i), segundo(double d) y tercero(String s). Para ello defina una clase padre con dos clases hijas, la primera de las cuales debe sobrescribir los tres mtodos y la segunda debe sobrecargar los tres mtodos. Escriba un applet que: - Convierta un nmero entero a nmero en coma flotante - Redondee un nmero en coma flotante a su correspondiente nmero entero. - Imprima ambos resultados en la ventana del applet. 5) 6) Escriba una interface que contenga tres mtodos, dentro del paquete Implemente la interface en el paquete es.cursojava.impl
es.cursojava.

3)

4)

Escriba una clase con un mtodo main() que genere una excepcin (use un objeto de tipo Exception) dentro de un bloque try...catch para capturar dicha excepcin e imprimir el argumento por pantalla (cuando cree el objeto Exception debe usar como argumento su nombre de alumno, de tipo String, para el constructor) dentro de la clusula catch. Finalmente agregue una clusula finally que imprima un mensaje para demostrar que siempre se ejecuta este bloque. Escriba su propia clase excepcin usando herencia sobre la clase Exception. Escriba un constructor para esta clase que tome un argumento de tipo String que debe almacenarse como un objeto dentro de la nueva clase excepcin. Escriba un mtodo de su clase excepcin que imprima el objeto String almacenado. En el mtodo main() escriba una clusula try.. catch para probar el funcionamiento de su clase. Escriba un programa que defina una referencia nula a un objeto de tipo String. Intente llamar al mtodo toString() a travs de esta referencia y compruebe qu tipo de excepcin se lanza. Finalmente escriba un bloque try...catch para capturar ESE TIPO de excepcin imprimiendo el mensaje de la misma. Suponga que tenemos el cdigo mostrado abajo. El objetivo de los bloques de captura de excepciones es que el conmutador siempre quede apagado. Demuestre que puede haber situaciones en las cuales el conmutador puede NO acabar apagado (puede lanzar excepciones de tipo RunTimeException dentro de la implementacin de la funcion f).
3

7)

8)

9)

2 grupo de ejercicios

Dpto. Informtica y Automtica. UNED

Modifique el cdigo para que SIEMPRE el conmutador quede apagado, independientemente de las excepciones que puedan ocurrir.
class Conmutador { boolean estado = false; boolean leer() { return estado; } void on() { estado = true; } void off() { estado = false; } } class OnOffException1 extends Exception {} class OnOffException2 extends Exception {} public class ConmutadorOnOff { static Conmutador sw = new Conmutador(); static void f() throws OnOffException1, OnOffException2 {} public static void main(String[] args) { try { sw.on(); // La llamada a esta funcion puede lanzar excepciones f(); sw.off(); } catch(OnOffException1 e) { System.err.println("OnOffException1"); sw.off(); } catch(OnOffException2 e) { System.err.println("OnOffException2"); sw.off(); } } }

10) Escriba las sentencias Java necesarias para: a) Visualizar el valor del sptimo elemento de un array de carcteres denominado f. b) Inicializar con el valor 8 los 5 elementos de un array de enteros llamado g. c) Sumar todos los elementos de un array c de 100 elementos. d) Copiar los 11 elementos de un array a de int en un array b que consta de 34 elementos de tipo float. 11) Escriba las sentencias necesarias para: e) Declarar un array b de 2 x 3 de tipo int. f) Inicializar el array
b

en la declaracin con el valor 0.

f) Escribir el contenido de todos los elementos en la segunda fila de b. g) Escribir el contenido de todos los elementos en la tercera columna de b. h) Imprimir el valor ms pequeo que se encuentre almacenado en el array b. i) Imprimir por pantalla el contenido del array en formato de tabla. La fila superior debe contener el nmero de columna, y cada fila debe comenzar con el nmero de columna.

2 grupo de ejercicios

Dpto. Informtica y Automtica.UNED

12) Escriba un applet en el que dado un dgito entre 1 y 7 para determinar el da de la semana, escriba el anterior y el posterior. Utilice el tipo de datos String para crear el array que contenga los das de la semana. 13) Escriba una clase que genere una excepcin de tipo ArrayIndexOutOfBoundsException y que en su mtodo main() capture dicha excepcin e imprima el ndice que ha provocado dicha excepcin. 14) Un palndromo es una frase o incluso una palabra, que se lee igual en sus dos direcciones (de izquierda a derecha, o de derecha a izquierda) (por ejemplo, dbale arroz a la zorra el abad). Escriba un applet que compruebe si una cadena de caracteres es un palndromo. Para ello programe un mtodo recursivo que devuelva 1 si la cadena de caracteres es un palndromo y 0 en caso contrario. El mtodo debe ignorar espacios en blano y signos de puntuacin. Recurra al mtodo
public char[] toCharArray();

para convertir a un array de caracteres el String a comprobar que ha introducido en un TextField. Ejemplo de utilizacin del mtodo toCharArray():
String fraseAComprobar = Hola; char arrayCaracteres[] = fraseAComprobar.toCharArray(); int longitud = arrayCaracteres.length();

15) En el siguiente ejercicio se pretende trabajar con la clase Vector. Escriba un pequeo programa en el que se cree un objeto Vector y se utilicen los siguientes mtodos sobre l:
addElement insertElementAt setElementAt removeElement removeAllElements removeElementAt firstElement lastElement isEmpty contains indexOf trimToSize size capacity

Para ello cree un men que le permita seleccionar al usuario la operacin a realizar sobre el objeto Vector. Los elementos con los que se opera deben ser de tipo String. 16) Escriba un mtodo en el que se recorra e imprima el contenido de un objeto Vector mediante los mtodos de la interfaz Enumeration. Suponga que los objetos que almacena el objeto Vector son de tipo String. Incorpore el mtodo como opcin al programa anterior.

2 grupo de ejercicios

Dpto. Informtica y Automtica. UNED

2 grupo de ejercicios

Вам также может понравиться