miércoles, 16 de julio de 2014

APO1 - Nivel 2 en C#: Juegos Celular

Tabla de Contenido

0. Introducción
1. Enunciado
1.1 Interfaz gráfica de usuario (versión previa en Java)
2. Requerimientos
2.1 R1: Vender juego
2.2 R2: Comprar juego
2.3 R3: Conocer juego más vendido
2.4 R4: Seleccionar juego más apropiado para un modelo de celular
2.5 R5: Consultar descuentos para un pedido en volumen
3. Modelo del Mundo del Problema
4. Modelo de la Interfaz Gráfica de Usuario (GUI)
5. Modelo de Pruebas Unitarias
6. Exploración de Código Fuente C#
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

En este nuevo ejercicio de traducción del Nivel 2 de algorítmica y programación orientada a objetos del proyecto Cupi2 de la Universidad de los Andes (Colombia), crearemos una tienda de venta de videojuegos para teléfonos celulares. La tienda deberá poseer las capacidades para la compra y venta de estos productos; además de búsqueda de un juego en particular, calcular el juego más vendido, e inclusive realizar descuentos por volumen. La interfaz gráfica de usuario debe facilitar todas las operaciones mencionadas anteriormente para hacer de la empresa más ágil y eficiente en sus procesos de negocio.


