buffer prácticas de edi juan ramón pérez pérez. buffer prácticas edi - © juan ramón pérez2 ...

13
Buffer Prácticas de EDI Juan Ramón Pérez Pérez

Upload: andres-piedrahita

Post on 28-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Buffer

Prácticas de EDIJuan Ramón Pérez Pérez

Page 2: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Buffer

Prácticas EDI - © Juan Ramón Pérez2

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.

Page 3: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Clase Buffer

Prácticas EDI - © Juan Ramón Pérez3

Buffer

vector: caracter []InputStreamReaderTAM_BUFFER= 100cursor: enterocargarBuffer()

create(URL)obtenerCaracter(): carácterretroceder()esFinal(): boolean

Constructor

Undo de obtenerCaracter()

Elegir el stream adecuado según

requisitos

Page 4: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

obtenerCaracter()

Prácticas EDI - © Juan Ramón Pérez4

< B a s e d a t o

obtenerCaracter()

cargarBuffer()

:Buffer :InputStream

read()Carácter: “<“

devuelve: <

Si no hay caracteres para devolver

Se llama al principio o cada vez que lleguemos al final del Buffer

Se carga por bloques de caracteres

Page 5: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

retroceder()

Prácticas EDI - © Juan Ramón Pérez5

< B a s e d a t o

:Buffer

retroceder()

Page 6: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

esFinal()

Prácticas EDI - © Juan Ramón Pérez6

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!

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.

a t o s > ? ? ? ?

Page 7: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Resolver situaciones conflictivas

Prácticas EDI - © Juan Ramón Pérez7

¿Qué pasa si estamos al final del vector del Buffer y llaman a obtenerCaracter()?

¿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 …

Page 8: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Tratamiento de errores mediante excepciones

Prácticas EDI - © Juan Ramón Pérez8

Excepciones: mecanismo eficiente y seguro de comunicación de situaciones de error entre clases.

Tipos de clases: 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.

Page 9: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Tratamiento de errores mediante excepciones

Prácticas EDI - © Juan Ramón Pérez9

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.

Page 10: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Esquema del tratamiento de errores

Prácticas EDI - © Juan Ramón Pérez10

InterfazClases internas

:Principal:UnBuffe

r

ExcepciónTratamiento

interno

ExcepciónNo tratada

Page 11: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Esquema del tratamiento de errores (con clases intermedias)

Prácticas EDI - © Juan Ramón Pérez11

InterfazClases internas

:Principal:UnBuffer

:UnaClaseIntermedia

Page 12: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Excepción ExcepcionAnalisis

Prácticas EDI - © Juan Ramón Pérez12

ExcepcionAnalisis

TipoError: (buffer, …)Codigo: entero

create(String mensaje, TipoError, codigo);

getTipoError(): TìpoError;getCodigo(): entero

java.lang.Exception

Page 13: Buffer Prácticas de EDI Juan Ramón Pérez Pérez. Buffer Prácticas EDI - © Juan Ramón Pérez2  Clase que hace de intermediaria entre el fichero y el resto

Tareas

Prácticas EDI - © Juan Ramón Pérez13

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:

PruebaBuffer.