lunes, 16 de junio de 2014

APO1 - Nivel 1 en C#: La Encuesta

Tabla de Contenido

0. Introducción
1. Enunaciado
1.1 Interfaz gráfica de usuario (versión previa)
2. Requerimientos Funcionales
2.1 R1: Agregar una nueva opinión
2.2 R2: Informar resultados totales
2.2 R3: Informar el resultado parcial de la encuesta
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
9. Cambios
10. Conclusiones
11. Glosario
12. Literatura & Enlaces

0. Introducción

En esta traducción (Java a C#) de los ejercicios de los niveles del proyecto Cupi2 de la Universidad de los Andes (Colombia) desarrollaremos una aplicación para la administración de la información de una encuesta. La aplicación permitirá seleccionar rangos de edad, estado civil y el grado numérico de opinión de la persona encuestada. Igualmente, facilitará acceso a los resultados de las encuestas por rangos de edad y el estado civil de la persona.


[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

Enunciado del problema a resolver (original en [4]):

Se quiere construir un programa para manejar los resultados de una encuesta de opinión. En la encuesta se dividieron las personas en tres rangos de edad:
  1. Menos de 18 años
  2. Entre 18 y 55 años
  3. Más de 55 años
La encuesta consiste en una única pregunta, en la cual se le pide a la persona que califica la calidad de un curso dando un valor entre 0 y 10. En el momento de hacer la pregunta, la persona debe informar si es soltera o casada. El programa debe permitir agregar una nueva opinión a la encuesta. Esto es, debe permitir que se añada una nueva persona en un rango de edad (por ejemplo en el rango 2), que dé una calificación al curso (por ejemplo 4) y que dice si es casada o soltera.


El programa debe informar el resultado total de la encuesta. Esto es, debe promediar todas las notas dadas y presentar el resultado en pantalla. También debe ser capaz de informar valores parciales de la encuesta. En este caso debe especificar un rango de edad y un estado civil. El programa presenta por pantalla el promedio de las calificaciones del curso dadas por todas las personas que cumplen el perfil pedido. Puede suponer que en el momento de calcular los resultados hay por lo menos una persona de cada perfil.

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

En la Figura 1 se muestra la edición del programa de Encuesta desarrollado en Java (Encuesta 1.0).
La Encuesta 1.0
Figura 1. La Encuesta 1.0.

2. Requerimientos

A continuación el conjunto de requerimientos funcionales (fuente [5]) de la aplicación Encuesta 1.0.

2.1 R1: Agregar una nueva opinión

Código: R1

Nombre: Agregar una nueva opinión.

Resumen: Agrega una nueva opinión a la encuesta.

Entradas:
  • El rango de edad de la persona que va a participar en la encuesta.
  • El estado civil de la persona que va a participar en la encuesta.
  • Su opinión (entre 0 y 10).
Resultados: Se agregó una nueva opinión a la encuesta.

2.2 R2: Informar resultados totales

Código: R2

Nombre: Informar resultados totales

Resumen: Informar los resultados totales teniendo en cuenta a todos los participantes.

Entradas: «Ninguna»

Resultados: El promedio de las opiniones recibidas y el número total de encuestados.

2.3 R3: Informar el valor parcial de la encuesta

Código: R3

Nombre: Informar el valor parcial de la encuesta.

Resumen: Informa cuál es es el promedio de opinión de la encuesta para cierto grupo de personas según su estado civil y rango de edad.

Entradas:
  • El rango de edad del grupo del cual se quiere saber el promedio de opinión.
  • Estado civil del grupo del cual se quiere saber el promedio de opinión.
ResultadosPromedio de opinión del grupo especificado de personas.

3. Modelo del Mundo del Problema


En el diagrama UML mostrado sobre la Figura 2 se presenta el modelo del mundo del problema (versión modificada y adaptada {original en [6]} a las construcciones programáticas disponibles en C#) para la aplicación Encuesta.
Modelo del mundo del problema
Figura 2. Modelo del mundo del problema.

4. Modelo de la Interfaz Gráfica de Usuario


En el diagrama UML que se muestra en la Figura 3 describe los artefactos que componen la interfaz gráfica de la aplicación.
Modelo de interfaz gráfica de usuario
Figura 3. Modelo de interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias

En la Figura 5 se muestra el diagrama UML con el modelo de las pruebas unitarias hechas a los artefactos del modelo del mundo del problema.
Modelo pruebas unitarias
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
Conjunto de entidades del modelo.
Figura 5. Conjunto de entidades del modelo.

Archivo de código fuente Encuesta.cs [enlace alternativo]:
Archivo de código fuente EstadoCivil.cs [enlace alternativo]:
Archivo de código fuente RangoEncuesta.cs [enlace alternativo]:

7.2 GUI
Conjunto de controles de la GUI
Figura 6. Conjunto de controles de la GUI.

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

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

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

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


8. Recursos

8.1 Java

Conjunto de recursos del proyecto original desarrollado en Java:

8.2 C#

Enlace de descarga con la solución y los proyectos de aplicación y pruebas unitarias.

8.3 Aplicación en ejecución

8.3.1 Capturas de pantalla
Aplicación Encuesta en C#
Figura 7. Aplicación Encuesta en C#.

Aplicación Encuesta en C# y Java
Figura 8. Aplicación Encuesta en C#.

8.3.2 Vídeo

9. Cambios

Lista de cambios realizados sobre el modelo del mundo del problema:
  • En la clase Encuesta se removieron los siguientes métodos a razón de simplificar y crear un modelo más intuitivo:
    • inicializar
    • agregarOpinionRango1Soltero(int)
    • agregarOpinionRango2Soltero(int)
    • agregarOpinionRango3Soltero(int)
    • agregarOpinionRango1Casado(int)
    • agregarOpinionRango2Casado(int)
    • agregarOpinionRango3Casado(int)
    • darResultadosRango1Casados()
    • darResultadosRango2Casados()
    • darResultadosRango3Casados()
    • darResultadosRango1Solteros()
    • darResultadosRango2Solteros()
    • darResultadosRango3Solteros()
    • darPromedioCasados()
    • darPromedioSolteros
  • De la clase RangoEncuesta se removieron los siguientes métodos:
    • inicializar()
    • agregarOpinionSoltero(int)
    • agregarOpinionCasado(int)
    • darPromedioCasados()
    • darPromedioSolteros()
    • darTotalOpinionCasados
    • darTotalOpinionSolteros
En el diagrama UML del modelo del mundo del programa de la Figura 2 presento la propuesta en C#.

10. Conclusiones

En el desarrollo de esta traducción se logró simplificar el modelo original a una representación más simple en términos de número y lógica de los elementos de programa básicos (métodos, constructores, etc.). En cuanto a la interfaz gráfica de usuario los cambios son menores. En la próxima traducción pasaremos a C# una aplicación para la simulación de una alcancía.

11. Glosario

  • Encuesta
  • GUI
  • Interfaz gráfica de usuario
  • Modelo
  • UML

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/encuesta
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/encuesta/requerimientos-2032
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/encuesta/modeloconceptual-n1encuesta
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/encuesta/interfaz-n1encuesta
[8]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/encuesta/pruebas-n1encuesta
[9]: JavaDoc - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/encuesta/javadoc-n1encuesta
[10]: Visualización de código - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-1/encuesta/visualizacion-codigo


S

No hay comentarios:

Publicar un comentario

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