Tabla de Contenido
0. Introducción1. 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:
- Votar por el candidato de su elección,
- Calcular el costo de campaña de un candidato dependiendo de la influencia publicitaria de cada voto,
- Vaciar todas las urnas de la votación,
- Conocer el número total de votos,
- Porcentaje de votos obtenidos por cada candidato, y
- 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.
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ón: Mostrar 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.
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.
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.
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
Figura 5. Conjunto de entidades del modelo.
Archivo de código fuente MedioPublicitario.cs [enlace alternativo]:
Archivo de código fuente Urna.cs [enlace alternativo]:
Archivo de código fuente Urna.cs [enlace alternativo]:
7.2 GUI
Figura 6. Controles integrales de la GUI de la aplicación.
[Nota: Sólo se muestra el código fuente
8. Recursos
8.1 Java
A continuación el conjunto de enlaces a los contenidos originales del proyecto desarrollado en Java:
- Visitar: http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/elecciones
- Archivo ZIP: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/ejemplos/n1_elecciones/n1_elecciones.zip
- Examen escrito: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/ejemplos/examenes/n1_elecciones_examen_escrito.doc
- Examen laboratorio: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/ejemplos/examenes/n1_elecciones_examen_laboratorio.doc
8.2 C#
Enlace de descarga de la solución con los proyectos de aplicación y de pruebas.
8.3 Aplicación en ejecución
Figura 7. Elecciones Cupi2 en C#.
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
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.