Taller carga datos + JAVA
Upcoming SlideShare
Loading in...5
×
 

Taller carga datos + JAVA

on

  • 652 views

Taller paso a paso de trabajo con ficheros en JAVA y ECLIPSE. Se emplean clases auxiliares, desarrollo de vectores de objetos y el acceso a métodos desde una clase principal.

Taller paso a paso de trabajo con ficheros en JAVA y ECLIPSE. Se emplean clases auxiliares, desarrollo de vectores de objetos y el acceso a métodos desde una clase principal.

Statistics

Views

Total Views
652
Views on SlideShare
652
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Taller carga datos + JAVA Taller carga datos + JAVA Document Transcript

  • TALLERLOGICA DE PROGRAMACIONCarga de datos con JavaMsc.ing.Jose Fabian Diaz Silva@josefabiandiazMuchos programas requieren un tipo de interacción diferente con el usuario que no involucrela escritura de una serie de parámetros de entrada por medio del teclado. Un ejemplo de estecaso es la carga de datos empleando un archivo, el cual puede contener un gran volumen dedatos y permite gracias a ellos realizar simulaciones más precisas.En este taller se realizar un ejercicio que involucre la carga de un archivo plano (txt) , una claseprincipal y una clase auxiliar que generara los objetos del ejercicio.1-Creacion de proyecto y clasesLo primero que es necesario realizar es crear un proyecto que almacene el taller que serealizara.File> New >Java ProjectEs necesario darle el nombre de “LogicadeProgramacion” al proyecto(en la ventana queaparece).
  • Cuando el proyecto este creado, será necesario crear una clase para realizar la ejecución de lasacciones que se esperan del taller.Para ello dar clic derecho sobre el paquete por defecto que aparece dentro del proyecto yseleccionar la creación de una nueva clase, así como lo indica la imagen.Es importante indicar en la ventana que aparece para ingresar el nombre que la clase se podráejecutar, para lo cual requiere un método main. La clase llevara el nombre “Bigcity”.Ya con la clase principal creada es necesario iniciar con la construcción de la clase auxiliar lacual se llamara “CiudadA”. (se debe seguir el mismo proceso que se empleo para crear la claseprincipal, pero sin la presencia del método main).Atributos y métodosLa clase “CiudadA” tiene 4 atributos, el identificador que permite manejar cada objeto con unaúnica identidad, un nombre que facilita su interpretación, un atributo que corresponde a lapoblación que tiene y el nivel de desarrollo de la ciudad especifica(entre 1 y 5).int identificador;String nombre;int poblacion;int nivel;Sera necesario crear un constructor para poder iniciar con valores los objetos que se generarana partir de la clase, pero Eclipse permite acelerar este desarrollo por medio de unaherramienta que se encuentra dentro de sus opciones. Para generar automáticamente este
  • código realice la acción que indica el grafico y señale los atributos que quiere que seanincluidos (se recomienda seleccionar todos).Al finalizar la ejecución se generara el siguiente código.public CiudadA(int identificador, String nombre, int poblacion, int nivel) {super();this.identificador = identificador;this.nombre = nombre;this.poblacion = poblacion;this.nivel = nivel;}Posterior a la escritura del constructor se recomienda crear los métodos que permiteninteractuar con los atributos de la clase, tanto para modificar como para retornar sus valores.Esto se denomina crear los métodos “Beans”. Eclipse permite igualmente generarautomáticamente este código. View slide
  • Después de ejecutar esta acción se consigue este código.public int getIdentificador() {return identificador;}public void setIdentificador(int identificador) {this.identificador = identificador;}public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public int getPoblacion() {return poblacion;}public void setPoblacion(int poblacion) {this.poblacion = poblacion;}public int getNivel() {return nivel;}public void setNivel(int nivel) {this.nivel = nivel;}2-Trabajando desde la clase principalEstando en la clase principal es necesario prepararla para realizar la lectura de un archivoplano.import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;Primero se debe importar el código para la lectura de archivos, esto se hace por medio de 3librerías. La primera hace referencia a un buffer el cual va almacenando las líneas que seencuentran en el archivo y es el que facilita el trabajo con los datos. La segunda (FileReader)esrequerida para crear un objeto que habilite la lectura de un archivo. La ultima (IOException) seemplea para capturar los posibles errores que se generen en el proceso de lectura del archivo.Importante: La inclusión de la librería IOException hace necesario la modificación del métodomain para que cobije la ejecución de la clase y capture posibles errores de lectura.public static void main(String[] args) throws IOException{ View slide
  • 3-Invocando el archivo planoEn la línea 12, se crea una variable “líneas” que será la variable que almacenara la informaciónlínea a línea que se va leyendo del archivo que se carga.En la línea 14, se declara un vector llamado VectorFinal, el cual se empleara para almacenar losdatos contenidos en las líneas leídas del archivo plano.FileReader de la línea 15, es una clase que permite crear una instancia de un archivo, en estaoportunidad se crea la instancia fundamentada en el archivo “ciudadesC.txt”. Ya con lainstancia creada “Fr”, se realiza la generación de un buffer(línea 16) el cual permite la carga delos datos del archivo.Lo primero que se realiza es calcular el número de líneas que se tiene al interior delarchivo(nlineas). Se emplea el método “readLine” al interior de un While y asi se va pasandolínea a línea y contabilizando. Para conocer el número de líneas del archivo se imprime en lalínea 24 el valor de la cuenta. Por último se cierra el archivo en la línea 25.Posterior a la cuenta del número de líneas que tiene el archivo se inicia el verdadero procesodel mismo, puesto se realizara la creación de los objetos a partir de cada una de las líneas. En
  • este punto es importante mencionar que el archivo plano almacena un gran número de datosde ciudades que coinciden con los atributos de la clase auxiliar que se creó.En la línea 27, se crea un vector de “CiudadA” que permite almacenar los objetos que secrearan por cada línea del archivo (el número de líneas que se calculo con anterioridad es deutilidad para definir el tamaño que tendrá el vector). Con la línea 28 y 29 se realiza la mismaoperación de apertura y creación de buffer que se explico en la primera parte.El while se encuentra en la línea 30 y se mantiene ejecutándose mientras el archivo tengalíneas que leer. Al interior de este while y en la línea 32, se realiza la separación de la línealeída en un vector(vectorfinal), por medio de un método llamado SPLIT que utiliza un carácterde separación para determinar cómo separar las líneas(cada línea del archivo plano tiene lainformación de una ciudad y cada uno de sus atributos tienen un punto y coma separándolos,por ello este carácter se emplea dentro del método).En la línea 33 se crea un objeto llamado “C” que es de tipo CiudadA, es importante observarque en esta línea se le pasan 4 parámetros al constructor de la clase. Los parámetros sontomados del “vectorfinal” que se creó a partir de la línea leída(cada parámetro corresponde auna posición del vector iniciando desde cero y finalizando en 3, aunque no se aprecia en laimagen). Como algunos de los datos esperados son de tipo entero y al leer se asume quetodos son String es necesario emplear el método “Integer.parseInt()” que toma una cadena yla transforma al valor entero.Ya con el objeto “C” creado es necesario almacenarlo en una posición del vector , lo cual sehace en la línea 34 del ejercicio. Finalizado el proceso en la línea 37 y 38 se cierra tanto elbuffer como el archivo.Con el vector “CA” lleno ya solo es necesario recorrerlo y con la línea 40 y 41 se realiza esterecorrido, imprimiendo únicamente el nombre de la ciudad.Importante:Cuando un objeto queda almacenando dentro de un vector, no es necesario extraerlo parainvocar sus métodos, como se evidencia en la línea 41 y el método “getNombre”.
  • Clase completaimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class Bigcity {/*** @param args*/public static void main(String[] args) throws IOException{// TODO Auto-generated method stubString lineas=""; //se declara vacia al inicio;String vectorFinal[];FileReader Fr=new FileReader("C://ciudadesC.txt");BufferedReader br=new BufferedReader(Fr);int nlineas=0;int i=0;while((lineas=br.readLine())!=null){nlineas++;}System.out.println(nlineas);Fr.close();CiudadA [] CA=new CiudadA[nlineas];Fr=new FileReader("C://ciudadesC.txt");br=new BufferedReader(Fr);while((lineas=br.readLine())!=null){vectorFinal=lineas.split(";");CiudadA C=newCiudadA(Integer.parseInt(vectorFinal[0]),vectorFinal[1],Integer.parseInt(vectorFinal[2]),Integer.parseInt(vectorFinal[3]));CA[i]=C;i++;}br.close();Fr.close();for(int y=0;y<nlineas;y++)System.out.println(CA[y].getNombre());}}Clase auxiliarpublic class CiudadA {int identificador;String nombre;int poblacion;
  • int nivel;public CiudadA(int identificador, String nombre, int poblacion, intnivel) {super();this.identificador = identificador;this.nombre = nombre;this.poblacion = poblacion;this.nivel = nivel;}public int getIdentificador() {return identificador;}public void setIdentificador(int identificador) {this.identificador = identificador;}public String getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre = nombre;}public int getPoblacion() {return poblacion;}public void setPoblacion(int poblacion) {this.poblacion = poblacion;}public int getNivel() {return nivel;}public void setNivel(int nivel) {this.nivel = nivel;}}