martes, 14 de julio de 2015

APO1 - Nivel 3 - Tienda de Libros

Índice

0. Introducción
1. Enunciado del Problema
1. Enunciado
1.2 Interfaz gráfica (versión en Java)
2. Requerimientos
2.1 R1 - Adicionar un nuevo libro al catálogo
2.2 R2 - Agregar un libro al carro de compras del cliente
2.3 R3 - Retirar un libro del carro de compras+
3. Modelo del Mundo del Problema
4. Modelo de la Interfaz Gráfica de Usuario
5. Modelo de Pruebas Unitarias
6. Repositorio: Exploración de Código 
6.1 Modelo
6.2 GUI
7. Recuros
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 pantall
7.2.3.2 Vídeo
8. Cambios
9. Conclusiones
10. Glosario
11. Literatura & Enlaces

0. Introducción

En esta ocasión crearemos una aplicación de administración de una tienda de libros. Aplicaremos la metodología del proyecto Cupi2 del Departamento de Ingeniería de Sistemas y Computación de la Universidad de Los Andes; metodología que nos ayudará a entender, fortalecer, afianzar y dominar el proceso de desarrollo de aplicaciones basado en el enfoque de análisis, diseño e implementación orientado a objetos. En particular, esta aplicación permitirá al usuario la adición de libros disponibles a la venta, y al mismo tiempo realizar pedidos especificando datos básicos de la compra. Estas operaciones quedarán modeladas en un dominio que comprenderá los objetos y sus interacciones para lograr los objetivos de servicio de la aplicación a sus usuarios.


[Nota importante: Los materiales aquí usados del proyecto Cupi2 y que constituyen la base para el proceso de traducción desde la plataforma Java a la plataforma .NET, se mantienen como son.]

1. Enunciado del Problema

Enunciado del problema para la Tienda de Libros: (La versión original se halla en [5].)

1.1 Enunciado

Se quiere construir una aplicación para una tienda de libros. La tienda tiene un catálogo o colección de libros que ofrece para la venta. Los libros tienen un ISBN que los identifica de manera única, un título y un precio de venta. La tienda tiene una disponibilidad ilimitada de los libros que ofrece.


Cuando un cliente llega a la tienda a comprar libros, utiliza un carrito de compras. En el carrito de compras adiciona los libros que quiere comprar. El cliente puede llevar más de un ejemplar de cada libro. Al revisar la cuenta, el cliente debe poder ver el subtotal de cada libro según la cantidad de ejemplares que lleve de él, y el total de toda la compra que es igual a la suma de los subtotales.

1.2 Interfaz gráfica (versión en Java)

En la Figura 2 se muestra la versión de la aplicación construida en el lenguaje de programación Java.
Tienda de Libros - GUI en Java
Figura 1. Tienda de Libros - GUI en Java.

2. Requerimientos

A continuación se enumeran y se describen los requerimientos a implementar en el lenguaje de programación C#.

2.1 R1 - Adicionar un nuevo libro al catálogo

Código: R1

Nombre: Adicionar un nuevo libro al catálogo

Descripción: Se requiere adicionar un nuevo libro al catálogo que maneja la tienda. Para adicionar un libro debe definirse toda la información básica del libro.

Entradas:
  • Título del libro
  • ISBN del libro
  • Precio del libro
Resultados:
  • El catálogo queda actualizado con el nuevo libro adicionado.

2.2 R2 - Agregar un libro al carro de compras del cliente

Código: R2

Nombre: Agregar un libro al carro de compras del cliente.

Descripción: Cuando un cliente está en la librería puede ir seleccionando los libros que desea llevar y las cantidades para cada uno de ellos. Cuando el cliente selecciona un libro y su cantidad se adiciona un pedido al carro de compras que va conteniendo los ítems (libro-cantidad) de su compra.

Entradas:
  • Libro que desea el cliente
  • Cantidad de libros que desea el cliente
Resultados:
  • El carro de compras con el nuevo ítem de compra adicionado
  • El subtotal del ítem según su cantidad
  • El total de compra que se lelva en el carro

2.3 R3 - Retirar un libro del carro de compra

Código: R3

Nombre: Retirar un libro del carro de compra

Descripción: El cliente requiere eliminar del carro la compra de todos los ejemplares de un libro.

Resultados:
  • El carro de compras queda actualizado sin el libro del ISBN dado.

3. Modelo del Mundo del Problema

En la Figura 2 se describe el diagrama UML del modelo del mundo del problema: entidades y sus relacionales. (Original en [7].)
Modelo del mundo del problema
Figura 2. Modelo del mundo del problema.

4. Modelo de la Interfaz Gráfica de Usuario

En la Figura 3 se describe en un diagrama UML los controles gráficos que integran la interfaz gráfica de usuario y sus relaciones. (Original en [8].)
Figura 3. Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias

El diagrama UML de la Figura 4 muestra el modelo de clases de pruebas del estado y comportamiento de las entidades del modelo del mundo del problema (dominio). (Original en [9].)
Modelo de Pruebas Unitarias
Figura 4. Modelo de Pruebas Unitarias.

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

6.1 Repositorio

En el siguiente enlace podrán encontrar el repositorio público de este proyecto:

6.2 Modelo
Clases que representan el modelo.



Archivo
C# Libro.cs [Enlace alternativo]:


Archivo
C# TiendaLibros.cs [Enlace alternativo]:



6.2 GUI
Clases que representan la interfaz gráfica de usuario.


Archivo C# ControlCarrito.cs [Enlace alternativo]:


Archivo
C# ControlCatalogo.cs [Enlace alternativo]:


Archivo
C# DialogoAdicionarLibro.cs [Enlace alternativo]:


Archivo C# Principal.cs [Enlace alternativo]:



7. Recursos

7.1  Java

Recursos del proyecto en su versión original (lenguaje de programación Java):
  • [Pendientes]

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 Documento 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
Tienda de Libros en C#
Figura 5. Tienda de Libros en C#.
7.2.3.2 Demostración

8. Cambios

Algunos de los cambios efectuados en la adaptación:
  • Clase Libro: El campo precio ahora en decimal (antes en int).
  • Clase ItemCompra: Removido método cambiarCantidadSolicitada. La propiedad CantidadSolicitada hace el trabajo de este método.
  • Clase TiendaLibros: Varios métodos convertidos en propiedades debido a su naturaleza de recuperación y mutación en C#.

9. Conclusiones

Hemos desarrollado una aplicación que administra la adición y venta de libros en un librería. Durante el desarrollo de esta aplicación no sólo hemos traducido varios de los algoritmos que resuelven los requerimientos definidos tempranamente, sino que hemos realizado la adaptación a las construcciones disponibles en C# (e.g., propiedades). Nuevamente recurrimos a la personalización de controles para la construcción de la interfaz gráfica de usuario: el catálogo, y el carrito de compras como objetos DataGridView.

En el próximo ejercicio de traducción crearemos un apliación para jugar al ahorcado.

10. Glosario

  • Aplicación
  • Clase
  • Control
  • Entidad
  • Modelo
  • Prueba unitaria

11. Literatura & Enlaces

[1]: Universidad de los Andes - Colombia - http://www.uniandes.edu.co/
[2]: Cupi2 - http://cupi2.uniandes.edu.co/sitio/
[3]: APO1 - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1
[4]: Nivel 3 - Manejo de Grupos de Atributos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3
[5]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros
[6]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros/requerimientos-1714
[7]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros/modeloconceptual-n3carrocompraslibro
[8]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros/interfaz-n3carrocompraslibro
[9]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros/pruebas-n3carrocompraslibro


J

No hay comentarios:

Publicar un comentario

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