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.