Mostrando entradas con la etiqueta Visual Studio. Mostrar todas las entradas
Mostrando entradas con la etiqueta Visual Studio. Mostrar todas las entradas

sábado, 9 de julio de 2016

Receta C# No. 7-2: Almacenar Datos dentro de un Control

Índice

1. Introducción
2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Propiedad Control.Tag
5.2 WinForms
5.2.1 Clase ListView
5.2.2 Clase ListViewItem
5.3 Telerik
5.3.1 Clase RadListView
5.3.2 Clase RadListDataView
5.4 DevExpress
6. Práctica: Almacenamiento de Datos en un Control
7. Conclusiones
8. Literatura & Enlaces

1. Introducción

Asociar datos a un control es una tarea común en la construcción de una interfaz gráfica de usuario. Con esta receta C# el programador explora los conceptos básicos de la función Tag. Esta propiedad, como se explica en más detalle en la sección práctica, consiste en un mecanismo simple y directo para asociar datos a un control. La sección práctica comprende tres implementaciones distintas: WinForms estándar (.NET), elementos de Telerik y DevExpress.

2. Palabras Clave

  • .NET
  • Control
  • Dato
  • DevExpress
  • Información
  • Telerik

3. Problema

Implementar un mecanismo de almacenamiento de datos en un control.

4. Solución

En la jerarquía de herencia de controles visuales se cuenta con la propiedad Tag para asociar datos a un elemento de este tipo.

5. Solución

5.1 Propiedad Control.Tag

Esta propiedad establece o recupera datos de un control. El tipo de dato de esta propiedad es Object; esto quiere decir que instancia de cualquier tipo de dato puede ser asignada.

En el diseñador de Visual Studio esta propiedad se encuentra en la ventana Properties (Propiedades): 
Propiedad Tag en la ventana Properties
Figura 1. Propiedad Tag en la ventana Properties.

5.2 WinForms

5.3.1 Clase ListView

Un objeto de esta clase representa un control de tipo lista para presentar información de objetos en diferentes vistas ("ListView Class", 2016)
  • LargeIcon
  • SmallIcon
  • List
  • Tile

5.3.2 Clase ListViewItem

Este tipo de control representa un elemento integral de ListView ("ListViewItem", 2016). Cuenta, al igual que ListView, con la propiedad Tag.

5.3 Telerik

Estos son los controles sobresalientes usados de esta suite en esta receta.

5.3.1 Clase RadListView

Control que sirve de contenedor de elementos visuales. Es una implementación análoga a System.Windows.Forms.ListView en Telerik.

5.3.2 Clase ListViewDataItem

Esta clase representa un control para la representación de datos en un contenedor del tipo RadListView ("ListViewDataItem Class", 2016).

5.4 DevExpress

[Nota: La implementación en DevExpress utiliza los mismos elementos de programa que se usaron en WinForms.]

6. Práctica: Almacenamiento de Datos en un Control

Estas son las implementaciones de ejemplo bajo WinForms, Telerik y DevExpress.

WinForms

Archivo C# R0702.cs [Enlace alternativo][Enlace alternativo]: 
En las líneas 21-42 se declara el evento OnLoad(EventArgs) en el cual ocurren las siguientes operaciones: 
  • Línea 25: Asegura que la invocación del evento sea correcta.
  • Línea 28: Objeto DirectoryInfo con la información del directorio raíz C:\.
  • Líneas 33-40:
    • Línea 40: Asignación del objeto FileInfo a la propiedad Tag del objeto ListViewItem.
El método lvwContenedorArchivos(object, EventArgs) (líneas 50-57) responde a los eventos de activación de un elemento de la lista ListView.


Esta es una captura de pantalla de la aplicación WinForms en funcionamiento: 
Ejecución receta R0702 [WinForms]
Figura 2. Ejecución receta R0702 [WinForms].

Telerik: 

Archivo C# R0702.cs [Enlace alternativo][Enlace alternativo]: 
En el método OnLoad() se resalta la línea 39: aquí en lugar de crearse un objeto de tipo ListViewItem, como en WinForms nativo, se instancia un objeto de tipo ListViewDataItem. Después, en la línea 45, se asigna a la propiedad Tag un objeto de tipo FileInfo.

