Práctica 3. Gestión de un grupo de figuras en Java

Anuncio
ESTRUCTURAS DE DATOS Y ALGORITMOS
Escuela Técnica Superior de Informática Aplicada
Curso 2004-2005
Práctica 3. Gestión de un grupo de figuras en Java
Duración: 2 sesiones
1.
Objetivo de la práctica
El objetivo de esta práctica es que el alumno se familiarice tanto con la Gestión de Excepciones
(Estándar y de Usuario) como con la Representación Enlazada en Java, que resulta de la aplicación
del Principio de Polimorfismo. En particular, se extenderá la funcionalidad del proyecto misFiguras
para manipular un grupo de figuras
representado como una Lista Directa Enlazada de figuras;
que gestiona las Excepciones que se pueden producir durante su ejecución.
Esta práctica se realizará durante las semanas del 8 al 12 de Noviembre, primera sesión, y del
22 al 26 de Noviembre, segunda sesión, para los grupos de semana A y las semanas del 16 al 19 de
Noviembre, primera sesión, y del 30 de Noviembre al 3 de Diciembre, segunda sesión, para los grupos
de semana B excepto el grupo PL-14.
Los alumnos del PL-14 realizarán la primera sesión de esta tercera práctica el dı́a 29 de Noviembre
y la segunda el 9 de Diciembre, jueves, que a efectos lectivos es lunes.
2.
Descripción del problema a resolver
Se desea manipular un grupo de figuras con la siguiente funcionalidad:
1.
construir un grupo de figuras vacı́o, sin elementos;
2.
consultar el número de figuras del grupo;
3.
dado un grupo, insertar una nueva figura en él;
4.
crear un grupo de figuras con la información que se proporciona desde el teclado;
5.
visualizar un grupo dado de figuras;
6.
buscar una figura dada en un grupo;
7.
borrar una figura dada en un grupo;
8.
dado un grupo, calcular el área total de las figuras que lo componen;
9.
dado un grupo, mostrar por pantalla el número de Figuras que hay de cada tipo.
Las Excepciones que se pudieran provocar durante la manipulación del grupo deberán ser convenientemente gestionadas.
1
3.
3.1.
Actividades en el laboratorio
Gestión de Excepciones
Durante la manipulación de un grupo de figuras se pueden preveer las siguientes Excepciones,
realizándose entonces su gestión como se indica a continuación:
Si se produce algún fallo al inicializar un grupo de figuras desde teclado, como por ejemplo:
• para seleccionar el tipo de figura a leer, introducir un valor no numérico o fuera del intervalo [1,3] (recuérdese que sólo se pueden leer figuras de tres tipos: cı́rculo, rectángulo o
cuadrado);
• introducir por teclado un carácter en lugar de un valor numérico (int o double);
• introducir un valor inadecuado para alguna de las componentes de una figura -por ejemplo,
un valor negativo como radio de un cı́rculo o un color de figura que no sea ni rojo, ni verde,
ni azul, ni amarillo.
En cualquiera de estos casos, la gestión consiste en, primero detectar el tipo de la Excepción que
se ha producido y segundo, dar la oportunidad de volver a introducirlo hasta que sea correcto.
Si se intenta borrar una figura dada de un grupo donde no está, la gestión más sencilla consiste
en avisar de que no se ha podido borrar la figura pues no es del grupo.
3.2.
Representación Enlazada de un grupo de figuras
Para poder realizar una Represenntación Enlazada de un grupo de figuras se realizarán las siguientes modificaciones al proyecto BlueJ misFiguras desarrollado en la práctica anterior:
añadir el enlace a la siguiente figura como atributo de la clase Figura;
modificar convenientemente los métodos constructores de la Jerarquı́a Figura;
diseñar la Clase GrupoDeFigurasEnlazadas que TIENE UN enlace a la primera figura del grupo,
de nombre primera, y, para permitir la funcionalidad antes descrita, los métodos que se especifican a continuación:
1.
el constructor public GrupoDeFigurasEnlazadas();
2.
el consultor del número de figuras del grupo public int tallaGrupo();
3.
el método que inserta una figura en el grupo public void insertarEnGrupo(Figura f);
4.
el método que inicializa un grupo de figuras con la información que se proporciona desde
el teclado public static GrupoDeFiguras inicializarGrupo(input teclado);
5.
el método que permite visualizar un grupo dado de figuras public String toString();
6.
el método que busca una figura en un grupo public int buscarEnGrupo(Figura aBuscar);
7.
el método que borra una figura de un grupo
public Figura borrarDelGrupo (Figura aBorrar) throws ElementoNoEncontrado;
8.
el método que calcula el área total de las figuras de un grupo public double areaDelGrupo();
9.
el método que permite visualizar el número de Figuras de cada tipo que hay en un grupo
public String cuentaTiposEnGrupo().
2
Descargar