Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes...

30
Informática II 1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros que no tienen declaración explícita de ámbito (public, private,etc.)

Transcript of Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes...

Page 1: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 1

PAQUETES

Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados.

El paquete define un ámbito de visibilidad: los miembros que no tienen declaración explícita de ámbito (public, private,etc.)

Page 2: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 2

PAQUETES

Para declarar un paquete:

package <nombre>;

Una declaración de package debe aparecer en primer lugar en el archivo fuente, antes de cualquier declaración de clase o interface y sólo puede haber una por archivo fuente.

Page 3: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 3

PAQUETES

El nombre de cada tipo dentro de un paquete tiene implícitamente prefijado el nombre del paquete.

El código definido fuera del paquete que necesita cosas definidas en el paquete, debe importar todo el paquete con una sentencia import, o cualificar el nombre de los tipos que necesita anteponiéndole el nombre del paquete. La sentencia import va detrás de cualquier linea de package pero delante de todo lo demás.

Page 4: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 4

PAQUETES

Todo lo que está definido dentro de un paquete está disponible para ese paquete.Las clases e interfaces de un paquete tienen dos accesos:public: una clase o interface public es accesible a código fuera de ese paquete.Las clases que no son public son accesibles para el código del paquete en que se están definiendo.Los miembros de una clase que no son declarados como private, protected ni public, están disponible sólo para código del paquete, es decir tienen ámbito de paquete.

Page 5: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 5

PAQUETES

Los paquetes deben diseñarse de forma que contengan clases relacionadas funcionalmente.

Los paquetes se pueden anidar.

java.lang

Los identificadores del paquete java no son accesibles para el código del paquete lang.

Page 6: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 6

EL PAQUETE DE E/S

•La E/S (entrada/salida) de Java se define en términos de flujos (streams).

•Los flujos son secuencias ordenadas de datos que tienen una fuente (flujos de entrada) o un destino (flujos de salida).

•El paquete java.io, es el que contiene todos las clases que representan estos flujos.

Page 7: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 7

EL PAQUETE DE E/S

•La clase de excepción IOException la utilizan la mayoría de los métodos de las clases de este paquete, sin perjuicio de que se utilicen excepciones más específicas.

•Cada vez que desea realizar alguna operación de E/S, debo importar el paquete con import java.io.

•Este paquete contiene algunas clases abstractas, interfaces y clases concretas.

Page 8: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 8

EL PAQUETE DE E/S

A partir de las clases abstractas y las interfaces, la mayor parte de los flujos soportan los métodos de esas clases básicas con pocas o nulas adiciones.

Los distintos tipos de flujos están generalmente apareados, donde existe un FileInputStream, suele haber un FileOutputStream.

Page 9: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 9

EL PAQUETE DE E/S

Input Output Objetos manip.

Abstractas Input Stream Output Stream bytes

Interfaces Data Input Data Output. tipos fundam

ObjectInput ObjectOutput objetos

Concretas Data Input Stream Data Output Stream tipos fundam

FileInputStream FileOutputStream bytes ObjectInputStream ObjectOutputStream objetos

Page 10: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 10

EL PAQUETE DE E/S Implementa Extiende Manipula

Data * Stream DataInput/output *Stream tipos fun.

File*Stream -------- *Stream bytes

Object*Stream ObjectInput --------- Objects

ObjectOutput

* significa input o output según corresponda

Page 11: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 11

InputStream

Es una clase abstracta que define el modelo de java para el flujo de entrada

Los métodos leen y escriben bytes desde un origen.

Constructor: InputStream( )

Page 12: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 12

InputStream

Algunos métodos:

•public void close ( ) throws IOException : Cierra el flujo de entrada. Este método debe invocarse para liberar recursos asociados con el flujo.

•public abstrac int read ( ) throws IOException : lee un solo byte de datos desde el origen y retorna la representación entera de ese byte.

Page 13: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 13

InputStream

•public int read (byte [ ] buf) throws IOException : lee hasta que hay entrada disponible o hasta buf.length y llena buf con los bytes leídos. Devuelve la cantidad de bytes leídos o -1 si se alcanzó el final del flujo.

•public int read (byte [ ] buf, int off, int len) throws IOException : lee hasta que hay entrada disponible y llena el array buf partiendo de un desplazamiento off (se desplaza off elementos del arreglo) y comienza a llenar buf con len bytes o hasta que se alcanza el final del array.

Page 14: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 14

OutputStream

Es similar a InputStream, pero proporciona una abstracción para hacer fluir bytes hacia un destino. Todos los métodos de esta clase devuelven un valor void y lanzan una IOException en caso de error.

Constructor:

public OutputStream( )

Page 15: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 15

OutputStream

Algunos métodos:

public void close ( ) throws IOException : cierra el flujo de salida. Los intentos posteriores de escritura lanzarán una IOException.

public void write (byte [ ] b) throws IOException : escribe b.length bytes desde el array b en su stream de salida .

Page 16: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 16

OutputStream

public void write (byte [ ] b, int off, int len) throws IOException: escribe len bytes desde el array b, comenzando con el deplazamiento de off , en su stream de salida.