Esta es una prueba de ejecución: 
Ejecución receta R0702 [Telerik]
Figura 3. Ejecución receta R0702 [Telerik].


DevExpress

Archivo C# R0702.cs [Enlace alternativo][Enlace alternativo]: 

Esta implementación que cuenta con el uso de controles de DevExpress es análoga a la implementada con los controles de WinForms nativo de Microsoft .NET Framework.


Versión en ejecución: 
Ejecución receta R0702 [DevExpress]
Figura 4. Ejecución receta R0702 [DevExpress].

7. Conclusiones

Quedó demostrado que la propiedad Tag resulta apropiada para la asignación de datos. Esta propiedad es idónea como portador de información en una interfaz gráfica de usuario.


La próxima receta C# también resultará muy interesante: el programador aprenderá a procesar todos los controles en un formulario.

8. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.
Control.Tag Property (System.Windows.Forms) (2016, julio 9). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
ListView Class (System.Windows.Forms) (2016, julio 9). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.forms.listview(v=vs.110).aspx
ListViewItem Class (System.Windows.Forms) (2016, julio 9). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem(v=vs.110).aspx
ListViewDataItem Class (2016, julio 9). Recuperado desde: http://docs.telerik.com/devtools/winforms/api/html/T_Telerik_WinControls_UI_ListViewDataItem.htm
RadListView Class (2016, julio 9). Recuperado desde: http://docs.telerik.com/devtools/winforms/api/html/T_Telerik_WinControls_UI_RadListView.htm


V

domingo, 8 de junio de 2014

APO1 - Nivel 1 en C#: Elecciones Cupi2

Tabla de Contenido

0. Introducción
1. Enunciado
1.1 Interfaz gráfica de usuario (vista previa)
2. Requerimiento Funcionales
2.1 R1: Votar por un candidato
2.2 R2: Mostrar el costo de campaña de un candidato
2.3 R3: Vaciar la urna de votación
2.4 R4: Mostrar el total de votos en la urna
2.5 R5: Mostrar el porcentaje de votos de un candidato
2.6 R6: Mostrar el costo promedio de una campaña.
3. Modelo del Mundo del Problema
4. Modelo de la Interfaz Gráfica de Usuario
5. Modelo de Pruebas Unitarias
6. Documentación del Código de la Aplicación
7. Exploración de Código Fuente C#
7.1 Modelo
7.2 GUI
8. Recursos
8.1 Java
8.2 C#
8.3 Aplicación en ejecución
8.3.1 Capturas de pantalla
8.3.2 Vídeo
9. Cambios
10. Conclusiones
11. Glosario
12. Literatura & Enlaces

0. Introducción

Esta aplicación es parte de la serie de la traducción -Java a C#- de los niveles del curso de Algorítmica y Programación Orientada a Objetos 1 (proyecto Cupi2 - Universidad de los Andes). En esta entrega vamos a desarrollar una aplicación de elección de un candidato a un programa ejecutivo en particular. Nuevamente nos enfrentamos al desarrollo de una interfaz gráfica intuitivo y un modelo del mundo del problema conciso y robusto. (Y por supuesto, el afianzamiento del conocimiento del lenguaje de programación C#.)