[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

A continuación se describe el enunciado propuesto para el desarrollo de una aplicación de comercialización de los videojuegos para teléfonos celulares. (El enunciado original se haya en [4].)

Una empresa de juegos para celular requiere un programa para comercializar sus productos (juegos). La empresa se especializa en comercializar hasta 4 juegos y cuenta con la posibilidad de compra y venta de los mismos.

Cada juego se caracteriza por tener:
  • Nombre
  • Categoría a la que pertenece. Puede ser:
    • Aventar
    • Acción
    • Velocidad
    • Deporte
  • Tamaño en KB
  • Precio
El programa debe permitir al dueño de la empresa realizar las siguientes acciones:
  1. Seleccionar el juego más apropiado para un modelo de celular, dados el presupuesto y la capacidad en memoria del celular.
  2. Comprar cierta cantidad de unidades de un juego, para ser almacenadas en la bodega.
  3. Vender a un cliente cierta cantidad de unidades de un juego.
  4. Consultar el juego más vendido.
Adicionalmente, el programa debe permitir calcular posibles descuentos para clientes que compran juegos en volumen (otras empresas o distribuidores de juegos). En este caso, debido a las políticas de ventas y mercadeo de la empresa, las promociones vigentes son las siguientes:
  1. Si el comprador solicita al menos 25 juegos de acción sin importar la cantidad de juegos que solicite de otra categorías, se dará el 15% de descuento sobre el valor total del pedido.
  2. Si el comprador compra al menos 32 juegos de AztecWarrior, sin importar la cantidad de otros juegos que solicite, o mínimo 12 juegos de deportes y 15 de velocidad se dará el 10% de descuento sobre el valor total del pedido.
Nota: Si en la tienda no hay unidades disponibles de algún producto, este debe ignorarse en los cálculos.

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


En la Figura 1 se muestra la interfaz gráfica de usuario para el programa escrito en lenguaje de programación Java [6].
CUPI2 Cell Games
Figura 1. CUPI2 Cell Games (en lenguaje de programación Java).

2. Requerimientos

Lista de requerimientos funcionales para la aplicación CUPI2 Cell Games (listado original en [5]).

2.1 R1: Vender juego

Código: R1

Descripción: Vender Juego

Resumen: Permite realizar la venta de una cantidad dada de un juego específico.

Entradas:
  • Nombre del juego que se va a vender.
  • Cantidad de juegos que se quieren vender.
Resultados: En caso de haber suficiente cantidad de juegos en inventario para realizar la venta, se disminuye el inventario del juego que se vendió en la cantidad especificada. Si la cantidad queda en 0, el juego dejará de estar disponible en la interfaz.

2.2 R2: Comprar juego

Código: R2

Descripción: Comprar Juego

Resumen: Permite realizar la compra de una cantidad dada de un juego específico.

Entradas:
  • Nombre del juego que se va a comprar.
  • Cantidad de juegos que se quieren comprar.
Resultados: La cantidad de juegos en la empresa aumenta en el número especificado en las entradas. Si el juego no estaba disponible, vuelve a estarlo.

2.3 R3: Conocer juego más vendido

Código: R3

Descripción: Conocer juego más vendido.

Resumen: Permite conocer cuál de todos los juegos es el más vendido.

Entradas: «Ninguna»

Resultados: Nombre del juego más vendido.

2.4 R4: Seleccionar juego más apropiado para un modelo de celular

Código: R4

Descripción: Seleccionar juego más apropiado para un modelo de celular.

Resumen: Dependiendo del presupuesto y de la cantidad de memoria del celular especificados se eligen cuáles de los juegos ofrecidos por la empresa son los recomendados.

Entradas:
  • Memoria disponible
  • Presupuesto para el juego
Resultados: Lista de los nombres de los juegos recomendados de acuerdo a las características especificadas.

2.5 R5: Consultar descuentos para un pedido en volumen

Código: R5

Descripción: Consultar descuentos para un pedido en volumen.

Resumen:

Dependido de la cantidad de unidades solicitadas de cada uno de los juegos, se determina  si se aplica un descuento o no.
  1. Si el comprador solicita al menos 25 juegos de acción sin importar la cantidad de juegos que solicite de otra categorías, se dará el 15% de descuento sobre el valor total del pedido.
  2. Si el comprador compra al menos 32 juegos de AztecWarrior, sin importar la cantidad de otros juegos que solicite, o mínimo 12 juegos de deportes y 15 de velocidad se dará el 10% de descuento sobre el valor total del pedido.
Entradas:
  • Cantidad de unidades solicitadas del juego 1.
  • Cantidad de unidades solicitadas del juego 2.
  • Cantidad de unidades solicitadas del juego 3.
  • Cantidad de unidades solicitadas del juego 4.
Resultados: Balance del pedido indicando precio total de la compra, valor del descuento y valor total de la compra con el descuento.

3. Modelo del Mundo del Problema


En la Figura 2 se presenta el diagrama UML que describe el modelo del mundo del problema para la aplicación Juegos Celular. (Versión original en [6].)
Modelo del mundo del problema de la aplicación Juego Celulares.
Figura 2. Modelo del mundo del problema de la aplicación Juego Celulares.

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


En el diagrama de clases de UML de la Figura 3 se esquematiza el modelo con las clases de componentes (e.g., formularios, diálogos, controles) integrales de la interfaz gráfica de usuario. (Original en [9].)
Modelo de la interfaz gráfica de usuario.
Figura 3. Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias

En el diagrama de clases de UML de la Figura 4 se presentan las clases de pruebas unitarias para aplicación. (Original en [10].)
Modelo de pruebas unitarias de la aplicación Juegos Celular.
Figura 4. Modelo de pruebas unitarias de la aplicación Juegos Celular.

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

Clases del modelo del mundo y los componentes de interfaz gráfico concretados en la creación de esta aplicación.

6.1 Modelo
Artefactos físicos del modelo.

6.2 GUI
Artefactos físicos de GUI

7.1 Java

Conjunto de recursos del proyecto en su versión original [11]:

7.2 C#

7.2.1 Solución y proyectos

Enlace de descarga de archivo ZIP con la solución y los proyectos integrales 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ónen ejecución

7.2.3.1 Capturas de pantalla
CUPI2 Cell-Games en C#.
Figura 5. CUPI2 Cell-Games en C#.
CUPI2 Cell-Games en C# y Java
Figura 6. CUPI2 Cell-Games en C# y Java.
7.2.3.2 Vídeo

8. Cambios

Lista de cambios realizados sobre el modelo del mundo del problema de la aplicación Juegos Celular:
  • Creación de la enumeración CategoriaJuego.
  • En la clase Juego se removieron los siguientes métodos, y se agregar propiedades en su lugar:
    • obtenerCantidadActual -> CantidadActual
    • obtenerCategoria -> Categoria
    • obtenerNombre -> Nombre
    • obtenerTamanho -> TamanoKB
  • Los objetos (4) Juego quedarán localizados en un arreglo para facilitar su acceso y manipulación.

9. Conclusiones

Hemos traducido otra de las aplicaciones disponibles en el Nivel 2 del proyecto Cupi2. En esta ocasión, muchos de los elementos han sido actualizados a construcciones propias del lenguaje C#: los métodos obtenerXXX, y establecerXXX, han sido reemplazados por propiedades, las cuales representan acceso y modificación al/del estado del objeto de forma más intuitiva, pues se tratan de atributos que no requieren ser calculados. En cuanto a la interfaz gráfica, se usaron componentes de usuario (UserControl) para representar los lienzos en los que se integran los botones, listas, imágenes, textos, etc. Para la próxima ocasión traduciremos una aplicación que consiste en el juego de triqui (o tic-tac-toe).

Glosario

  • Clase
  • Componente
  • CUPI2
  • Diagrama
  • UML
  • Uniandes
  • Universidad de los Andes

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-2/juegoscelular
[5]: Requerimientos Funcionales - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/juegoscelular/requerimientos-funcionales
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/juegoscelular/modelo-conceptual
[7]: Basic, Frame, Green, Information icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/69709/basic_frame_green_information_icon#size=48
[8]: Iphone, Smartphone icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/71036/iphone_smartphone_icon#size=32
[9]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/juegoscelular/interfaz
[10]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/juegoscelular/pruebas
[11]: Juegos Celular - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda


J

No hay comentarios:

Publicar un comentario

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