jueves, 2 de julio de 2015

APO1 - Nivel 3 en C#: El Avión

Índice

0. Introducción
1. Enunciado
1.1. Vista previa de la aplicación (en Java)
2. Requerimientos
2.1 R1: Asignar una silla a un pasajero
2.2 R2: Desasignar una silla a un pasajero
2.3 R3: Conocer los datos de reserva de un pasajero
2.4 R4: Conocer el porcentaje de ocupación de la avión
3. Modelo del Mundo del Problema
4. Modelo de la Interfaz Gráfica de Usuario
5. Modelo de Pruebas Unitarias
6. Exploración de código
6.1 Modelo
6.2 GUI
7. Recursos
7.1 Java
7.2 C#
7.2.1 Solución y proyectos
7.2.2 Documentación del código fuente de la aplicación
7.2.3 Aplicación en ejecución
7.2.3.1 Capturas de pantalla
7.2.3.2 Vídeo
8. Cambios
9. Conclusiones
10. Glosario
11. Literatura & Enlaces

0. Introducción

Empezamos con el segundo ejercicio de traducción -Java a C#- del tercer nivel del proyecto Cupi2 del Departamento de Ingeniería de Sistemas y Computación de la Universidad de los Andes. En esta oportunidad crearemos una aplicación utilizando las herramientas de Microsoft .NET Framework (principalmente el lenguaje de programación C# y el entorno de desarrollo integrado Visual Studio 2013); esta aplicación consistirá en un manejador de reservas de una aerolínea. Permitirá clasificar las reservas por clases ejecutiva y económica. La atención se realizará de acuerdo al orden de llegada de los clientes del servicio. Por otra parte vale resaltar dos de los objetivos pedagógicos de este ejercicio: uso de estructuras contenedoras de tamaño fijo (arreglos) y estructuras de tamaño variable (listas).


[Nota Importante: Este proyecto, Cupi2.NET, está basado en el proyecto Cupi2 del Departamento de Ingeniería de Sistemas y Computación de la Universidad de los Andes. El uso de este material intelectual es única y expresamente para la difusión de conocimiento de tecnologías de desarrollo y las metodologías inherentes a esta disciplina.]

1. Enunciado

Descripción del planteamiento de la aplicación El Avión a construir. (La versión original se puede encontrar [4].)


El avión de una aerolínea tiene un número fijo de 50 sillas. De ellas 8 son de clase ejecutiva, mientras que el resto son de clase económica. Las sillas ejecutivas se acomodan en filas de cuatro sillas separadas en el medio por el corredor. Las sillas económicas, en cambio, se acomodan en filas de seis sillas, tres a cada lado del corredor. El esquema del avión es el siguiente:
Esquema del avión
Figura 1. Esquema del avión [4].
Cuando un pasajero llega a solicitar una silla, éste indica sus datos personales y sus preferencias con respecto a la posición de la silla. Los datos del pasajero que le interesan a la aerolínea son:
  • Nombre de la persona
  • Cédula de la persona
Para dar la ubicación deseada, el pasajero indica la clase y la ubicación, que puede ser:
  • Ejecutivas
    • Ventana
    • Pasillo
  • Económicas:
    • Ventana
    • Pasillo
    • Centro
La asignación de la silla en el avión se hace en orden de llegada, tomando en cuenta las preferencias anteriores.

1.1 Vista previa de la aplicación (en Java)

En la Figura 2 se muestra la interfaz gráfica de usuario de la aplicación desarrollada en lenguaje de programación Java.
El Avión
Figura 2. El Avión  [4].

2. Requerimientos

A continuación los requerimientos funcionales a implementar mediante el lenguaje de programación en C#.

2.1 R1: Asignar una silla a un pasajero

Código: R1

Descripción: Asignar una silla a un pasajero

Resumen: Se requiere asignar una silla según las preferencias del pasajero, estas son clase ejecutiva o económica, y ubicación: ventana, centro o pasillo. En la asignación se debe registrar los datos del pasajero.

Entradas:
  • Nombre: Nombre del pasajero
  • Cédula: Cédula del pasajero
  • Clase: Clase de la silla
  • Ubicación: Ubicación de la silla
Resultados:
  • Asignación de silla: Si existe una silla con las características de clase y ubicación solicitadas por el pasajero, ésta queda asignada a dicho pasajero.
Manejo de errores:
  • Error 1:
    • Situación de error: Si no hay sillas disponibles con las características del usuario.
    • Acción: Se presenta un mensaje informando la falta.
  • Error 2:
    • Situación de error: Si el usuario ya tiene asignada una silla.
    • Acción: No se permite la asignación en una nueva silla y se informa el motivo.

2.2 R2: Desasignar una silla a un pasajero

Código: R2

Descripción: Desasignar una silla a un pasajero

Resumen: Dada la cédula de un pasajero se elimina su reservación de silla.

Entradas:
  • Cédula: Cédula del pasajero
Resultados:
  • Desasignación de silla
Manejo de errores:
  • Error 1:
    • Situación de error: Si el pasajero no tenía ninguna silla asignada.
    • Acción: Se presenta un mensaje indicando que el pasajero no tiene silla.

