Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACIÓN III
LABORATORIO
HERENCIA
FACILITADOR
DIEGO SANTIMATEO
ESTUDIANTES
EURIS MORALES 9-726-1057
SEGUNDO SEMESTRE
FECHA DE ENTREGA
NOVIEMBRE 2008
INTRODUCCIÓN
El lenguaje Java permite el empleo de la herencia, característica que permite definir una
clase tomando como base a otra clase ya existente. Esto es una de las bases de la
reutilización de código, en lugar de copiar y pegar.
3. Interfaz grafica
3.5 Errores
4. Archivos de texto
6. UML
7. Tablas
8. Código Fuente
9. Conclusión
OBJETIVOS
Objetivos generales:
Objetivos específicos:
Entrega
Presentar la estructura del programa (UML) con la respectiva documentación de las
clases, variables de instancias y comportamiento, el código fuente y evidencia de la
ejecución, con suficientes pruebas.
INTERFAZ GRAFICA
Archivo Original
Interfaz grafica donde se muestra como el usuario debe introducir el nombre del archivo
que se va a procesar (archivo ya confeccionado).
Para este caso el nombre que tiene este archivo es datos y su extension es txt porque es un
archivo de texto.
Interfaz grafica donde se muestra como el usuario debe introducir el nombre del primer
archivo o el archivo que va a contener los saldos de cada una de las cuentas .
Para este caso el nombre que se utilizo fue saldos, pero a diferencia del archivo de lectura
este (nombre de archivo) se puede cambiar a criterio del usuario con la extension txt.
Interfaz grafica donde se muestra como el usuario debe introducir el nombre del archivo
que va a contener los depositos de cada una de las cuentas .
Para este caso el nombre que se utilizo fue depositos , pero a diferencia del archivo de
lectura este tambien se puede cambiar a criterio del usuario .Al igual que los demas
archivos este debe tener la extension txt.
Archivo para retiros
Interfaz grafica donde se muestra como el usuario debe introducir el nombre del archivo
que va a contener los retiros de cada una de las cuentas .
Para este caso el nombre que se utilizo fue retiros , pero a diferencia del archivo de lectura
este tambien se puede cambiar a criterio del usuario. Al igual que los demas archivos este
debe tener la extension txt.
Errores
Interfaz grafica donde se muestra al usuario cuando introduce datos incorrectos como el
nombre del archivo original o la falta de la extension del archivo
ARCHIVOS DE TEXTO
Hay dos cuentas que tienen depósitos 0.0 porque no hubo depósitos
En este archivo se muestran los retiros actualizados pero solo los retiros que se puedan
efectuar (si el saldo es mayor que los retiros)
En el número de cuenta 99999 se muestra la suma de todos los retiros efectuados en cada
cuenta
Esquema de funcionamiento del programa
1 Clase
principal
4 Clase
2 Clase subclase
lectura
3 Clase Todo
Flujo
• Clase Todo flujo: Clase que modela el flujo para archivo de texto.
• Clase subclase: Clase que procesa el archivo que contiene los datos y crea los
archivos para escribir los datos actualizados.
Nota:
La clase lectura solo regresa o devuelve datos a la clase principal solo cuando entran datos
al programa (nombres de los archivos) cuando la subclase invoca a la clase lectura es solo
para la salida.
UML
class
Principal
Atributos
datos
arch_lectura
arch_saldo
arch_depositos
flujo
llamar
class subclase
Métodos extends TodoFlujo
class TodoFlujo
Atributos
Isr
In
w
name
Métodos
TodoFlujo()
TodoFlujo()
TodoFlujo()
Clase Principal
Esta clase es la que se encarga de manejar del funcionamiento del programa
Tabla que muestra los objetos que se utilizaron el programa
Tipo Objeto Utilidad
String arch_lectura Objeto que recibe (retorno
de la clase de entrada y
salida) el nombre del
archivo que se va a procesar
String arch_saldo Objeto que recibe el nombre
del archivo que va a
contener los saldos
actualizados
String arch_depositos Se encarga de recibir el
nombre del archivo que va a
contener los depósitos
actualizados
String arch_retiros Objeto que recibe el nombre
del archivo que va a
contener los retiros
actualizados
subclase flujo Objeto que se encarga de
invocar a métodos que se
encuentran en la clase
subclase
Nota:
En la clase principal no se utilizo ningún método solo se accede a ellos
Clase Lectura
Clase de entrada y salida de datos
Tabla que muestra los objetos que se utilizaron el programa
Tipo Objeto Utilidad
String información Objeto que almacena el nombre de los
archivos
Int k Objeto que contiene el tipo de cuenta ,
este determina en que archivo se deben
escribir los datos finales
String datos Objeto que contiene los datos finales
que se van a escribir en los archivos
Tabla que muestra los Métodos que se utilizaron el programa
Método Utilidad
error() Método que despliega un mensaje de error
cuando se introducen nombres de archivos
incorrectamente
nombre() Método donde se introduce el nombre del
archivo que se va a procesar
salida() Método donde se introducen los nombres de
los archivos de salida
escribir() Método donde se escribe en los tres nuevos
archivos los datos finales de cada
transacción
Double sum_tranc_final Objeto que almacena la suma total de las cuentas esta
suma estará en otra cuenta (9999)
Double sum_dep_fin Objeto que almacena la suma total de los retiros está
suma estará en la cuenta 9999
String dep_fin Objeto que almacena los depósitos finales que se van
a escribir en el archivo de depósitos finales
String ret_fin Se encarga de almacenar los retiros que se van a
escribir en el archivo de los retiros actualizados
Clase subclase
Objeto Utilidad
split() Método que corta cadenas de caracteres de acuerdo con la opción que el
programador le asigne
CLASE PRINCIPAL
//clase que controla toda la ejecucion del programa
import java.lang.String.*;
import javax.swing.*;
import java.io.*;
import javax.swing.JOptionPane;
try{
//archivo de escritura
flujo.lecarchivo(arch_saldo,arch_depositos,arch_retiros);//método
de lectura del archivo
} //fin de la clase
CLASE LECTURA
import javax.swing.JOptionPane;
import java.io.*;
import java.util.*;
JOptionPane.showMessageDialog(null,"Error de captura","Informacion
No Valida",JOptionPane.ERROR_MESSAGE);
return(informacion);
return(informacion);
dat.println("...................................................."
);
dat.println("...................................................."
);
dat.println(" ");}
else{
if(k==1){dat.println(" ");
dat.println("...................................................."
);
dat.println(" ");}
dat.println("...................................................."
);
dat.println("...................................................."
);
dat.println(" ");}}
String[] imprimir=datos.split(",");
for(int i=0;i<imprimir.length;i++)
dat.println(imprimir[i]);
}
CLASE SUBCLASE
//clase donde se procesa el archivo de escritura y se crean los nuevos
archivos
import java.io.*;
import javax.swing.*;
import java.net.*;
super(arch);
String ret_fin="";
try{
String line="";
if(tip_cuent==0)
if(suma_saldos!=0.0)
else{
sum_tranc_final=sum_tranc_final+ suma_saldos;
sum_ret_fin=sum_ret_fin+suma_retiros;
sum_dep_fin=sum_dep_fin+suma_depositos;
//se almacena el ultimo tipo de cuenta con la suma de los saldos, retiros
y depossitos
tra_fin =tra_fin+" "+"999999"+" "+"3"+" " +
sum_tranc_final+",";
finally
}
CLASE TODO FLUJO
import java.io.*;
import javax.swing.*;
import java.net.*;
}
//sobrecargamos el contructor
public TodoFlujo(int w,String Name)throws IOException{//url
}
public BufferedReader lee()throws IOException{//la lectura se hace
fuera de la clase
return(in);
}//el "Objeto" que utilize este metodo puede leer con el metodo
readLine()
En java, como ya vimos la herencia se especifica agregando la cláusula extends después del
nombre de la clase. En la cláusula extends se indicara el nombre de la clase base de la cuál
queremos heredar.
En este lenguaje al heredar de una clase padre, heredaremos los métodos como los
atributos, mientras que los constructores son utilizados, pero estos no son heredados