Download formato *
Document related concepts
no text concepts found
Transcript
3UiFWLFD San Sebastián, abril 1999 3URJUDPDFLyQ-DYD -DYLHU*DUFtDGH-DOyQÂ -RVp,JQDFLR5RGUtJXH] $OIRQVR%UD]iOH]Â $OEHUWR/DU]DEDOÂ -HV~V&DOOHMDÂ -RQ*DUFtD Informática 2: Práctica nº 8 página 1 INDICE Ejercicio 1: Ordenar una lista de nombres mediante el método Quicksort ......................................................1 Ejercicio 2: Programar la clase Colores...........................................................................................................2 Antes de comenzar la práctica abre el Windows Explorer y comprueba que se ha creado de modo automático en tu disco G:\ un directorio llamado Inf2prac08. No deberás moverlo a otro subdirectorio ni cambiarle de nombre. Por motivos de orden es importante que todos los ejercicios de esta práctica se creen dentro de este directorio, porque esta semana se recogerá la práctica. Como recomendación general, mantén abierto el Windows Explorer y comprueba de vez en cuando que los proyectos de los distintos ejercicios se están guardando correctamente. Hay que evitar copiar los ejercicios de otra persona, principalmente porque así no se aprende a programar: a programar sólo se aprende programando. Ejercicio 1: Ordenar una lista de nombres mediante el método Quicksort En este ejercicio se trata de ordenar una lista de nombres contenidos en un fichero llamado listaAlumnos.txt. Se trata de la lista mezclada de nombres y apellidos de los alumnos de la asignatura en un orden aleatorio. Este ejercicio se realizará en un directorio llamado Ejer1. Esto se puede hacer por medio de Visual J++ 6.0 creando un nuevo proyecto que se llame Ejer1. Visual J++ crea un directorio con el nombre del proyecto en el cual crea los ficheros del proyecto. No hay ficheros de partida para este ejercicio: los alumnos deben crear la clase OrdenarNombres que contendrá el método main(). Se deberá crear la clase QuicksortString en un fichero QuicksortString.java. Este fichero será análogo al fichero Quicksort.java visto en la clase nº 7 (ordenación de números enteros) con las modificaciones necesarias para poder ordenar cadenas de caracteres por medio del método compareTo() de la clase String (consultar el Help para más información sobre este método). El fichero Quicksort.java se puede obtener en la página web de la asignatura. El método main() deberá leer los nombres (nombre y dos apellidos) del fichero listaAlumnos.txt nombre a nombre (línea a línea) y guardarlos en un array de Strings. Una vez que estén todos los nombres en memoria se imprimirán por pantalla. Después se ordenarán mediante el método Quicksort. Finalmente se volverán a imprimir por pantalla para comprobar que la ordenación es correcta. Para realizar este ejercicio se necesita ser capaz de leer líneas de un fichero. El siguiente código puede ayudar a realizar esta tarea. import java.io.*; ... String [] nombres = new String[315]; // se reserva igual o mayor espacio // que el número de líneas a leer String s; int i=0; try { BufferedReader br = new BufferedReader( new FileReader("listaAlumnos.txt") ); while ({s = br.readLine()) != null) { nombres[i++] = s; } br.close(); } catch(java.io.FileNotFoundException fnfex) { System.out.println("Fichero no encontrado: " + fnfex); } catch(java.io.IOException ioex) { } ... Informática 2: Práctica nº 8 página 2 Este código deberá integrarse con el resto de las tareas que tendrá que realizar el método main() de la clase OrdenarNombres. Ejercicio 2: Programar la clase Colores Crea un proyecto llamado Ejer2 con Visual J++ en el directorio de la práctica Inf2prac08. En este ejercicio vas a tener que utilizar por primera vez clases de AWT, pues se trata de una aplicación con interface gráfica de usuario. Como modelo de lo que se debe programar puedes utilizar los ficheros Colores2.class y VentanaCerrable.class, que están en el directorio q:\Infor2\Prac08\Ejer2. La Figura 1 muestra el aspecto del ejecutable de esta aplicación. La Figura 2 muestra los componentes de esta aplicación. Figura 1. Ventana principal de la clase Colores. Figura 2. Componentes que constituyen la interface gráfica de la clase Colores. En esta aplicación se puede utilizar la clase VentanaCerrable definida en el Capítulo 1 de los apuntes “Aprenda Java como si estuviera en Primero”. Esta clase extiende la clase Frame incorporando la respuesta al evento WindowClosing. Para desarrollar esta aplicación se pueden tener en cuenta los siguientes factores: 1. La clase Colores debe extender la clase VentanaCerrable. Además puede implementar la interface AdjustmentEvent, de forma que la propia clase Colores defina el método Informática 2: Práctica nº 8 página 3 adjustmentValueChanged() que se llama automáticamente cada vez que el usuario cambia el valor de una de las barras de desplazamiento o scrollbars. 2. El esquema general de la clase Colores puede ser el siguiente: public class Colores extends VentanaCerrable implements AdjustmentListener { // variables miembro ... // constructor public Colores(String titulo) { super(titulo); Panel pan = new Panel(); canv = new Canvas(); ... // se añade el panel y el canvas a la ventana this.add(canv, "Center"); this.add(pan, "South"); } // programa principal public static void main(String [] arg) { Colores col = new Colores("Selección de colores"); col.show(); } // método para gestionar el cambio en las scrollbar public void adjustmentValueChanged(AdjustmentEvent e) { ... canv.repaint(); } } // fin de la clase Colores 3. La ventana Colores tiene BorderLayout, que es el defecto para los componentes que descienden de la clase Window. En la zona “South” se añade un panel al que se aplica un GridLayout con tres filas y dos columnas; en la columna de la izquierda se introducen tres labels con los colores y las componentes según cada uno de los colores fundamentales; en la columna de la derecha se introducen las tres scrollbars que controlan los tres colores fundamentales. En la zona “Center” se introduce un objeto de la clase Canvas cuyo color de fondo cambia según los valores de las barras de desplazamiento. 4. El constructor de la clase Colores debe crear todos los objetos necesarios inicializando las variables miembro de la clase, creando las distintas componentes y añadiéndolas en la zona que les corresponde. En el constructor se debe registrar la propia clase como listener de los AdjustmentEvents que se producen en cada una de las scrollbars. 5. El método adjustmentValueChanged() se llama cada vez que se cambia el valor de una de las scrollbars. Desde este método se deben cambiar las labels de modo que indiquen la componente en cada color y se debe actualizar el color de fondo del canvas.