PAQUETES Un paquete es un conjunto de clases

  • Slides: 36
Download presentation
PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete

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. ) Informática II 1

PAQUETES Para declarar un paquete: package <nombre>; Una declaración de package debe aparecer en

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. Informática II 2

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

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. Informática II 3

PAQUETES Todo lo que está definido dentro de un paquete está disponible para ese

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. Informática II 4

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

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. Informática II 5

EL PAQUETE DE E/S • La E/S (entrada/salida) de Java se define en términos

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. Informática II 6

EL PAQUETE DE E/S • La clase de excepción IOException la utilizan la mayoría

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. Informática II 7

EL PAQUETE DE E/S A partir de las clases abstractas y las interfaces, la

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 File. Input. Stream, suele haber un File. Output. Stream. Informática II 8

EL PAQUETE DE E/S Input Output Objetos manip. Abstractas Input Stream Output Stream bytes

EL PAQUETE DE E/S Input Output Objetos manip. Abstractas Input Stream Output Stream bytes Interfaces Data Input Data Output. tipos fundam Object. Input Object. Output Concretas Data Input Stream Data Output Stream File. Input. Stream File. Output. Stream Object. Input. Stream Object. Output. Stream Informática II objetos tipos fundam bytes objetos 9

EL PAQUETE DE E/S Data * Stream File*Stream Object*Stream Implementa Extiende Data. Input/output *Stream

EL PAQUETE DE E/S Data * Stream File*Stream Object*Stream Implementa Extiende Data. Input/output *Stream tipos fun. ---- *Stream bytes Object. Input ----- Manipula Objects Object. Output * significa input o output según corresponda Informática II 10

Input. Stream Es una clase abstracta que define el modelo de java para el

Input. Stream 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: Input. Stream( ) Informática II 11

Input. Stream Algunos métodos: • public void close ( ) throws IOException : Cierra

Input. Stream 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. Informática II 12

Input. Stream • public int read (byte [ ] buf) throws IOException : lee

Input. Stream • 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. Informática II 13

Output. Stream Es similar a Input. Stream, pero proporciona una abstracción para hacer fluir

Output. Stream Es similar a Input. Stream, 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 Output. Stream( ) Informática II 14

Output. Stream Algunos métodos: public void close ( ) throws IOException : cierra el

Output. Stream 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. Informática II 15

Output. Stream public void write (byte [ ] b, int off, int len) throws

Output. Stream 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. Informática II 16

Tipos de flujos estándar El paquete java. io define distintos tipos de flujos. Los

Tipos de flujos estándar El paquete java. io define distintos tipos de flujos. Los más usuales son: File. Input. Stream File. Output. Stream Obtienen o escriben bytes a un archivo Informática II 17

Tipos de flujos estándar Data. Input Data. Output Estas interfaces definen métodos para transmitir

Tipos de flujos estándar Data. Input Data. Output 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 Data. Output. Stream interfaces. Data. Input. Stream Informática II 18

Tipos de flujos estándar Object. Input Extienden de Data. Input y Data. Output para

Tipos de flujos estándar Object. Input Extienden de Data. Input y Data. Output para la lectura y escritura de objetos. Object. Output No lo soportan la versión de Java instalada en el laboratorio. Es soportado a partir de la versión 1. 2. Informática II 19

Flujos Data Las interfaces Data. Input y Data. Output definen métodos para transmitir tipos

Flujos Data Las interfaces Data. Input y Data. Output definen métodos para transmitir tipos primitivos Java dentro de un flujo. Las clases Data. Input. Stream y Data. Output. Stream proporcionan una implementación por defecto para cada interfaz. Informática II 20

Interface Data. Input Los métodos de lectura mas usuales son: boolean read. Boolean() :

Interface Data. Input Los métodos de lectura mas usuales son: boolean read. Boolean() : lee un byte de entrada y retorna true si el byte no es cero, en caso contrario retorna false. byte read. Byte() : lee y retorna un byte de entrada. char read. Char() : lee y retorna el valor del char. double read. Double() : lee 8 bytes y retorna el valor de un double. float read. Float() : lee cuatro bytes y retorna el valor de un float. Informática II 21

Interface Data. Input void read. Fully(byte [ ] b) : lee algunos bytes desde

Interface Data. Input void read. Fully(byte [ ] b) : lee algunos bytes desde un stream de entrada y los almacena en el array b. void read. Fully(byte [ ] b, int off, int len) : lee len bytes desde un flujo de entrada. int read. Int() : lee cuatro bytes y retorna un valor int. String read. Line() : lee la próxima línea de texto desde la entrada. long read. Long() : lee ocho bytes y retorna un valor long. short read. Short() : lee dos bytes y retorna un short. Informática II 22

