HERENCIA
Herencia con archivos de texto.
Hasta
ahora, la clase ArrayList nos ha dado 2 ventajas inobjetables: tamaño
ilimitado y funcionalidad que reducen nuestro código. Sin embargo, todo lo que
se guarda en el objeto ArrayList permanece en memoria sólo mientras se
esté ejecutando el programa, si lo ejecutamos nuevamente, tendremos que
ingresar todos los datos nuevamente!.
Afortunadamente
éste problema se resuelve utilizando archivos de texto para guardar
permanentemente los datos en el disco.
Tendremos
que rediseñan nuestras clases para poder guardar la información en un archivo?.
La respuesta es NO. Entonces cómo hacemos?, La respuesta es: aplicando
HERENCIA. Si, vamos a tomar como clase padre a una clase administradora,
heredamos toda su funcionalidad y a la clase hija le agregamos la funcionalidad
que permita grabar en el archivo y leer desde el archivo.
Antes de
aplicar dicha herencia, debemos reconocer las clases ya existentes que nos van
a facilitar operar en un archivo según el proceso que queramos.
Para leer
los datos del archivo hacia el objeto ArrayList utilizaremos las
siguientes clases: FileReader, BufferedReader, StringTokenizer.
Para
grabar los datos en el archivo desde el objeto ArrayList utilizaremos
las siguientes clases: FileWriter, PrintWriter.
Ejemplo 1
Considere la existencia de una clase administradora de
nombre ArregloTVH desarrollada anteriormente. Aplique herencia para que
en la clase hija se consideren métodos para leer y para grabar en un archivo de
texto.
public class
ArchivoTVH extends ArregloTVH{
// atributos protegidos
protected String nombre;
// constructor
public ArchivoTVH(String
nombre){
super();
this.nombre=nombre;
lee(); }
// métodos que operan un archivo de texto
public void lee(){
try{
FileReader fr = new
FileReader(nombre);
BufferedReader br = new BufferedReader(fr);
String linea=br.readLine();
while(linea != null){
StringTokenizer
st = new StringTokenizer(linea,"/");
String
serie=st.nextToken();
int
marca=Integer.parseInt(st.nextToken());
int tamaño=Integer.parseInt(st.nextToken());
double
precio=Double.parseDouble(st.nextToken());
int
origen=Integer.parseInt(st.nextToken());
int
tecnologia=Integer.parseInt(st.nextToken());
agrega(serie,marca,tamaño,precio,origen,tecnologia);
linea=
br.readLine();}
br.close();
}catch(Exception ex){ } }
public void graba(){
try{
FileWriter fw = new
FileWriter(nombre);
PrintWriter pw= new
PrintWriter(fw);
for(int i=0; i<getN();
i++){
TVH t =getTVH(i);
pw.println(t.getSerie()+"/"+
t.getMarca()+"/"+
t.getTamaño()+"/"+
t.getPrecio()+"/"+
t.getOrigen()+"/"+
t.getTecnologia()); }
pw.close();
}catch(Exception
ex){}
}
}//
fin de la clase
Considere el diseño de GUI
Declare y cree un objeto de la clase ArchivoTVH en la
clase de la GUI La grabación de datos debe hacerse en cada botón que lo
requiera. Programe la acción de los botones.






0 comentarios:
Publicar un comentario