[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

Enunciado del problema a resolver (adaptado de [4]):


Se están realizando las elecciones para la presidencia de Cupi2. Para tal cargo se han postulado tres candidatos, los cuales han realizado una intensa campaña publicitaria utilizando los principales medios de comunicación (Internet, radio, y televisión). Se desea conocer el costo de la campaña calculando el retorno de la inversión realizada en publicidad. Para esto, se determinaron los siguientes valores dependiendo del medio que influenció al votante:

  • Voto influenciado por publicidad en Internet: $100
  • Voto influenciado por publicidad en radio: $500
  • Voto influenciado por publicidad en televisión: $1.000
Lo anterior quiere decir que, por cada voto que reciba un candidato influenciado por publicidad en Internet, su costo de campaña se incrementara en $100, del mismo modo por cada voto influenciado por publicidad en radio, su costo de campaña se incrementara en $500, y finalmente, por cada voto influencia por publicidad en televisión, su costo de campaña se incrementar en $1.000.

Las elecciones para la presidencia de Cupi2 requieren una aplicación que les permita:
  1. Votar por el candidato de su elección, 
  2. Calcular el costo de campaña de un candidato dependiendo de la influencia publicitaria de cada voto, 
  3. Vaciar todas las urnas de la votación, 
  4. Conocer el número total de votos,
  5. Porcentaje de votos obtenidos por cada candidato, y 
  6. Costo promedio de campaña en las elecciones Cupi2.

1.1 Interfaz gráfica de usuario (versión previa)


En la Figura 1 se muestra la edición de la interfaz gráfica de la aplicación Elecciones Cupi2 en Java.
Interfaz gráfica de usuario de Elecciones Cupid2 en Java
Figura 1. Interfaz gráfica de usuario de Elecciones Cupid2 en Java.

2. Requerimiento

A continuación el conjunto de requerimientos funcionales (fuente [5]) de la aplicación de Elecciones Cupi2:

2.1 R1: Votar por un candidato

Código: R1

Descripción: Votar por un candidato.

Resumen: Se incrementa un voto al número de votos actuales del candidato. Se debe especificar cuál fue el medio que más influencio a la persona para realizar dicha votación (Internet, radio, o televisión). Dependiendo del medio seleccionado, el candidato recibirá un aumento en el costo de campaña.

Entradas:
  • El número del candidato, siendo opciones válidas candidato 1, 2, o 3.
  • El medio publicitario que influenció en la votación (Internet, radio o televisión).
Resultados:
  • El número total de votos del candidato se incrementó en 1.
  • El costo de campaña del candidato cuyo número se especifica en las entradas se incrementó dependiendo del medio publicitario. Si este fue Internet, se incrementó en $100; si fue radio, incrementó en $500; si fue televisión, se incrementó en $1000.

2.2 R2: Mostrar el costo de campaña de un candidato

Código: R2

Descripción: Mostrar el costo de campaña de un candidato.

Resumen: Se debe informar el costo de campaña de un candidato. El costo de campaña se calcula seg{un el n{umero de votos y la influencia (Internet, radio, o televisión) sobre cada uno de ellos.

Entradas: El número del candidato siendo opciones válidas 1, 2, o 3.

Resultados: Costo de campaña del candidato escogido.

2.3 R3: Vaciar la urna de votación

Código: R3

Descripción: Vaciar la urna de votación

Resumen: Se deben reiniciar los votos y los costos de campaña de todos los candidatos, de tal manera que el número de votos y el costo de campaña queden en cero.

Entradas: «Ninguna»

Resultados:
  • Los votos de los candidatos quedan en cero.
  • Los costos de campaña de los candidatos quedan en cero.

2.4 R4: Mostrar el totol de votos en la urna

Código: R4

Descripción: Mostrar el total de votos en la urna.

Resumen: Se debe informar el total de votos que hay en la urna (la suma dos los votos de cada uno de los candidatos).

Entradas: «Ninguna»

Resultados: Total de votos de la urna.

2.5 R5: Mostrar el porcentaje de votos de un candidato

Código: R5

Descripción: Mostrar el porcentaje de votos de un candidato.

Resumen: Se debe informar el porcentaje de votos obtenido por un candidato, es decir la razón del total de los votos de un candidato y el total de votos en la urna.

Entradas: El número del candidato, siendo opciones válidas 1, 2, ó 3.

Resultados: Porcentaje de votos obtenidos por el candidato sobre todos los votos en la urna.

2.6 R6: Mostar el costo promedio de campaña

Código: R6

DescripciónMostrar el costo promedio de campaña.

Resumen: Se debe informar el promedio del costo de campaña de los tres candidatos, es decir la razón de la sumatoria de los costos de campaña de los candidatos y el número total de candidatos.

Entradas: El número del candidato, siendo opciones válidas candidato 1, 2, o 3.

Resultados: Costo promedio por campaña en las elecciones Cupi2.

3. Modelo del Mundo del Problema


En el diagrama UML de la Figura 2 se muestra las entidades que comprenden el modelo del mundo del problema.
Modelo del mundo del problema
Figura 2. Modelo del mundo del problema.

4. Modelo de la Interfaz Gráfica de Usuario

El diagrama UML mostrado en la Figura 3 describe el modelo de los componentes integrales de la interfaz gráfica de usuario de Elecciones Cupi2.
Modelo de la interfaz gráfica de usuario.
Figura 3. Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias


En la Figura 4 se muestra las clases que integran el modelo de pruebas unitarias.
Modelo de pruebas unitarias
Figura 4. Modelo de pruebas unitarias.

6. Documentación del Código Fuente de la Aplicación

Documentación del código fuente de la solución en formato CHM.

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

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

Archivo de código fuente Candidato.cs [enlace alternativo]:
Archivo de código fuente MedioPublicitario.cs [enlace alternativo]:

Archivo de código fuente Urna.cs [enlace alternativo]:

7.2 GUI
Controles integrales de la GUI de la aplicación.
Figura 6. Controles integrales de la GUI de la aplicación.

[Nota: Sólo se muestra el código fuente 

Archivo de código fuente ControlCandidatos.cs [enlace alternativo]:
Archivo de código fuente ControlExtension.cs [enlace alternativo]:
Archivo de código fuente ControlImagen.cs [enlace alternativo]:
Archivo de código fuente Controlurna.cs [enlace alternativo]:
Archivo de código fuente DialogMedioPublicitario.cs [enlace alternativo]:
Archivo de código fuente Principal.cs [enlace alternativo]:

8. Recursos

8.1 Java

A continuación el conjunto de enlaces a los contenidos originales del proyecto desarrollado en Java:

8.3 Aplicación en ejecución
Elecciones Cupi2 en C#
Figura 7. Elecciones Cupi2 en C#.

 
Elecciones Cupi2 en C# y Java
Figura 8. Elecciones Cupi2 en C# y Java.

8.3.2 Vídeo

9. Cambios

Lista de cambios realizado sobre el modelo del mundo del problema:
  • Agregación de la enumeración `MedioPublicatario` para identificar el medio publicitario que influenció el voto.
  • Los métodos ingresarVotoTelevisionCanditato1, ingresarVotoTelevisionCanditato2, ingresarVotoTelevisionCanditato3, ingresarVotoRadioCandidato1, ingresarVotoRadioCandidato2, ingresarVotoRadioCandidato3, ingresarVotoInternetCandidato1, ingresarVotoInternetCandidato2, e ingresarVotoInternetCandidato3 fueron reemplazados por un único método: IngresarVoto(int numerocandidato, MedioPublicitario medio)
  • Arreglo de objetos Candidato para facilitar las manipulaciones de cálculo de porcentajes, voto, &c.
  • Los métodos darCandidato1, darCandidato2, y darCandidtao3 fueron reemplazados por ObtenerCandidato(int numeroCandidato).

10. Conclusiones

El desarrollo de esta traducción (Java a C#) ha resultado en el afianzamiento de los conceptos esenciales de programación orientada a objetos y algorítmica expuestos en artículos y recetas de este mismo blog. Hemos traducido el modelo original agregando y removiendo algunos elementos programas específicos. La interfaz utiliza controles análogos a los disponibles en el lenguaje de programación Java: UserControl en el lugar de JPanel, por ejemplo. La próxima traducción consistirá en la administración de la información de una encuesta.

11. Glosario

  • Campaña
  • Control
  • Formulario
  • Interfaz
  • GUI
  • Modelo
  • Presidencia
  • Votación

12. Literatura & Enlaces

[1]: Universidad de los Andes - http://www.uniandes.edu.co
[2]: Departamento de Ingeniería de Sistemas y Computación - http://sistemas.uniandes.edu.co
[3]: Proyecto Cupi2 - http://cupi2.uniandes.edu.co/sitio
[4]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones/enunciado
[5]: Requerimientos Funcionales - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones/requerimientos-funcionales
[6]: Basic, Green, Question icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/69755/basic_green_question_icon#size=48
[7]: Accept, Correct, Done, Good, Green, Mark, Ok, Ready, Sign, Success, Tick, Valid, Validation, Verify, Vote, Yes icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/105257/accept_correct_done_good_green_mark_ok_ready_sign_success_tick_valid_validation_verify_vote_yes_icon#size=48
[8]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones/modelo-conceptual
[9]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones/interfaz
[10]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones/pruebas
[11]: Visualización de Código - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones/visualizacion-de-codigo


J

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