public abstrac void write (int b) throws IOException : escribe b como byte

public void flush ( ) throws IOException: vacía el flujo, de forma que los bytes contenidos en un buffer sean expulsados del flujo.

Page 17: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 17

Tipos de flujos estándar

El paquete java.io define distintos tipos de flujos.

Los más usuales son:

FileInputStream

FileOutputStream

Obtienen o escriben bytes a un archivo

Page 18: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 18

Tipos de flujos estándar

DataInputStream

DataOutputStream

DataInput

DataOutput

Estas interfaces definen métodos para transmitir tipos primitivos Java dentro de un flujo.

Proporcionan una implementación por defecto de los métodos de las interfaces.

Page 19: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 19

Tipos de flujos estándar

ObjectInput

ObjectOutput

Extienden de DataInput y DataOutput para la lectura y escritura de objetos.

No lo soportan la versión de Java instalada en el laboratorio. Es soportado a partir de la versión 1.2.

Page 20: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 20

Flujos Data

Las interfaces DataInput y DataOutput definen métodos para transmitir tipos primitivos Java dentro de un flujo.

Las clases DataInputStream y DataOutputStream proporcionan una implementación por defecto para cada interfaz.

Page 21: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 21

Interface DataInput

Los métodos de lectura mas usuales son:

boolean readBoolean() : lee un byte de entrada y retorna true si el byte no es cero, en caso contrario retorna false.

byte readByte() : lee y retorna un byte de entrada.

char readChar() : lee y retorna el valor del char.

double readDouble() : lee 8 bytes y retorna el valor de un double.

float readFloat() : lee cuatro bytes y retorna el valor de un float.

Page 22: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 22

Interface DataInputvoid readFully(byte [ ] b) : lee algunos bytes desde un stream de entrada y los almacena en el array b.

void readFully(byte [ ] b, int off, int len) : lee len bytes desde un flujo de entrada.

int readInt() : lee cuatro bytes y retorna un valor int.

String readLine() : lee la próxima línea de texto desde la entrada.

long readLong() : lee ocho bytes y retorna un valor long.

short readShort() : lee dos bytes y retorna un short.

Page 23: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 23

Interface DataOutputLos métodos de escritura mas usuales son:

void write(byte [ ] b) : escribe en un flujo de salida todos los bytes del array b.

void write (byte [ ] b, int off, int len) : escribe len bytes desde el array b con un desplazamiento de off, en el flujo de salida.

void write (int b) : escribe en el flujo de salida los ocho bits de menor orden del argumento b.

void writeBoolean (boolean b) : escribe un valor booleano en el flujo de salida.

Page 24: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 24

Interface DataOutputvoid writeByte(int v) : escribe en el flujo de salida los ocho bits de orden más bajo del argumento v.

void writeBytes(String s): escribe un String en el flujo de salida.

void writeChar(): escribe un valor char, el cual está compuesto de dos bytes, en el flujo de salida.

void writeChars(String s) : escribe cada carácter del String, en el flujo de salida, en orden, dos bytes por carácter.

Page 25: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 25

Interface DataOutput

void writeDouble(double v) : escribe un valor double, el cual está compuesto de ocho bytes, en el flujo de salida.

void writeFloat(float v) : escribe un valor float, el cual está compuesto de cuatro bytes, en el flujo de salida.

void writeInt(int v) : escribe un valor int, el cual está compuesto de cuatro bytes, en el flujo de salida.

void writeLong(long v) : escribe un valor long, el cual está compuesto de cuatro bytes, en el flujo de salida.

void writeShort(int v) : escribe dos bytes en el flujo de salida para representar el valor del argumento.

Page 26: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 26

FileInputStream

FileInputStream utiliza archivos de datos reales como base del flujo de entrada.

FileInputStream(String name) : Este constructor inicializa un FileInputStream recientemente creado, abriendo una conección a un archivo cuyo nombre es name.

Si el archivo no puede ser abierto una excepción FileNotFoundException es lanzada.

Page 27: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 27

FileOutputStream

FileOutputStream comparte el mismo estilo de constructores que FileInputStream. FileOutputStream crea el archivo antes de antes de abrirlo, si no existe.

FileOutputStream(string name) : Este constructor inicializa un FileOutputStream recientemente creado, abriendo una conección a un archivo cuyo nombre es name. Si se produce un error estos métodos lanzarán una IOException.

Page 28: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 28

La interface ObjectInput

La interface ObjectInput extiende de DataInput, para incluir la lectura de objetos.

Object readObject() : lee y retorna el objeto leído

Page 29: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 29

La interface ObjectOutput

La interface ObjectOutput extiende de DataOutput, para incluir la escritura de objetos.

void writeObject( Object obj) : escribe el objeto obj en el flujo de salida.

Page 30: Informática II1 PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros.

Informática II 30

Excepciones de entrada/salida mas usuales

FileNotFoundException: indica que la apertura de un archivo ha fracasado

InterruptedIOExecption: indica que una operación de E/S se interrumpió.

IOException: indica que un error de E/S de alguna clase ocurrió.