Buffer Prcticas de EDI Juan Ramn Prez Buffer
Buffer Prácticas de EDI Juan Ramón Pérez
Buffer Clase que hace de intermediaria entre el fichero y el resto de las clases de nuestra aplicación. Lectura de bloques de caracteres Almacenar bloques en un array (buffer) de tamaño fijo Permite el procesamiento carácter a carácter Permitir tratamiento correcto de caracteres acentuados y eñes. Debe permitir al resto de las clases, leer (obtener) carácter a carácter todo el fichero. Debe permitir deshacer la operación obtener. 2 Prácticas EDI - © Juan Ramón Pérez
Clase Buffer vector: caracter [] Input. Stream. Reader TAM_BUFFER= 100 cursor: entero cargar. Buffer() create(URL) obtener. Caracter(): carácter retroceder() es. Final(): boolean 3 Prácticas EDI - © Juan Ramón Pérez Elegir el stream adecuado según requisitos Constructor Undo de obtener. Caracter()
obtener. Caracter() < B a s e d a devuelve: t o < Se carga por bloques de caracteres : Buffer obtener. Caracter() : Input. Stream Si no hay caracteres para devolver cargar. Buffer() read() Carácter: “<“ 4 Prácticas EDI - © Juan Ramón Pérez Se llama al principio o cada vez que lleguemos al final del Buffer
retroceder() < B a s e d a : Buffer retroceder() 5 Prácticas EDI - © Juan Ramón Pérez t o
es. Final() a t s > ? ? Devuelve true cuando el buffer ya no pueda devolver más caracteres. Es decir, hemos llegado al último carácter leído del Buffer y ya hemos leído todo el fichero. Devuelve false en cualquier otro caso. ¡Ojo! 6 o La clase que utiliza el buffer no se tiene que enterar de que el buffer se tiene que recargar porque llegue al final, esto es un proceso interno al buffer. Prácticas EDI - © Juan Ramón Pérez
Resolver situaciones conflictivas ¿Qué pasa si estamos al final del vector del Buffer y llaman a obtener. Caracter()? ¿Qué pasa si estamos al principio del vector y llaman a retroceder()? Si acabamos de hacer la carga del primer bloque del fichero. Si acabamos de cargar un bloque intermedio del fichero. Algunas de estas situaciones provocarán un error que no se puede resolver en la propia clase … 7 Prácticas EDI - © Juan Ramón Pérez
Tratamiento de errores mediante excepciones Excepciones: mecanismo eficiente y seguro de comunicación de situaciones de error entre clases. Tipos de clases: 8 Sólo determinadas clases se encargarán de la interacción con el usuario. La mayoría de las clases resolverán las tareas encomendadas. Prácticas EDI - © Juan Ramón Pérez
Tratamiento de errores mediante excepciones Si surge algún error en las clases internas, que no se pueda tratar en la propia clase, se pasará a la clase llamadora mediante excepciones. Si ninguna clase intermedia pudo tratar el error, la clase de interfaz notificará el error al usuario de la manera más adecuada. 9 Prácticas EDI - © Juan Ramón Pérez
Esquema del tratamiento de errores Excepción No tratada Interfaz Clases internas : Principal : Un. Buffer Excepción Tratamiento interno 10 Prácticas EDI - © Juan Ramón Pérez
Esquema del tratamiento de errores (con clases intermedias) Interfaz Clases internas : Principal : Un. Buffer : Una. Clas e. Interme dia 11 Prácticas EDI - © Juan Ramón Pérez
Excepción Excepcion. Analisis java. lang. Exception Excepcion. Analisis Tipo. Error: (buffer, …) Codigo: entero create(String mensaje, Tipo. Error, codigo); get. Tipo. Error(): Tìpo. Error; get. Codigo(): entero 12 Prácticas EDI - © Juan Ramón Pérez
Tareas Finalizar el diseño de la clase Buffer para que cumpla los requisitos pedidos. Implementar métodos públicos y privados de la clase Buffer. Implementar clase Excepción Utilizar clase Excepción en el buffer. Crear una clase de prueba para buffer: Prueba. Buffer. 13 Prácticas EDI - © Juan Ramón Pérez
- Slides: 13