Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CENTRO: CRUV
FACULTAD: INFORMÁTICA
CARRERA: LICENCIATURA EN INGENIERIA EN INFORMÁTICA
CURSO: PROGRAMACIÓN 2
CÓDIGO: 10110
PROFESOR: DIEGO SANTIMATEO
ESTUDIANTE:
LEONARDO BATISTA
SEGUNDO SEMESTRE DEL 2019
índice
índice ................................................................................................................................................... 2
Introducción ........................................................................................................................................ 3
Enunciado del problema .................................................................................................................... 4
Glosario del dominio donde se desarrolla el problema................................................................... 4
Explicación del programa en java ..................................................................................................... 5
Explicando la clase Banco................................................................................................................. 5
Documentación de la clase SistemaBanco y evidencia del código fuente de la clase SistemaBanco.
.......................................................................................................................................................... 8
Evidencia de la clase Banco............................................................................................................ 13
Evidencia de la clase InteractiveIO. ................................................................................................ 16
Métodos creados por el programador............................................................................................. 18
métodos de la clase Banco ............................................................................................................. 18
Métodos de la clase SistemaBanco. ............................................................................................... 19
Clases y métodos definidos por el lenguaje java .......................................................................... 20
Constructores usados ...................................................................................................................... 21
Datos de prueba ................................................................................................................................ 23
Evidencia de ejecución del programa ............................................................................................. 24
Introducción
En este trabajo encontraremos la documentación de un programa implementado en java usando la
metodología programación orientada a objeto. El programa se trata de un sistema de banco que
permita que un cliente nuevo habrá una cuenta además el programa o sistema le permitirá al usuario
realizar tantas transacciones como pueda, permitiendo el cierre de la cuenta.
Bueno para mi todos los trabajos o tareas de este tipo son importante, este trabajo fue un reto o por
decirlo mejor, fue la creación del programa en un lenguaje nuevo como java y usando la metodología
básica de la POO fue interesante realizar este trabajo porque me obligo a investigar sobre los tipos
de cuentas que hay y como funciona de forma general cada una, porque si veremos el programa o
problema que había que resolver mediante la programación refería a las cuentas bancarias(ahorros)
y transacciones que realizara el usuario en la aplicación creada.
Otro punto importante al realizar fue porque aprendí a crear la clase InteractiveIO y crear mis propios
métodos de entrada y salida de datos mediante teclado. Además, lo más importante fue la aclaración
de algunos conceptos, que en realidad sabia pero no de forma correcta, porque al tratar de resolver
algún problema me generaba conflictos y dudas que no me permitían avanzar.
Enunciado del problema
Plazo fijo
cuenta ahorro corriente
cuenta ahorro navidad
Banco
Cliente
Saldo inicial
Saldo final
Tipo de cuenta
Fecha de inicio
Fecha de cierre
Tasa de interés
Explicación del programa en java
En las siguientes imágenes observaremos la estructura principal del programa o clase principal.
La documentación o explicación de cada segmento de código esta remarcada de color amarillo
import java.time.format.DateTimeParseException; //importamos el paquete
time.format.DateTimeParseException muestra mensaje de error al capturar la fecha
import java.time.format.DateTimeFormatter; //DateTimeFormatter lo usamos para dar formato
a la fecha
import java.time.LocalDate; //usado para obtener la fecha del sistema
import java.time.Period; //usado para sacar el periodo de la fecha
System.out.print("\t\t\tBIENVENIDO AL BANCO\n");
System.out.print("\t\t**************************************************");
if(interes > 0 && interes <= 3){ //comprueba si el interés que pide
el cliente es aceptado por el banco
cliente[i].setTazaInteres(interes); //mandando el interés o
aplicando el interés que tendrá el cliente
cerrar = false;
}
else{
inputAndOuput.desplegar("Taza de interes NO es aceptada por el
Banco.");
}
}//fin while
}
inputAndOuput.desplegar("\n---------------------------------------------
--------\n");
inputAndOuput.desplegar("-----------------------------------------------
------\n");
}//fin del for
/*
* el siguiente método menú lo que realiza es ejecutar la lista de opciones que presenta
* para atender el usuario según sus necesidades, por ejemplo, contiene las opciones
* 1. retirar: le permite al cliente realizar un retiro. De dinero
* 2. depositar: le permite al cliente depositar una cierta cantidad de dinero
* (solo se puede depositar si el tipo de cuenta es cuenta navidad y cuenta ahorro)
* 3. mostrar datos del cliente: devuelve los datos del cliente que se está atendiendo.
* 4. cerrar la cuenta: cierra la cuenta bancaria del cliente.
* 5. ver saldo: le permite al cliente ver el saldo que dispone hasta la fecha.
* 6. Salir: sale del menú y deja de atender al cliente en específico.
*/
inputAndOuput.desplegar("\n".concat(cliente[pos].getNombreCliente()).concat(" ¿cuánto
deseas retirar?\n"));
antiguoSaldo = cliente[pos].getSaldoFinal(); //solamente captura el
saldo final del cliente
if(cliente[pos].retiro(inputAndOuput.capDouble()) && antiguoSaldo ¡= 0){ //
<--- Aquí captura el saldo que ingreso el usuario y además verifica
// si la transacción se puede realizar
inputAndOuput.desplegar("\nLa transacion fue exitosa...");
inputAndOuput.desplegar("\nSu antiguo saldo:"+antiguoSaldo);
// muestra el saldo ante de realizar el deposito
inputAndOuput.desplegar("\nSu nuevo saldo actual
es:"+cliente[pos].getSaldoFinal()); //muestra el saldo después de realizar el deposito
inputAndOuput.desplegar("********************************************");
}
else{
if(cliente[pos].getTipoCuenta() == 2){ // <--- retorna el tipo de
cuenta para verificar si es de navidad
// para mostrar el mensaje que la cuenta es de navidad y no puede hacer retiro
inputAndOuput.desplegar("La cuenta de ahorro navidad, Aún no
esta diponible para retirar");
}
else{
if(cliente[pos].getTipoCuenta() == 3){// <-- retorna el tipo
de cuenta para verificar si la cuenta es de plazo fijo
inputAndOuput.desplegar("Cuenta de ahorro plazo fijo: no
se a cumplido el plazo fijo de retiro");
else{
inputAndOuput.desplegar("\nEsta cuenta ya está
inhabilitada.");
}
}
}
}
antiguoSaldo = 0; //refrescando la variable de antiguo saldo
break;//case retiro
//deposito
case 2: inputAndOuput.desplegar("\t\t\t**********Secion de
deposito*************");
inputAndOuput.desplegar("\n\nMonto a depositar: "); //le dice al
cliente el monto a depositar
int mes = DiferenciaMes(cliente, pos); //calcula la diferencia de
mes del ultimo deposito con el actual
antiguoSaldo = cliente[pos].getSaldoFinal(); //obtiene el saldo
final del cliente
if(cliente[pos].deposito(inputAndOuput.capDouble()) && antiguoSaldo
¡= 0){ //verifica si el depósito puede realizarse ademas que captura el monto a depositar
if(mes >= 1) //si ha pasado más de un mes se realiza el interés
al cliente
cliente[pos].aplicarInteres(); //aplica el interes al cliente
inputAndOuput.desplegar("\n********************************************");
}
else{
if(cliente[pos].getTipoCuenta() == 3){ //retorna el tipo de
cuenta y verifica si es de plazo fijo si es de plazo fijo muestra el mensaje "plazo fijo:
no puede depositar"
inputAndOuput.desplegar("Cuenta de ahorro plazo fijo: no
puede depositar");
}
else{
inputAndOuput.desplegar("\nEsta cuenta ya estaba
inhabilitada.");
}
}
antiguoSaldo = 0; //refrescando la variable
mes = 0; //volvemos a poner la variable mes en cero
break;//Deposito
break;
//sección muestra saldo
case 5: if(cliente[pos].getSaldoFinal() != 0)
inputAndOuput.desplegar("Useted dispone de:
"+cliente[pos].getSaldoFinal()); //muestra el saldo actual de la cuenta(fondo)
else
inputAndOuput.desplegar(“Esta cuenta esta cerrada”);
break;
inputAndOuput.desplegar("\n**************************************************************
******\n");
return (opcion); // retorna la opción elegida
}
/*
* retorna la diferencia de mes que hay entre el ultimo deposito
* con el depósito actual:
* Usaremos la clase LocalDate para obtener la fecha del sistema usando unos de sus
métodos (now())
* Usaremos la clase Period para obtener el periodo del mes.
* como argumento le pasamos el cliente [] y la pos (posición)
*/
public static int DiferenciaMes(Banco cliente[], int pos){
/*
*básicamente hace la búsqueda del cliente seleccionado
*/
public static int busqueda(Banco cliente[], InteractiveIO inputAndOuput){
inputAndOuput.desplegar("Nombre del cliente a buscar: ");
String nomClient = inputAndOuput.capString(); //captura el cliente a buscar
String nombre = null;
int i,pos=0;
for (i=0; i < cliente.length; i++){ //recorre todas la posiciones de cada objeto
nombre = cliente[i].getNombreCliente(); //obtiene el nombre del cliente para
verificarlo
if(nomClient.equals(nombre)){ //verifica si ambos nombres coinciden de ser
así captura la posición luego de finalizar el ciclo devuelve la posición.
pos = i;
}
}//FIN DEL
return (pos);
}
import java.time.LocalDate;
//import java.text.*;
//probiedades
private String nombreCliente;
private LocalDate fechApertura;
private double tazaInteres;
private double saldoInicial;
private int tipoCuenta;
private double saldoFinal;
private LocalDate fechaUltimoDeposito; //listo
//CONSTRUCTOR
Banco(String nombreCliente, LocalDate fechApertura, double saldoInicial, int
tipoCuenta){
this.nombreCliente = nombreCliente;
this.fechApertura =fechApertura;
this.saldoInicial = saldoInicial;
this.tipoCuenta = tipoCuenta;
this.saldoFinal = saldoInicial;
this.fechaUltimoDeposito = fechApertura;
}//fin del constructor
//realizando el deposito
public boolean deposito(double saldoDep){
boolean depositado = true;
if(this.tipoCuenta == 1){//ahorro corriente
this.saldoFinal += saldoDep;
}
else{
if(this.tipoCuenta == 2){//ahorro navidad
this.saldoFinal += saldoDep;
}
else{
depositado = false;
}
}
return (depositado);
}
//Aplicando Interes
public void aplicarInteres(){
this.saldoFinal = (this.saldoFinal +((this.saldoFinal * this.tazaInteres) / 100));
}
// @Override
public String toString(){
return("Nombre de la Cuenta: "+getNombreCliente()+
"\nTipo de Cuenta: "+getTipoCuenta()+
"\nSaldo final: "+getSaldoFinal()+
"\nSaldo Inicial: "+this.saldoInicial);
}//devuelve datos de la cuenta del cliente
import java.io.*;
public class InteractiveIO {
System.out.print(cadena);
}
return (cadena);
}
//método que captura un dato de tipo double(decimal)
public double capDouble(){
double decimal=0;
try{
//capturamos el Dato Como String y lo transformamos a decimal
decimal=Double.parseDouble(brGuardar.readLine());
}catch(IOException ep){
System.out.println("Error al capturar dato de punto
flotante(Decimal)."+ep);
}
try{
cd = brGuardar.readLine(); //capturamos un String
caracter = cd.charAt(0);//del String capturado capturamos la
primera posición o sea la posición 0
}catch(IOException exp){
System.out.print("Error al capturar el caracter"+exp);
}
método uso
retiro () Recibe como argumento el saldo que
devuelve un boolean, recibe como retira el cliente dependiendo del tipo
argumento un valor de tipo double, de cuenta y el saldo actual que posee
además es público (modificador de el cliente se realizara el retiro
acceso)
deposito () devuelve tipo de dato boolean, Recibe como argumento el saldo o
recibe un valor de tipo double como monto que ira a depositar el cliente, si
argumento, además es publico el tipo de cuenta lo permite se realiza
(modificador de acceso). deposito
método uso
cerrarCuenta () Este método recibe el saldo total que
debuleve un tipo de dato double, recibe el usuario o cliente debe ingresar para
como argumento de tipo double, su cerrar la cuenta, el método compara el
modificador de acceso es public saldo final si es mayor a cero, porque
no tiene sentido cerrar una cuenta con
saldo final cero.
getTipoCuenta () Usado para retornar el tipo de cuenta,
devuelve un entero, su modificador de del objeto cliente, a la clase principal.
acceso es public (obtener)
getNombreCliente () Retorna el nombre del cliente a la
devuelve un tipo de dato String clase principal. (obtener).
getFechaUltimoDeposito () Retorna la fecha del ultimo deposito.
devuelve un tipo de dato LocalDate (obtener)
getFechaApertura () Retorna la fecha de apertura de la
devuelve un tipo de dato LocalDate cuenta. (obtener)
aplicarIntere () Multiplicamos el saldo final con la tasa
no devuelve o no retorna ningun valor de interés y dividimos entre el 100% y
es de tipo void ese saldo lo sumamos al saldo final de
la cuenta.
Tabla 4
Método uso
toString () Este método es usado, para devolver
este método devuelve una secuencia de los datos o mostrar los datos del
caracteres o sea un String cliente.
Tabla 5
Método uso
setUltimoDeposito () Actualiza la última fecha del depósito
no retorna ningún valor es void que realiza el cliente
recibe un argumento de tipo LocalDate
que es la fecha de ultimo deposito.
getSaldoFinal () Obtiene el saldo final del cliente y lo
devuelve un tipo de dato double lleva a la clase principal y lo muestra
al cliente.
Tabla 9
clases metodos
DateTimeFormatter ofParttern ()
retorna: un tipo de dato DateTimeFormatter
argumento: recibe como argumento un formato
de fecha como cadena.
Uso: obtener un formato de la fecha (dd-MM-
yyyy).
BufferedReader readLine ()
retorna: una cadena o captura una cadena
argumentos: no recibe
uso: capturar una cadena por el teclado
InputStreamReader ----------------------------------------------------------------
Constructores usados
Tabla 10
constructores uso
Banco (String name, LocalDate fechaA, double Inicializa un objeto de la clase Banco
saldo, int cuenta)
InteractiveIO () Construye el objeto de entrada y salida de datos
InputStreamReader (System.in) Definiendo el flujo de datos de entrada
BufferedReader(Objeto teclado)
Datos de prueba
Tabla 11
Nombre del cliente Leonardo
Fecha de apertura 02-10-2018
Fecha de cierre Toma la del sistema
Saldo inicial 300
Saldo final 1000
Tipo de cuenta 1
Interés 3.0
Nota: tipo de datos que prueba que el programa funciona bien al abrir una cuenta 1 (ahorro
corriente), puede depositar y retirar
Tabla 12
Nombre del cliente Juan
Fecha de apertura 02-09-2018
Fecha de cierre Toma la del sistema
Saldo inicial 700
Saldo final 900
Tipo de cuenta 2
Nota: tipo de datos que prueba que el programa funciona bien al abrir una cuenta 2 (navidad), solo
puede depositar
Tabla 13
Nombre del cliente Andrés
Fecha de apertura 25-08-2019
Fecha de cierre Toma la del sistema
Saldo inicial 700
Saldo final La cuenta tipo 3 no lo permite
Tipo de cuenta 3
Nota: los datos de prueba de la tabla 13 vemos que el tipo de cuenta es 3 (plazo fijo), por lo que se
sabe que el saldo inicial debe ser mayor a 5000.00 dólares y la tabla13 muestra que saldo inicial es
de 700. Esto se hizo para probar la restricción que trata este caso. No puede tocar el dinero
Evidencia de ejecución del programa