public class errdisco extends Exception
{
public errdisco(String m)
{ super(m); }
};
Vamos a simular el funcionamiento de la asignación de bloques de disco a ficheros mediante dos mapas hash. El programa constará de dos partes:
Clase prudisco: con el interfaz gráfico que permita:
Añadir un bloque de disco a un fichero
Borrar un bloque de disco de un fichero
Visualizar el contenido del disco; es decir, qué bloques contiene cada fichero
Este interfaz se proporciona en el fichero prudisco.java y se limita a hacer llamadas a la clase disco.
Clase disco: guarda el estado del disco en dos estructuras:
Un HashMap (ej: nom2blo) cuyas claves son los nombres de fichero, a los que asocia uno de los bloques que contiene
Otro HashMap (ej: blo2nom) cuyas claves son el número de bloque, a los que asocia el nombre del fichero apropiado
Esta es la clase que debéis implementar y entregar mediante el interfaz web.
La clase disco debe contener necesariamente los siguientes métodos:
public void inserta_bloque(Integer nbloque, String nomfich) throws …: añade el bloque nbloque al fichero nomfich, para lo cual debe comprobar que el bloque no está en uso. Si el bloque ya está en uso, lanzará una excepción y no realizará la operación. En caso contrario, deberá asociar el número de bloque con el nombre del fichero en los mapas. IMPORTANTE: El mapa que tiene como clave el nombre de fichero sólo puede contener una entrada para dicho nombre.
public void borra_bloque(Integer nbloque, String nomfich) throws …: elimina el bloque nbloque del fichero nomfich. Si dicho bloque no pertenece a ese fichero deberá lanzar un excepción. En caso contrario, deberá eliminar la asociación entre nombre de fichero y número de bloque en uno de los mapas. Si después de eliminar esa entrada del mapa, no le queda ningún bloque a dicho fichero, deberá eliminarse la entrada adecuada del otro mapa.
public String get_fichero(int nbloque): devuelve el nombre del fichero que contiene el bloque nbloque o la cadena vacía si el bloque no pertenece a ningún fichero.
Las excepciones lanzadas por la clase disco deben ser de la clase errdisco, cuyo código se da a continuación:
public class errdisco extends Exception
{
public errdisco(String m)
{ super(m); }
};
Si se desea probar el interfaz gráfico de la clase prudisco, no hay mas que crear una clase disco con los métodos antes mencionados devolviendo valores fijos.
La clase HashMap está documentada aquí.
|
Nota
|
Esta práctica consta de una sesión y debe entregarse antes de la realización de la siguiente práctica |