Tabla de Contenido
0. Introducción1. Enunciado
1.1 Interfaz gráfica de usuario (versión previa en Java)
2. Requerimientos
2.1 R1: Guardar una moneda de una denominación
2.2 R2: Contar cuántas monedas hay en la alcancía de cada denominación
2.3 R3: Calcular el total de dinero ahorrado
2.4 R4: Romper la alcancía
2.5 R5: Crear una nueva alcancí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 Fuente 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
Vamos
a crear (traducir [Java a C#]] una aplicación que permite ahorrar monedas de diferentes denominaciones. En cualquier momento
podremos romper el marranito para
extraer nuestros preciados ahorros. Aprenderemos nuevos conceptos de controles
de interfaz de usuario, como por ejemplo, la interacción de imágenes como
objetos de selección (las diferentes denominaciones de moneda) y la pulsación
sobre una imagen que representa el objeto de rompimiento de la alcancía. Ante
todo, progresaremos en nuestro avance en el dominio del lenguaje de
programación C#, el uso de herramientas de desarrollo (Visual Studio 2013, en
especial); además la promoción de las tecnologías de desarrollo Microsoft (lenguaje
de programación, IDE, Framework .NET, entre otras más). ¡Bienvenidos!
[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. El texto en cursiva indica un extracto literal de la fuente; en caso contrario, se dicta explícitamente.]
1. Enunciado
Este es el enunciado del problema a resolver (original en [4]):
En la alcancía es posible guardar monedas de las siguientes denominaciones:
- $20
- $50
- $100
- $200
- $500
No se guardan ni billetes ni monedas de otras denominaciones.
Al dueño de la alcancía le parece muy útil conocer cuánto tiene en la alcancía sin necesidad de romperla, es más, él quiere conocer cuántas monedas tiene en cada denominación para así romper la alcancía sólo cuando quiera disponer de todo su dinero ahorrado.
Se quiere un programa que ilustre el manejo de la alcancía. El programa debe permitir:
- Agregar una moneda de una de las denominaciones indicadas.
- Contar cuántas monedas tiene de cada denominación.
- Calcular el total de dinero ahorrado
- Romper la alcancía vaciando su contenido.
- Comenzar una nueva alcancía.
1.1 Interfaz gráfica de usuario (versión previa en Java)
En la Figura 1 se muestra la edición de la aplicación Alcancía creada en el lenguaje de programación Java.
Figura 1. Alcancía (en Java). |
2. Requerimientos
A continuación se enumeran todos los requerimientos funcionales exigidos en el enunciado del problema (fuente [5]):
2.1 R1: Guardar una moneda de una denominación dada
Código: R1
Descripción: Guardar una moneda de una denominación dada.
Resumen: Se adiciona a la alcancía una moneda de alguna de las denominaciones establecidas. No se puede guardar monedas de denominaciones diferentes. La alcancía no puede estar rota.
Entradas: Denominación de la moneda:
- $20
- $50
- $100
- $200
- $500
Resultados: La alcancía tiene una moneda más de la denominación indicada.
2.2 R2: Contar cuántas monedas hay en la alcancía de cada denominación
Código: R2
Descripción: Contar cuántas monedas hay en la alcancía de cada de denominación.
Resumen: Decir cuántas monedas hay de cada una de las denominaciones.
Entradas: «Ninguna»
Resultados:
- Total de monedas de $20
- Total de monedas de $50
- Total de monedas de $100
- Total de monedas de $200
- Total de monedas de $500
2.3 R3: Calcular el total de dinero ahorrado
Código: R3
Descripción: Calcular el total de dinero ahorrado
Resumen: Sumar todo el dinero que hay en la alcancía.
Entradas: «Ninguna»
Resultados: Total de dinero ahorrado.
2.4 R4: Romper la alcancía
Código: R4
Descripción: Romper la alcancía.
Resumen: Se rompe la alcancía y se retiran todas las monedas.
Entradas: «Ninguna»
Resultados: La alcancía queda rota y vacía.
2.5 R5: Crear una nueva alcancía
Código: R5
Descripción: Crear una nueva alcancía.
Resumen: Una nueva alcancía es creada y no tiene monedas en su interior.
Entradas: «Ninguna»
Resultados: Se comienza una nueva alcancía.
3. Modelo del Mundo del Problema
En el diagrama UML de la Figura 2 se esquematiza el modelo del mundo del problema para la aplicación Alcancia. (En la sección 9 se resaltan los cambios realizados sobre el modelo original hallado en [6])
Figura 2. Modelo del mundo del problema. |
4. Modelo de la Interfaz Gráfica de Usuario
En la Figura 3 se esquematiza el diagrama UML con los artefactos que componen la interfaz gráfica de usuario. (Este modelo es una adaptación de la versión original [7] a los artefactos lógicos que provee Microsoft .NET Framework para la composición de interfaces gráficas de usuario.)
Figura 3. Modelo interfaz gráfica de usuario. |
5. Modelo de Pruebas Unitarias
El diagrama UML esquematizado en la Figura 4 esquematiza el modelo de pruebas unitarias de la aplicación Alcancía.
Figura 4. Modelo pruebas unitarias. |
6. Documentación del Código Fuente de la Aplicación
En este enlace se puede descargar la documentación (formato CHM) del código fuente de la aplicación.
7. Exploración de Código Fuente C#
7.1 Modelo
7.2 GUI
8. Recursos
8.1 Java
Conjunto de recursos del proyecto en su versión original:
- Visitar: http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia
- Demo: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/hojasDeTrabajo/n1_alcancia/demoAlcancia.zip
- Archivo ZIP: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/hojasDeTrabajo/n1_alcancia/n1_alcancia.zip
- Examen de laboratorio: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/ejemplos/examenes/n1_alcancia_examen_laboratorio.doc
8.2 C#
Enlace de descarga de archivo ZIP con la solución y los proyectos integrales.
8.3 Aplicación en ejecución
8.3.1 Capturas de pantalla
Figura 5. Aplicación Alcancía en C#. |
9. Cambios
Lista de cambios efectuados sobre el modelo del mundo problema:
- En la clase Alcancia se removieron los siguientes métodos a razón de simplificar y crear una representación más intuitiva y natural:
- inicializar()
- agregarMoneda100()
- agregarMoneda20()
- agregarMoneda200()
- agregarMoneda50()
- agregarMoneda500()
- darEstadoAlcancia()
- darNumeroMonedas100()
- darNumeroMonedas20()
- darNumeroMonedas200()
- darNumeroMonedas50()
- darNumeroMonedas500()
- estaRota()
- Los métodos anteriores se reemplazaron o convergieron en propiedades nuevos métodos. (En la Figura 2 se esquematiza la nueva representación de la clase Alcancia.)
- Se agregó la enumeración Moneda para representar las diferentes denominaciones de las monedas. Esta enumeración facilita tener un conjunto de constantes que corresponden con las monedas que se pueden poner dentro de la alcancía; se restringe además, el intento de color monedas de otras denominaciones).
10. Conclusiones
Creamos (traducimos) una aplicación que permite poner monedas en una alcancía, además de permitir romperla cuando queremos invertir nuestros ahorros. Este ejercicio de traducción resultó muy interesante: se usaron nuevas características de composición de interfaces gráficas como la parametrización de controles RadioButton como botones de selección exclusivo para las monedas. Se agregó además un nuevo estado de imagen a la alcancía: la alcancía cuando no tiene monedas y está rota, debe mostrarse vacía. Con esta traducción finalizamos el Nivel 1, por lo tanto la siguiente semana pasaremos al Nivel 2 con la traducción de una aplicación que permite manejar una tienda pequeña.
Glosario
- Alcancía
- Diagrama
- Enumeración
- GUI
- Modelo
- Pruebas unitarias
- UML
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/alcancia
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia/requerimientos-2042
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia/modeloconceptual-n1alcancia
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia/interfaz-n1alcancia
[8]: Bank, Banking, Cash, Cheapest, Coin, Currency, Deal, Dollar, Dollars, Economy, Finance, Financial, Money, Moneybox, Offer, Payment, Pig, Piggy, Price, Save, Saving icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/131957/bank_banking_cash_cheapest_coin_currency_deal_dollar_dollars_economy_finance_financial_money_moneybox_offer_payment_pig_piggy_price_save_saving_icon#size=48
[9]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia/pruebas-n1alcancia
[10]: JavaDoc - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia/javadoc-n1alcancia
[11]: Visualización Código - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/alcancia/visualizacion-codigo
J
Y el ejecuable?
ResponderEliminar