sábado, 24 de mayo de 2014

APO 1 - Nivel 1 en C#: Simulador Bancario

Tabla de Contenido

0. Introducción
1. Enunciado
1.1 Interfaz gráfica de usuario (tentativa)
2. Requerimientos
2.1 R1: Consignar en la cuenta corriente
2.2 R2: Consignar en la cuenta de ahorros
2.3 R3: Invertir en el CDT
2.4 R4: Calcular el saldo total de un cliente del banco
2.5 R5: Avanzar la fecha de la simulación
2.6 R6: Retirar de la cuenta de ahorros
2.7 R7: Retirar de la cuenta de corriente
2.8 R8: Cerrar el CDT y pasar a la cuenta corriente
2.9 R9: Dar el saldo de la cuenta corriente
2.10 R10: Dar saldo de la cuenta de ahorros
3. Modelo del Mundo del Problema
4. Modelo Interfaz Gráfica de Usuario
5. Modelo Pruebas Unitarias
6. Documenta de la Aplicación
7. Exploración de Código Fuente C#
7.1 Modelo
7.2 GUI
7.3 Utilidades
8. Recursos
8.1 Java
8.2 C#
9. Conclusiones
10. Glosario
11. Literatura & Enlaces

0. Introducción

Esta es la segunda traducción Java a C# de los ejercicios resueltos en el proyecto Cupi2 del Departamento de Ingeniería de Sistemas y Computación de la Universidad de los Andes. En esta ocasión vamos a traducir un simulador bancario que permite realizar varias operaciones sobre la cuenta de un cliente de una entidad bancaria. Veremos otros conceptos de uso de modelaje, análisis de sistema, además de un diseño de interfaz de usuario intuitivo (todo bajo los componentes que ofrece WinForms de .NET). ¡Empecemos!


[Nota: Se respetará cada uno de los elementos que pertenecen al proyecto de Cupi2 del Departamento de Ingeniería de Sistemas y Computación de la Universidad de los Andes, incluyendo el enlace de referencia. El texto en cursiva indica un extracto literal de la fuente; de lo contrario se dicta explícitamente.]

1. Enunciado

Desde [1]:

Una de las actividades más comunes en el mundo financiero, es la realización de simulaciones que permitan a los clientes saber el rendimiento de sus productos a través del tiempo, contemplando diferentes escenarios y posibles situaciones que se presenten.

Se quiere crear un programa que haga la simulación en el tiempo de la cuenta bancaria de un cliente. Un cliente tiene un nombre y un número de cédula el cual identifica la cuenta. Una cuenta, por su parte está constituida por  tres productos financieros:
  1. Una cuenta de ahorro, 
  2. Una cuenta corriente, y
  3. Un certificado de depósito a término (CDT).
Estos productos son independientes y tienen comportamientos particulares.

El saldo total de la cuenta es la suma de lo que el cliente tiene en cada uno de dichos productos:
  • En la cuenta corriente el cliente puede depositar o retirar dinero. Su principal característica es que no recibe ningún interés por el dinero que se encuentre allí depositado.
  • En la cuenta de ahorro, se paga un interés mensual del 0.6% sobre el saldo.
  • Cuando el cliente abre un CDT, define la cantidad de dinero que quiere invertir y negocia con el banco el interés mensual que va a recibir. A diferencia de la cuenta corriente o la cuenta de ahorro, en un CDT no se puede consignar ni retirar dinero. La única operación posible es cerrarlo, en cuyo caso, el dinero y sus intereses pasan a la cuenta corriente.
Se quiere que el programa permita a una persona simular el manejo de sus productos bancarios, dándolas facilidades de:
  1. Hacer las operaciones necesarias sobre los productos que conforman la cuenta, y 
  2. Avanzar mes por mes en el tiempo, para que el cliente pueda ver el resultado de sus movimiento bancarios y el entendimiento de sus inversiones.

1.1 Interfaz gráfica de usuario - GUI (tentativa)

En la Figura 1 se muestra la interfaz gráfica de usuario (GUI) que debe permitir todas las operaciones directas del usuario y la presentación de los cálculos hechos por el usuario.
Interfaz gráfica de usuario en Java.
Figura 1. Interfaz gráfica de usuario en Java.

2. Requerimientos

Estos son los requerimientos de la aplicación de simulador bancario [5]:

2.1 R1: Consignar en la cuenta corriente

Código: R1.

Descripción: Consignar en la cuenta corriente.

Resumen: Abona a la cuenta del cliente cierta cantidad de dinero.

Entradas: Valor (decimal) a consignar en la cuenta.

Resultados: El saldo de la cuenta se modifica según el valor consignado.

2.2 R2: Consignar en la cuenta de ahorros

Código: R2.

Descripción: Consignar en la cuenta de ahorros.

Resumen: Abona a la cuenta del cliente cierta cantidad de dinero.

Entradas: Valor a consignar.

Resultados: El saldo de la cuenta se modifica según el valor consignado.

2.3 R3: Invertir en un CDT

Código: R3.

Descripción: Invertir en un CDT.

Resumen: Abre un CDT para el cliente, con un monto, un interés y una fecha específicos.

Entradas:
  1. Monto de la inversión.
  2. Interés pactado.
  3. Fecha de apertura.
Resultados: Se crea un CDT para un cliente.

2.4 R4: Calcular el saldo total de un cliente del banco

Código: R4.

Descripción: Calcular el saldo total de un cliente del banco.

Resumen: Calcula el capital del que dispone el cliente.

Entradas: Ninguna.

Resultados: Se muestra el saldo total del cliente.

