Professional Documents
Culture Documents
Objeto
El termino objeto tiene el mismo significado que un nombre o una frase nominal. Es una persona,
un lugar o una cosa. Ejemplos de objetos en el mundo real son: persona, tabla, computadora,
avin, vuelo de avin, diccionario, ciudad o la capa de ozono. La mayora de los objetos del mundo
real tienen atributos (caractersticas que los describen). Por ejemplo, los atributos de una persona
incluyen el nombre, la edad, el sexo, la fecha de nacimiento, la direccin, etc. Los objetos tienen
atributos, y ellos a su vez, comportamiento. El comportamiento (Behavior) es el conjunto de cosas
que puede hacer un objeto, por ejemplo, una persona puede estudiar, caminar, trabajar, etc. En
sntesis, se puede decir que los objetos conocen cosas y hacen cosas. Las cosas que un objeto
conoce son sus atributos; las cosas que puede hacer un objeto son su comportamiento.
JOS RIGOBERTO HERNNDEZ ALBURQUERQUE
Clase
Una clase es una caracterizacin abstracta de un conjunto de objetos; todos los objetos similares
pertenecen a una clase determinada. Por ejemplo, un conjunto de objetos tales como cuadrados,
tringulos, crculos, lneas, etc. Pertenecen a una clase figura. De modo ms formal, una clase
define variables (datos) y mtodos (operaciones) comunes a un conjunto de objetos. En realidad,
una clase es un prototipo o generador de un conjunto de objetos.
Por ejemplo, si diseamos una clase crculo que convierte a un crculo en un tipo abstracto de dato,
la clase no proporciona mtodos (funciones) tales como dibujar, mover, ampliar, contraer, borrar,
etc. Se pueden utilizar estos mtodos para manipular objetos crculo de todas las formas
esperadas. Los mtodos son todo lo que se necesita conocer sobre la clase crculo.
La clase es el bloque de construccin fundamental de un lenguaje de programacin orientada a
objetos. Una clase es un tipo abstracto de datos junto con un conjunto de transformaciones
permitidas de dicho tipo abstracto de datos. (Un tipo de dato es abstracto si las operaciones de alto
nivel adecuadas a los tipos de datos estn aisladas de los detalles de la implementacin asociados
con el tipo de datos)
Abstraccin
Modularidad
El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto es, las
variables y mtodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto
era imposible. Es evidente que el encapsulamiento se logra gracias a la abstraccin.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos
a las Clases como cajas negras donde slo se conoce el comportamiento pero no los detalles
internos, y esto es conveniente porque nos interesar conocer qu hace la Clase pero no ser
necesario saber cmo lo hace.
Herencia
La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente consiste
en que una clase puede heredar sus variables y mtodos a varias subclases (la clase que hereda
es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y
mtodos propios, tiene incorporados los atributos y mtodos heredados de la superclase. De esta
manera se crea una jerarqua de herencia.
Por ejemplo, imaginemos que estamos haciendo el anlisis de un Sistema para una tienda que
vende y repara equipos celulares.
En el grfico vemos 2 Clases ms que posiblemente necesitemos para crear nuestro Sistema.
Esas 2 Clases nuevas se construirn a partir de la Clase Celular existente. De esa forma utilizamos
el comportamiento de la SuperClase.
En general, podemos tener una gran jerarqua de Clases tal y como vemos en el siguiente grfico:
JOS RIGOBERTO HERNNDEZ ALBURQUERQUE
Polimorfismo
El polimorfismo se presenta cuando se ha creado objetos que pertenecen a clases que han sido
derivadas de otras clases. En otras palabras, el polimorfismo aparece en las clases derivadas.
Tambin se dice que el polimorfismo es la propiedad que indica literalmente, la posibilidad de que
una entidad tome muchas formas, en trminos prcticos el polimorfismo permite referirse a objetos
de clases distintas mediante el mismo elemento del programa y realizar la misma operacin de
diferentes formas, segn sea el objeto que se referencia en ese momento. Por ejemplo cuando se
describe la clase mamferos se puede observar que la operacin comer es una operacin
fundamental en la vida de los mamferos, de modo que cada tipo de mamferos debe poder realizar
la operacin o funcin de comer. Por otra parte, una vaca o una cabra que pasta en el campo, un
nio que se come un bombn o caramelo y un len que devora a otro animal, son diferentes
formas que utilizan los distintos mamferos para realizar la misma accin.
1.2 Lenguaje de modelado unificado: diagrama de clases.
Un lenguaje de modelado es una notacin grfica para describir el diseo de software. As mismo,
el lenguaje incluye reglas para diferenciar entre dibujos correctos e incorrectos. Estas reglas son
las que hacen a UML un lenguaje de modelado en vez de solo un montn de smbolos para dibujar.
Cuando una persona construye una casa no levanta muros conforme se le ocurre. Ms bien, lo
hace con la ayuda de planos bien detallados.
El propsito de UML es proveer los planos para el mundo del software.
Los creadores de UML, conjuntaron tres lenguajes de modelado que competan entre s, de ah la
U(nificado) de UML
Un modelo es una abstraccin de algo, con la finalidad de comprenderlo, antes de construirlo, ya
que un modelo omite los detalles no esenciales, es ms sencillo manejarlos, que manejar la
entidad original.
Esta tcnica es trilateral, ya que toma en cuenta tres puntos de vista: modelo de objetos, modelo
dinmico y modelo funcional.
a) El modelo de objetos. El modelo de objetos es el modelo ms importante, ya que en l se
identifican las clases dentro del sistema junto con sus relaciones, as como sus atributos y
operaciones, lo que representa la estructura esttica del sistema. El modelo de objetos se
representa mediante un diagrama de clases.
b) El modelo dinmico. Representa los aspectos temporales de comportamiento "de control" del
sistema, mediante la secuencia de operaciones en el tiempo.
c) El modelo funcional. Representa los aspectos transformacionales "de funcin" del sistema,
mediante la transformacin de valores de los datos. Se representa mediante un diagrama de flujo.
Cada modelo describe un aspecto del sistema pero contiene referencias a los dems modelos. Lo
cual indica que los tres no son totalmente independientes.
Los pasos para construir el modelo de objetos son los siguientes:
1. Identificacin de objetos y/o clases.
2. Crear un diccionario de datos.
3. Identificacin de las asociaciones y agregaciones entre los objetos.
4. Identificacin de atributos y enlaces.
5. Organizacin y simplificacin de las clases empleando herencia.
6. Verificacin de las vas de acceso necesarias para llevar a cabo las probables consultas.
7. Realizar las iteraciones necesarias para el refinamiento del modelo.
8. Agrupar las clases en mdulos.
Modelo de objetos = Diagrama de modelo de objetos + diccionario de datos.
4.3. Representacin grfica del diseo
El diagrama de clase describe los tipos de objetos que hay en el sistema y las diversas clases de
relaciones estticas que existen entre ellos.
Hay dos tipos de relaciones estticas principales:
Los diagramas de clase tambin muestran los atributos y operaciones de una clase y las
restricciones a que se ven sujetos, segn la forma en que se conectan los objetos.
Los diversos mtodos OO utilizan terminologas diferentes (y con frecuencia antagnicas) para
estos conceptos.
Cliente: es el objeto que solicita el servicio Servidor: es el objeto que provee el servicio
solicitado
Grficamente, la dependencia se muestra con una lnea discontinua con una punta de flecha que
apunta del cliente al proveedor.
Ejemplo: resolucin de una ecuacin de segundo grado.
Para resolver una ecuacin de segundo grado hemos de recurrir a la funcin sqrt de la clase
Match para calcular una raz cuadrada.
Nota: La clase Match es una clase degenerada que no tiene estado. Es, simplemente una
coleccin de funciones de clculo matemtico
Para resolver una ecuacin de segundo grado hemos de recurrir a la funcin sqrt de la clase
Match para calcular una raz cuadrada.
Nota: La clase Match es una clase degenerada que no tiene estado. Es, simplemente una
coleccin de funciones de clculo matemtico
Asociacin
Es una relacin estructural que describe una conexin entre objetos
Graficamente, se muestra como una lnea contnua que une las clases relacionadas entre s.
Aunque las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos sentidos), en
ocasiones es deseable hacerlas unidireccionales (restringir su navegacin en un solo sentido).
Grficamente, cuando la navegacin es unidireccional, la lnea termina en una punta de flecha que
indica el sentido de la asociacin.
Declaracin
Instanciacin
Declaracin de un objeto
En la declaracin se crea la referencia al objeto, de forma similar a cmo se declara una variable
de un tipo primitivo.
La referencia se utiliza para manejar el objeto.
La sintaxis general para declarar un objeto en Java es:
NombreClase referenciaObjeto;
Por ejemplo, para crear un objeto de la clase Persona creamos su referencia as:
Persona p;
La referencia tiene como misin almacenar la direccin de memoria del objeto. En este momento la
referencia p almacena una direccin de memoria nula (null).
Problema 3:
JOS RIGOBERTO HERNNDEZ ALBURQUERQUE
1
0
Desarrollar una clase que represente un punto en el plano y tenga los siguientes mtodos: cargar
los valores de x e y, imprimir en que cuadrante se encuentra dicho punto (concepto matemtico,
primer cuadrante si x e y son positivas, si x<0 e y>0 segundo cuadrante, etc.)
Programa Punto
2.4 Mtodos: declaracin, mensajes, paso de parmetros, retorno de valores.
Cuando uno plantea una clase en lugar de especificar todo el algoritmo en un nico mtodo,
dividimos todas las responsabilidades de las clase en un conjunto de mtodos.
Los parmetros los podemos imaginar como variables locales al mtodo, pero su valor se inicializa
con datos que llegan cuando lo llamamos.
Problema 4:
Confeccionar una clase que permita ingresar valores enteros por teclado y nos muestre la tabla de
multiplicar de dicho valor. Finalizar el programa al ingresar el -1.
1
1
Programa TablaMultiplicar
Cuando un mtodo retorna un dato en vez de indicar la palabra clave void previo al nombre del
mtodo indicamos el tipo de dato que retorna. Luego dentro del algoritmo en el momento que
queremos que finalice el mismo y retorne el dato empleamos la palabra clave return con el valor
respectivo.
Problema 5:
Confeccionar una clase que permita ingresar tres valores por teclado. Luego mostrar el mayor y el
menor.
Programa MayorMenor
2.5 Constructores y destructores: declaracin, uso y aplicaciones.
En Java podemos definir un mtodo que se ejecute inicialmente y en forma automtica. Este
mtodo se lo llama constructor.
El constructor tiene las siguientes caractersticas:
1
2
Problema 6:
Se desea guardar los sueldos de 5 operarios en un vector. Realizar la creacin y carga del vector
en el constructor.
Programa Operarios
Problema 7:
Confeccionar una clase que represente un empleado. Definir como atributos su nombre y su
sueldo. En el constructor cargar los atributos y luego en otro mtodo imprimir sus datos y por ltimo
uno que imprima un mensaje si debe pagar impuestos (si el sueldo supera a 3000)
Programa EmpleadoFabrica
Problema 8:
Implementar la clase operaciones. Se deben cargar dos valores enteros en el constructor, calcular
su suma, resta, multiplicacin y divisin, cada una en un mtodo, imprimir dichos resultados.
Programa OperacionesCalculo
El destructor:
El destructor se utiliza para destruir una instancia de una clase y liberar memoria. En Java no hay
destructores, ya que la liberacin de memoria es llevada a cabo por el Garbage Collector cuando
las instancias de los objetos quedan desreferenciadas.
2.6 Sobrecarga de mtodos.
Un mtodo sobrecargado se utiliza para reutilizar el nombre de un mtodo pero con diferentes
argumentos (opcionalmente un tipo diferente de retorno). Las reglas para sobrecargar un mtodo
son las siguientes:
1
3
1
4
La empresa informtica IPM Tech necesita llevar un registro de todos sus empleados que se
encuentran en la oficina central, para eso ha creado un diagrama de clases que debe incluir lo
siguiente:
1) Empleado
Atributos:
- nombre: tipo cadena (Debe ser nombre y apellido)
- cedula: tipo cadena
- edad : entero (Rango entre 18 y 45 aos)
- casado: boolean
- salario: tipo numrico doble
Mtodos:
- Constructor con y sin parmetros de entrada
- Mtodo que permita mostrar la clasificacin segn la edad de acuerdo al siguiente algoritmo:
Si edad es menor o igual a 21, Principiante
Si edad es >=22 y <=35, Intermedio
Si edad es >35, Senior.- Imprimir los datos del empleado por pantalla (utilizar salto de lnea \n para separar los atributos.
- Un mtodo que permita aumentar el salario en un porcentaje que sera pasado como parmetro al
mtodo.
2. Programador (Especializacin de Empleado). Clase que hereda de Empleado todos los
atributos y mtodos.
- Atributos:
1
5
Herencia Mltiple
1
6
1
7
class Empleado {
protected int sueldo;
...
}
Dado que un Ejecutivo es un Empleado, entonces desde la clase Ejecutivo se puede acceder al
dato miembro sueldo, mientras que si se declara private no.
Programa Figura
3.5 Constructores y destructores en clases derivadas.
Cuando remueve de la memoria un objeto de una clase derivada, el recolector de basura invoca al
destructor del objeto. Esto inicia una cadena de invocaciones a destructores, en donde el
destructor de la clase derivada y los destructores de las clases bases directas e indirectas se
ejecutan en orden inverso al que se ejecutaron los constructores, esto es, primero se ejecuta el
JOS RIGOBERTO HERNNDEZ ALBURQUERQUE
1
8
Cuando el recolector de basura invoca al destructor de un objeto de una clase derivada, ese
destructor realiza su tarea y despus invoca al destructor de la clase base. El proceso se repite
hasta que se invoca al destructor de la clase Object.
1
9
b.z = 500 ;
}
}
Unidad 4 Polimorfismo
4.1 Definicin.
El polimorfismo consiste en obtener un mismo mtodo con diferentes funciones, es decir,
suponiendo que tengamos una clase Saludo con el mtodo Saludo el cual sera su constructor,
pero en este caso tendramos varios constructores pero siempre siguiendo las reglas de
independencia en cuestin a los parmetros de cada constructor para que as puedan diferenciarse
uno de otro, sin embargo cada uno tendr diferentes procesos internos en s mismo.
Programa Saludo
4.2 Clases abstractas: definicin, mtodos abstractos, implementacin de clases abstractas,
modelado de clases abstractas.
Una clase que declara la existencia de mtodos pero no la implementacin de dichos mtodos (o
sea, las llaves { } y las sentencias entre ellas), se considera una clase abstracta.
Una clase abstracta puede contener mtodos no-abstractos pero al menos uno de los mtodos
debe ser declarado abstracto.
Para declarar una clase o un metodo como abstractos, se utiliza la palabra reservada abstract.
abstract class Drawing
{
abstract void miMetodo(int var1, int var2);
String miOtroMetodo( ){ ... }
}
4.3 Interfaces: definicin, implementacin de interfaces, herencia de interfaces.
Una interface es una variante de una clase abstracta con la condicin de que todos sus mtodos
deben ser asbtractos. Si la interface va a tener atributos, stos deben llevar las palabras
reservadas static final y con un valor inicial ya que funcionan como constantes por lo que, por
convencin, su nombre va en maysculas.
interface Nomina
{
public static final String EMPRESA = "Patito, S. A.";
public void detalleDeEmpleado(Nomina obj);
}
Una clase implementa una o ms interfaces (separadas con comas ",") con la palabra reservada
implements. Con el uso de interfaces se puede "simular" la herencia mltiple que Java no soporta.
class Empleado implements Nomina
{
...
JOS RIGOBERTO HERNNDEZ ALBURQUERQUE
2
0
}
En este ejemplo, la clase Empleado tiene una clase padre llamada Object (implcitamente) e
implementa a la interface Nomina, quedando el diagrama de clases de la siguiente manera:
2
1
Unidad 5 Excepciones.
5.1 Definicin.
Las excepciones son el mecanismo por el cual pueden controlarse en un programa Java las
condiciones de error que se producen. Estas condiciones de error pueden ser errores en la lgica
del programa como un ndice de un array fuera de su rango, una divisin por cero o errores
disparados por los propios objetos que denuncian algn tipo de estado no previsto, o condicin que
no pueden manejar.
La idea general es que cuando un objeto encuentra una condicin que no sabe manejar crea y
dispara una excepcin que deber ser capturada por el que le llam o por alguien ms arriba en la
pila de llamadas. Las excepciones son objetos que contienen informacin del error que se ha
producido y que heredan de la clase Throwable o de la clase Exception. Si nadie captura la
excepcin interviene un manejador por defecto que normalmente imprime informacin que ayuda a
encontrar quin produjo la excepcin.
5.2 Tipos de excepciones.
En Java, todas las excepciones estan consideradas en el de rbol de excepciones que se deriva de
la clase Throwable. Existen dos subclases directas de Throwable: Error y Exception. En la figura se
observa parte de la jerarqua de clases derivada de Throwable:
La clase Error est relacionada con errores de la mquina virtual de Java y no el cdigo,
generalmente estos errores no dependen del programador por lo que no debe preocuparse por
tratarlos.
En la clase Exception se encuentran las excepciones RuntimeException, producidas por errores de
programacin. El compilador de Java obliga a corregirlas.
En resumen las excepciones son generadas de tres formas diferentes:
1) La mquina Virtual de Java puede generar una excepcin como producto de un error interno
que est fuera de su control. Estas excepciones generalmente no pueden ser manejadas por el
programa.
2) Excepciones estndar: Son excepciones que deben ser manipuladas, se producen cuando se
ejecuta una divisin por cero o se trata de acceder a un arreglo con un ndice fuera de lmites son
generadas por errores en el cdigo del programa
2
2
3) El programador puede generar una excepcin manualmente utilizando la estructura throw. Sin
importar cmo se produjo la excepcin, se maneja de la misma forma.
5.3 Propagacin de excepciones.
Las instrucciones que tenemos dentro de un bloque try a menudo contienen llamadas a mtodos
que a su vez pueden realizar llamadas a otros mtodos y as sucesivamente. Cualquiera de los
mtodos llamados puede provocar una excepcin y cualquiera de los mtodos puede, o no, tratarla
(con bloques catch).
Una excepcin no tratada en un bloque se propaga hacia el bloque llamante. Este mecanismo de
propagacin contina mientras no se trate la excepcin o se llegue al mtodo de nivel superior. Si
la excepcin no se trata en el mtodo de nivel superior, se imprime un mensaje de error por
consola.
5.4 Gestin de excepciones: manejo de excepciones, lanzamiento de excepciones.
Cuando se produce un error en un mtodo, este crea un objeto 'exception' el cual contiene
informacin sobre la excepcin como el tipo de excepcin y el estado del programa al presentarse
el problema. El sistema de ejecucin es el responsable de buscar algn bloque de cdigo que
maneje la excepcin. En la terminologa de java, al hecho de crear una objeto exception y
manejarlo por el sistema de ejecucin se le conoce como lanzar una excepcin (throwing an
exception).
Bloque try/catch
El ncleo del manejo de excepciones son los bloques try y catch. A continuacin se muestra la
forma general del manejo de bloques de excepcin try/catch:
Cuando un segmento de cdigo lanza una excepcin, esta es atrapada por su correspondiente
manejador catch. En un mismo bloque de instrucciones se puede generar ms de una excepcin,
por lo que puede haber ms de un bloque catch asociado a un solo try. La ejecucin de catch no es
como llamar a una funcin, es decir, despus de ejecutar catch la ejecucin del programa no
regresa a donde se gener la excepcin, sino que el flujo del programa contina despus del
bloque catch
2
3
Ahora al producirse la excepcin sigue las acciones especificadas en el bloque catch, es este caso,
la accin consiste en mandar un mensaje.
Programa PruebaExcepcionCorregida (es el de arriba)
Vamos a crear un programa que divida dos nmeros. Supongamos que los nmeros se introducen
n dos controles de edicion. Se obtiene el texto de cada uno de los controles de edicin que se
guardan en dos strings. En esta situacin se pueden producir dos excepciones
NumberFormatException, si se introducen caracteres no numricos y ArithmeticException si se
divide entre cero.
Programa ExcepcionApp
5.5 Creacin y manejo de excepciones definidas por el usuario.
Las excepciones definidas por el usuario permiten que el programador manipule los errores de la
aplicacin para mostrar respuestas personalizadas. Crear estas funciones permite que una
aplicacin sea ms sencilla de comprender y fcil de usar.
Las excepciones predefinidas cubren las situaciones de error ms habituales con las que nos
podemos encontrar, relacionadas con el propio lenguaje y el hardware.
JOS RIGOBERTO HERNNDEZ ALBURQUERQUE
2
4
Imaginemos una aplicacin informtica que controla la utilizacin de los columpios de esqus. Los
pases de acceso dispondrn de un cdigo de barras que los identifica. En ciertas ocasiones nos
encontraremos con situaciones anmalas:
1. Cdigo de barras ilegible
2. Cdigo de barras no valido (pase caducado)
3. Cdigo de barras utilizado en otro columpio en un periodo de tiempo demasiado breve
Ninguna de las situaciones anteriores se puede detectar utilizando excepciones predefinidas
porque su naturaleza est estrechamente relacionada con los detalles de la aplicacin, por lo que
tendremos que hacer uso de excepciones definidas por nosotros mismos.
En POO lo ms adecuado es que las excepciones sean objetos, por lo que en Java definiremos las
excepciones como clases. Nuestras clases de excepcin en general heredaran de la clase
Exception
En las clases que creemos a partir de Excepction, incluiremos al menos el constructor vaco y otro
que contenga un String como argumento. Este String se inicializa automticamente con el nombre
de la clase; la inicializacin se realiza en la super clase Throwable. El texto que pongamos al
hacer unos del segundo constructor se aadir al nombre de la clase insertado en la super clase.
Programa ExPropia
Unidad 6 Flujos y Archivos.
6.1 Definicin
En java la entrada de los datos se realiza mediante un flujo de entrada. Ej: el teclado, un archivo,
una comunicacin de red, un objeto de internet, etc.
La salida de datos se realiza mediante un flujo de salida. Ej: Un archivo, en pantalla, en una
impresora, etc.
Lectura de Datos con BufferedReader
En Java existen dos maneras bsicas para la lectura o introduccin de datos por medio
del teclado, stas son utilizando el mtodo BufferedReader o utilizando un objeto de la
clase Scanner.
BufferedReader
Para utilizar el mtodo BufferedReader debemos importar los paquetes:
BufferedReader
InputStreamReader
IOException
Esto es porque necesitamos crear un objeto del tipo BufferedReader el cual recibe como parmetro
un objeto de la clase InputStreamReader. El uso del BufferedReader requiere forzosamente del
manejo de excepciones por ello tambin es necesario importar la clase IOException.
Declaracin del objeto BufferedReader:
2
5
Lee una lnea de texto hasta que encuentra un carcter de salto de lnea (\n) y retorno de carro (\r).
Sintaxis:
String readLine()
Programa SumarDatosTeclado
2
6
2
7
read(): Devuelve el carcter que se ha introducido por el teclado leyndolo del buffer de
entrada y lo elimina del buffer para que en la siguiente lectura sea ledo el siguiente
carcter. Si no se ha introducido ningn carcter por el teclado devuelve el valor -1.
b.) System.out
Este objeto implementa la salida estndar. Los mtodos que nos proporciona para controlar la
salida son:
print(a): Imprime a en la salida, donde a puede ser cualquier tipo bsico Java ya que Java
hace su conversin automtica a cadena.
println(a): Es idntico a print(a) salvo que con println() se imprime un salto de lnea al final
de la impresin de a.
c.) System.err
Este objeto implementa la salida en caso de error. Normalmente esta salida es la pantalla o la
ventana del terminal como con System.out, pero puede ser interesante redirigirlo, por ejemplo
hacia un fichero, para diferenciar claramente ambos tipos de salidas.
Las funciones que ofrece este objeto son idnticas a las proporcionadas por System.out.
Ejemplo
A continuacin vemos un ejemplo del uso de estas funciones que acepta texto hasta que se pulsa
el retorno de carro e informa del nmero de caracteres introducidos.
Programa CuentaCaracteres
Entrada/Salida por fichero
Tipos de ficheros
En Java es posible utilizar dos tipos de ficheros (de texto o binarios) y dos tipos de acceso a los
ficheros (secuencial o aleatorio).
Los ficheros de texto estn compuestos de caracteres legibles, mientras que los binarios pueden
almacenar cualquier tipo de datos (int, float, boolean,...).
Una lectura secuencial implica tener que acceder a un elemento antes de acceder al siguiente, es
decir, de una manera lineal (sin saltos). Sin embargo los ficheros de acceso aleatorio permiten
acceder a sus datos de una forma aleatoria, esto es indicando una determinada posicin desde la
que leer/escribir.
Slo vamos a tratar las tres principales:
2
8
2
9
int write( byte a[], int off, int len ): Escribe len caracteres del vector a en el fichero,
comenzando desde la posicin off.
La clase FileInputStream
Mediante los objetos de esta clase leemos de ficheros de texto de forma secuencial.
Presenta el mtodo read() para la lectura del fichero. Este mtodo se puede invocar de varias
formas.
int read(): Devuelve el siguiente carcter del fichero.
int read( byte a[] ): Llena el vector a con los caracteres ledos del fichero. Devuelve la longitud del
vector que se ha llenado si se realiz con xito o 1 si no haba suficientes caracteres en el fichero
para llenar el vector.
int read( byte a[], int off, int len ): Lee len caracteres del fichero, insertndolos en el vector a.
Todos ellos devuelven -1 si se ha llegado al final del fichero (momento de cerrarle).
El siguiente ejemplo muestra el fichero de texto "/carta.txt" en pantalla:
Programa CrearCarta
La clase RandomAccessFile
Mediante los objetos de esta clase utilizamos ficheros binarios mediante un acceso aleatorio, tanto
para lectura como para escritura. En estos ficheros hay un ndice que nos dice en qu posicin del
fichero nos encontramos, y con el que se puede trabajar para posicionarse en el fichero.
Mtodos de desplazamiento
Cuenta con una serie de funciones para realizar el desplazamiento del puntero del fichero. Hay que
tener en cuenta que cualquier lectura o escritura de datos se realizar a partir de la posicin actual
del puntero del fichero.
long getFilePointer();Devuelve la posicin actual del puntero del fichero.
void seek( long l ); Coloca el puntero del fichero en la posicin indicada por l. Un fichero siempre
empieza en la posicin 0.
int skipBytes( int n ); Intenta saltar n bytes desde la posicin actual.
long length(); Devuelve la longitud del fichero.
void setLength( long l); Establece a l el tamao de este fichero.
FileDescriptor getFD(); Devuelve el descriptor de este fichero.
Mtodos de escritura
La escritura del fichero se realiza con una funcin que depende el tipo de datos que se desee
escribir.
3
0
void write( byte b[], int ini, int len ); Escribe len caracteres del vector b.
void write( int i ); Escribe la parte baja de i (un byte) en el flujo.
void writeBoolean( boolean b ); Escribe el boolean b como un byte.
void writeByte( int i ); Escribe i como un byte.
void writeBytes( String s ); Escribe la cadena s tratada como bytes, no caracteres.
void writeChar( int i ); Escribe i como 1 byte.
void writeChars( String s ); Escribe la cadena s.
void writeDouble( double d ); Convierte d a long y le escribe como 8 bytes.
void writeFloat( float f ); Convierte f a entero y le escribe como 4 bytes.
void writeInt( int i ); Escribe i como 4 bytes.
void writeLong( long v ); Escribe v como 8 bytes.
void writeShort( int i ); Escribe i como 2 bytes.
void writeUTF( String s ); Escribe la cadena s utilizando la codificacin UTF-8.
Los mtodos que escriben nmeros de ms de un byte escriben el primero su parte alta.
Mtodos de lectura
La lectura del fichero se realiza con una funcin que depende del tipo de datos que queremos leer.
boolean readBoolean(); Lee un byte y devuelve false si vale 0 o true sino.
byte readByte(); Lee y devuelve un byte.
char readChar(); Lee y devuelve un caracter.
double readDouble(); Lee 8 bytes, y devuelve un double.
float readFloat(); Lee 4 bytes, y devuelve un float.
void readFully( byte b[] ); Lee bytes del fichero y los almacena en un vector b.
void readFully( byte b[], int ini, int len ); Lee len bytes del fichero y los almacena en un vector b.
int readInt(); Lee 4 bytes, y devuelve un int.
long readLong(); Lee 8 bytes, y devuelve un long.
short readShort(); Lee 2 bytes, y devuelve un short.
int readUnsignedByte(); Lee 1 byte, y devuelve un valor de 0 a 255.
int readUnsignedShort(); Lee 2 bytes, y devuelve un valor de 0 a 65535.
String readUTF(); Lee una cadena codificada con el formato UTF-8.
int skipBytes(int n); Salta n bytes del fichero.
Si no es posible la lectura devuelven 1.
6.4 Manejo de objetos persistentes
Conceptos sobre persistencia de objetos
Es la capacidad del programador para conseguir que sus datos sobrevivan a la ejecucin del
proceso que los creo, de forma que puedan ser reutilizados en otro proceso.
3
1
Muchas aplicaciones Java necesitan tratar con datos persistentes. En la mayora de los casos, esto
significa encararse con una base de datos relacional, posiblemente un base de datos obsoleta (o
antigua) o un Sistema de Manejo de Bases de Datos (DBMS) estndar industrial.
3
2