2.3 R3: Conocer los datos de reserva de un pasajero

Código: R3

Descripción: Conocer los datos de reserva de un pasajero

Resumen: Dada la cédula de un pasajero, si éste tiene reserva se presentan los datos de su reservación.

Entradas:
  • Cédula: Cédula del pasajero
Resultados:
  • Nombre: Nombre del pasajero
  • Cédula: Cédula del pasajero
  • Silla: Número de silla
  • Clase: Clase de la silla
  • Ubicación: Ubicación de la silla
Manejo de errores:
  • Error 1:
    • Situación de error: Si el pasajero no tenía ninguna silla asignada.
    • Acción: Se presenta un mensaje indicando que el pasajero no tiene ninguna asignación.

2.4 R4: Conocer el porcentaje de ocupación del avión

Código: R4

Descripción: Conocer el porcentaje de ocupación del avión

Resumen: A partir del número de sillas asignadas versus el número de sillas disponibles en el avión, presentar el porcentaje de ocupación del avión.

Entradas:
  • Estado del avión: Sillas asignadas y por asignar del avión.
Resultados:
  • Porcentaje: Porcentaje de ocupación del avión.

3. Modelo del Mundo del Problema


En la Figura 3 se presenta el diagrama UML con la descripción visual de las entidades y enumeraciones que integral el modelo del mundo del problema (dominio). (Original en [7].)
APO1 - Nivel 3 - El Avión - Modelo del mundo del problema
Figura 3. Modelo del mundo del problema.

4. Modelo de la Intefaz Gráfica de Usuario (GUI)

En la Figura 4 se presenta el diagrama UML con los componentes integrales de la interfaz gráfica de usuario. (Original en [8].)
APO1 - Nivel 3 - El Avión - Modelo de la interfaz gráfica de usuario
Figura 5. Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias

El diagrama UML (Figura 6) describe el modelo de las pruebas unitarias de validación del comportamiento y estado de objetos del mundo del problema (dominio). (Original en [9].)
APO1 - Nivel 3 - El Avión - Modelo de pruebas unitarias
Figura 6. Modelo de pruebas untiarias.

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

6.2 Modelo
Modelo

Archivo C# Avion.cs [Enlace alternativo]:


Archivo C# Clase.cs [Enlace alternativo]:


Archivo C# Pasajero.cs [Enlace alternativo]:


Archivo Silla.cs [Enlace alternativo]:


Archivo UbicacionSilla.cs [Enlace alternativo]:



6.2 GUI
APO1 - Nivel 3 - El Avión - GUI


Archivo C# ControlAvion.cs [Enlace alternativo]:


Archivo C# ControlSillaGrafica.cs [Enlace alternativo]:


Archivo C# DialogoBuscarPasajero.cs [Enlace alternativo]:


Archivo DialogoDetallesPasajero.cs [Enlace alternativo]:


Archivo DialogoEliminarPasajero.cs [Enlace alternativo]:


Archivo C# DialogoRegistrarPasajero.cs [Enlace alternativo]:


Archivo C# Principal.cs [Enlace alternativo]:



7. Recursos

7.1 Java

Recursos del proyecto en su versión orginal (lenguaje de programación Java):

7.2 C#

7.2.1 Solución y proyectos

Enlaces de descarga de archivos ZIP con la solución y los proyectos integrales (solución C# y pruebas unitarias) de la aplicación:

7.2.2 Documentación de código fuente de la aplicación

Enlace de descarga de la documentación (formato CHM) del código fuente C# de la aplicación.

7.2.3 Aplicación en ejecución

7.2.3.1 Capturas de pantalla
APO 1 - NIvel 3 - El Avión  - (Demo Aplicación)
Figura 7. El Avión en C#.
7.2.3.2 Demostración

8. Cambios

Cambios en el diseño de El Avión:
  • Agregación de las enumeraciones:
    • `Clase`, y 
    • `UbicacionSilla`

9. Conclusiones

En esta oportunidad de traducción de aplicación del proyecto Cupi2 (Universidad de Los Andes), El Avión, se realizaron adaptaciones con elementos de programados como las enumeraciones. Por otro lado, también se empleó varios de los elementos de programa (e.g., propiedades, organizadores de código (regiones)) propios del lenguaje de programación C#; esto con el propósito de darle sentido y propósito a esta tarea de traducción. Respecto a la creación de interfaces de usuario, se procedió a la creación de controles personalizados (i.e., `ControlSillaGrafica`, `ControlAvion`) para la composición de la interfaz ilustrada en la Figura 7.

10. Glosario

  • Clase
  • Control personalizado
  • Diagrama
  • Enumeración
  • GUI
  • Modelo
  • Mundo
  • UML

11. 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]: El Avión - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion
[5]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion/enunciado-1698
[6]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion/requerimientos-1699
[7]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion/modeloconceptual-n3avion
[8]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion/interfaz-n3avion
[9]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion/pruebas-n3avion
J

No hay comentarios:

Publicar un comentario

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