Conviértete en un emprendedor,profesional del conocimiento en la programación

lunes, 9 de enero de 2012

HERENCIA CON ARCHIVOS DE TEXTO

Compartir con:


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