2.5 R5: Avanzar la fecha de la simulación en un mes

Código: R5.

Descripción: Avanzar la fecha de la simulación en un mes.

Resumen: Aumenta un mes en la simulación, para poder recalcular los saldos y los rendimientos de las cuentas del cliente que requieren de actualizaciones.

Entradas: Ninguna.

Resultados: Se muestra el avance en el mes y los datos actualizados para los productos del cliente.

2.6 R6: Retirar de la cuenta corriente

Código: R6.

Descripción: Retirar de la cuenta corriente.

Resumen: Se disminuye el saldo del cliente por el valor del retiro realizado.

Entradas: El valor a retirar de la cuenta.

Resultado: Se modifica el saldo de la cuenta según el dinero retirado.

2.7 R7: Retirar de la cuenta corriente

Código: R7

Descripción: Retirar de la cuenta corriente.

Resumen: Se disminuye el saldo del cliente por el valor del retiro realizado.

Entradas: El valor a retirar de la cuenta.

Resultados: Se modifica el saldo de la cuenta según el dinero retirado.

2.8 R8: Cerrar el CDT y pasar a la cuenta corriente

Código: R8.

Descripción: Cerrar el CDT y pasar a la cuenta corriente.

Resumen: Cerrar el CDT de modo que en los siguientes meses no hay rendimiento alguno proveniente de esta cuenta, los rendimientos ganados durante el periodo del CDT, más el monto invertido serán abonados a la cuenta corriente.

Entradas: El mes de la simulación en el cual se cierra el CDT.

Resultados: La cantidad de dinero que será abonada a la cuenta corriente.

2.9 R9: Dar el saldo de la cuenta corriente

Código: R9.

Descripción: Dar el saldo de la cuenta corriente.

Resumen: Retorna el saldo de la cuenta corriente en un momento dado.

Entradas: Ninguna.

Resultados: El saldo actual del cliente en la cuenta corriente.

2.10 R10: Dar el saldo de la cuenta de ahorros

Código: R10

Descripción: Dar el saldo de la cuenta de ahorros.

Resumen: Retorna el saldo de la cuenta de ahorros en un momento dado.

Entradas: Ninguna.

Resultados: El saldo actual del cliente en la cuenta de ahorros.

3. Modelo del Mundo del Problema

En la Figura 2 (adaptación de [6]) se muestra el modelo de clases del mundo del problema para el simulador bancario.
Modelo del mundo de problema del Simulador Bancario.
Figura 2. Modelo del mundo de problema del Simulador Bancario (adaptación de [6]).

4. Modelo de la Interfaz Gráfica de Usuario

A continuación en el modelo de la interfaz usuario (controles, formularios, y clases ayudantes). En la Figura 3 se hace la descripción completa.
Modelo de la interfaz de usuario para Simulador Bancario
Figura 3. Modelo de la interfaz de usuario para Simulador Bancario (adaptación de [7]).

5. Modelo de Pruebas Unitarias

En la Figura 6 se muestra el diagrama para el modelo de pruebas unitarias para la clase CuentaBancaria.
Modelo de programas unitarias para la clase CuentaBancaria.
Figura 4. Modelo de programas unitarias para la clase CuentaBancaria (adaptado de [8]).

6. Documentación de la Aplicación

Documentación proyecto en formato CHM: enlace de descarga.

7. Exploración de Código Fuente C#

7.1 Modelo
Conjunto de entidades del modelo
Figura 5. Conjunto de entidades del modelo.

Archivo CDT.cs:




7.2 GUI
Clases que representan la interfaz gráfica de usuario.
Figura 6. Clases que representan la interfaz gráfica de usuario.

Archivo ControlDatosCliente.cs:

Archivo ControlOpciones.cs:

Archivo ControlSaldos.cs:

7.3 Utilidades
Clases auxiliares al modelo y a la interfaz de usuario.
Figura 7. Clases auxiliares al modelo y a la interfaz de usuario.

Archivo EntradaUsuario.cs:

Archivo Mes.cs:

8. Recursos

8.1 Java

A continuación el conjunto de enlaces a los artefactos fuente en los que está basada esta entrada:

8.2 C#

8.3 Aplicación en Ejecución

8.3.1 Capturas de pantalla
OrtizOL - Simulador Bancario
Figura 8. OrtizOL - Simulador Bancario.

Contraste visual de las aplicaciones.
Figura 9. Contraste visual de las aplicaciones.

8.3.2 Vídeo

9. Conclusiones

En el desarrollo de esta aplicación se puso en juego varios de los conceptos aprendidos en los artículos del blog xCSw sobre el lenguaje de programación C# y las herramientas relacionadas (Visual Studio 2013, SandCastle, &c.) Se incluyó demostración de los resultados: código fuente, documentación, proyectos en ambos lenguajes, vídeo de uso de aplicación.

10. Glosario


  • C#
  • CDT
  • Cuenta Bancaria
  • Cuenta corriente
  • Cuenta de ahorros
  • Java
  • Simulación
  • Simulador bancario

11. Literatura & Enlaces

[1]: Cupi2 - http://cupi2.uniandes.edu.co/sitio/
[2]: - Ingeniería de Sistemas y Computación - http://sistemas.uniandes.edu.co/main/
[3]: Universidad de los Andes - Colombia - http://www.uniandes.edu.co/
[4]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/simulador-bancario
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/simulador-bancario/requerimientos-1626
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/simulador-bancario/modeloconceptual-n1simuladorbancario
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/simulador-bancario/interfaz-n1simuladorbancario


J

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.