Interface Data. Output Los métodos de escritura mas usuales son: void write(byte [ ]

Interface Data. Output Los 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 write. Boolean (boolean b) : escribe un valor booleano en el flujo de salida. Informática II 23

Interface Data. Output void write. Byte(int v) : escribe en el flujo de salida

Interface Data. Output void write. Byte(int v) : escribe en el flujo de salida los ocho bits de orden más bajo del argumento v. void write. Bytes(String s): escribe un String en el flujo de salida. void write. Char(): escribe un valor char, el cual está compuesto de dos bytes, en el flujo de salida. void write. Chars(String s) : escribe cada carácter del String, en el flujo de salida, en orden, dos bytes por carácter. Informática II 24

Interface Data. Output void write. Double(double v) : escribe un valor double, el cual

Interface Data. Output void write. Double(double v) : escribe un valor double, el cual está compuesto de ocho bytes, en el flujo de salida. void write. Float(float v) : escribe un valor float, el cual está compuesto de cuatro bytes, en el flujo de salida. void write. Int(int v) : escribe un valor int, el cual está compuesto de cuatro bytes, en el flujo de salida. void write. Long(long v) : escribe un valor long, el cual está compuesto de cuatro bytes, en el flujo de salida. void write. Short(int v) : escribe dos bytes en el flujo de salida para representar el valor del argumento. Informática II 25

File. Input. Stream utiliza archivos de datos reales como base del flujo de entrada.

File. Input. Stream utiliza archivos de datos reales como base del flujo de entrada. File. Input. Stream(String name) : Este constructor inicializa un File. Input. Stream recientemente creado, abriendo una conección a un archivo cuyo nombre es name. Si el archivo no puede ser abierto una excepción File. Not. Found. Exception es lanzada. Informática II 26

File. Output. Stream comparte el mismo estilo de constructores que File. Input. Stream. File.

File. Output. Stream comparte el mismo estilo de constructores que File. Input. Stream. File. Output. Stream crea el archivo antes de abrirlo, si no existe. File. Output. Stream(string name) : Este constructor inicializa un File. Output. Stream 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. Informática II 27

La interface Object. Input extiende de Data. Input, para incluir la lectura de objetos.

La interface Object. Input extiende de Data. Input, para incluir la lectura de objetos. Object read. Object() : lee y retorna el objeto leído Informática II 28

La interface Object. Output extiende de Data. Output, para incluir la escritura de objetos.

La interface Object. Output extiende de Data. Output, para incluir la escritura de objetos. void write. Object( Object obj) : escribe el objeto obj en el flujo de salida. Informática II 29

Excepciones de entrada/salida mas usuales File. Not. Found. Exception: indica que la apertura de

Excepciones de entrada/salida mas usuales File. Not. Found. Exception: indica que la apertura de un archivo ha fracasado Interrupted. IOExecption: indica que una operación de E/S se interrumpió. IOException: indica que un error de E/S de alguna clase ocurrió. Informática II 30

Serialización de objetos ü Serializar es almacenar objetos de forma permanente (p. e. en

Serialización de objetos ü Serializar es almacenar objetos de forma permanente (p. e. en un archivo o en un flujo de comunicación) üNo es necesario realizar conversiones üÚtil para portabilidad y para compartir objetos entre aplicaciones Informática II 31

Interfaz de serialización ü Cualquier clase que desee poder serializar sus objetos debe implementar

Interfaz de serialización ü Cualquier clase que desee poder serializar sus objetos debe implementar el interfaz Serializable ü En esta implementación el objeto define como debe almacenarse o recuperarse de un archivo ü Si se trata de serializar un objeto que no lo implementa se obtiene la excepción Not. Serializable. Exception ü No se serializan los miembros static Informática II 32

Interfaz de serialización ü • Las clases que necesiten algún tratamiento especial en la

Interfaz de serialización ü • Las clases que necesiten algún tratamiento especial en la serialización deben implementar estos dos métodos private void write. Object (java. io. Object. Output. Stream salida) throws IOException private void read. Object (java. io. Object. Input. Stream entrada) throws IOException, Class. Not. Found. Exception; Informática II 33

Serialización: ejemplo import java. io. *; public class Punto implements Serializable { int x;

Serialización: ejemplo import java. io. *; public class Punto implements Serializable { int x; int y; public Punto( int x, int y) { this. x = x; this. y = y; } public String to. String() { return “Punto[“ + x + ”, ” + y + ”]”; } Informática II 34

Serialización: ejemplo public class Aplicacion. Serializacion { public static void main( String args[]) throws

Serialización: ejemplo public class Aplicacion. Serializacion { public static void main( String args[]) throws IOException, Class. Not. Found. Exception { Punto punto = new Punto( 1, 5); Object. Output. Stream archivo. Objetos. Sal = new Object. Output. Stream( new File. Output. Stream(" temp")); archivo. Objetos. Sal. write. Object( punto); archivo. Objetos. Sal. close(); Informática II 35

Serialización: ejemplo Object. Input. Stream archivo. Objetos. Ent = new Object. Input. Stream( new

Serialización: ejemplo Object. Input. Stream archivo. Objetos. Ent = new Object. Input. Stream( new File. Input. Stream(" temp")); Punto punt = (Punto) archivo. Objetos. Ent. read. Object(); archivo. Objetos. Ent. close(); System. out. println( punt ); }} Informática II 36