Mostrando entradas con la etiqueta Nivel 2. Mostrar todas las entradas
Mostrando entradas con la etiqueta Nivel 2. Mostrar todas las entradas

lunes, 11 de agosto de 2014

APO1 - Nivel 2 en C#: Estudiante

Tabla de Contenido

0. Introducción
1. Enunciado
1.1 Vista previa de la aplicación (en Java)
2. Requerimientos
2.1 R1: Registrar Estudiante
2.2 R2: Registrar Curso
2.3 R3: Asignar Nota Curso
2.4 R4: Calcular Promedio
2.5 R5: Informar si el estudiante está en prueba académica
2.6 R6: Informar si un curso está en el pénsum del estudiante
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 C#
7. Recursos
7.1 Java
7.2 C#
7.2.1 Solución y proyectos
7.2.2 Documento 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 esta nueva ocasión dedicaremos tiempo y recursos en traducir una aplicación creada en lenguaje de programación Java a C# de .NET, la cual está destinada a la gestión de los cursos que toma un estudiante durante un semestre académico. Entre las operaciones esenciales para la gestión en cuestión implementaremos estas: registro del estudiante, visualización de la información del estudiante, manejo de las notas por cada materia (curso) matriculada. Continuaremos con el uso recurrente de Visual Studio 2013 como entorno de construcción de los artefactos integrales (i.e., modelo e interfaz gráfica de usuario) de la solución.


[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 planteamiento original de la aplicación de gestión de estudiantes publicado en [4].

Se quiere construir una aplicación para el manejo de cursos de un estudiante. Los datos personales del estudiante son nombre, apellido, y código. El estudiante toma sólo 5 cursos en el semestre. Cada uno de los cursos tiene un nombre, un código y un número de créditos. Al finalizar el curso, al estudiante se le asigna una nota que está entre 1.5 y 5.0.

El estudiante entre en prueba académica si su promedio es inferior a 3.25. Dicho promedio se calcula con las notas de las materias que ha concluido, según los créditos de las mismas: suma de las multiplicaciones de los créditos de la materia por la nota obtenida, dividida entre el total de créditos.

Por ejemplo: el estudiante ha terminado dos materias:
  • Cálculo 1, y 
  • Física 1, 
la primera de 4 créditos y la segunda de 3. Las notas del estudiante son:
  • Cálculo 1: 4.5
  • Física 1: 3.5

Por lo tanto, el promedio del estudiante se calcula con:
Cálculo prueba académica
Figura 1. Cálculo prueba académica.
La aplicación debe permitir:
  • Registrar al estudiante, 
  • Registrarle los 5 cursos al estudiante, decir si un curso está en el pénsum del estudiante, 
  • Asignar las notas de los cursos del estudiante, 
  • Calcular el promedio con aquellas materias que tienen nota e indicar si está en prueba académica.

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.
Aplicación Estudiante en Java
Figura 2. Aplicación Estudiante en Java.

2. Requerimientos

A continuación el conjunto de requerimientos funcionales definidos para la aplicación Estudiante. (Fuente: [5].)

2.1 R1: Registrar estudiante

Código: R1

Descripción: Registrar estudiante

Resumen: Se registra un estudiante.

Entradas:
  • Código del estudiante
  • Nombre del estudiante
  • Apellidos del estudiante
Resultados:
  • El nuevo estudiante queda registrado.

2.2 R2: Registrar curso

Código: R2

Descripción: Registrar curso

Resumen: Se agrega un nuevo curso al estudiante, hasta un máximo de 5 cursos.

Entradas:
  • Nombre del curso a adicionar
  • Código del curso a adicionar
  • Número de créditos del curso, este no puede ser menor a cero.
Resultados:
  • El nuevo curso se adicionó al pénsum del estudiante.

2.3 R3: Asignar nota curso

Código: R3

Descripción: Asignar nota curso

Resumen: Se asigna una nota al curso, únicamente si no se le ha asignado previamente.

Entradas:
  • Código del curso al cual se le adicionará la nota.
  • Nueva calificación del curso. La calificación debe estar entre 1.5 y 5.0.
Resultados:
  • El curso queda con su calificación registrada.

2.4 R4: Calcular promedio

Código: R4

Descripción: Calcula el promedio del estudiante

Resumen: Calcula el promedio del estudiante.

Entradas:
  • Materias vistas por el estudiante que tienen nota asignada.
Resultados:
  • Promedio calculado con las materias vistas en prueba académica.
  • Se informa si el estudiante está en prueba académica (promedio < 3.25) o no.

2.5 R5: Informar si el estudiante está en prueba académica

Código: R5

Descripción: Informar si el estudiante está en prueba académica.

Resumen: Si el estudiante tiene promedio menor a 3.25 lo está.

Entradas:
  • Promedio calculado con las materias vistas por el estudiante.
Resultados:
  • Se informa si el estudiante está en prueba (promedio < 3.25) o no.

2.6 R6: Informar si un curso está en el pénsum del estudiante

Código: R6

Descripción: Informar si un curso está en el pénsum del estudiante.

Resumen: Informa si un curso dado está registrado en el pénsum del estudiante.

Entradas:
  • Código del curso para buscar en el pénsum del estudiante.
Resultados:
  • Se informa si el curso está incluido o no.

3. Modelo del Mundo del Problema

En el diagrama UML de la Figura 2 se esquematiza el modelo del mundo del problema para la aplicación Estudiante. (En la sección 8 se resaltan los cambios realizados sobre el modelo original hallado en [6].)
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 esquematiza el diagrama UML con los artefactos que componen la interfaz gráfica de usuario. (Este modelo es una adaptación de la versión original [7].)
Modelo interfaz gráfica de usuario
Figura 3. Modelo interfaz gráfica de usuario.



5. Modelo de Pruebas Unitarias


El diagrama UML esquematizado en la Figura 4 presenta el modelo de pruebas unitarias de la aplicación Estudiante.
Modelo interfaz gráfica de usuario
Figura 4. Modelo interfaz gráfica de usuario.

6. Exploración de Código C#

6.1 Modelo
Artefactos del modelo del mundo del problema

6.2 GUI
Artefactos de la interfaz gráfica de usuario

7.1 Java

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

7.2 C#

7.2.1 Solución y Proyectos

Enlaces 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ón en ejecución

7.2.3.1 Capturas de pantalla
El Estudiante en C#
Figura 5. El Estudiante en C#.
El Estudiante en C# y Java
Figura 6. El Estudiante en C# y Java.
7.2.3.2 Vídeo

8. Cambios

Lista de cambios realizados a la clase Estudiante:
  • Propiedades para los campos codigo, nombre, y apellido.
  • Agregación del arreglo para representar los 5 cursos.
  • Remoción de los métodos:
    • darCodigo
    • carApellido
    • darCurso1…5
    • darNombre
Cambios realizados a la clase Curso:
  • Propiedades para los campos codigoCurso, nombreCurso, creditos, y nota.
  • Remoción de los métodos:
    • darCodigoCurso
    • darNombreCurso
    • darCreditos
    • darNota

9. Conclusiones

Esta aplicación puso en prueba nuestras habilidades básicas para la construcción de interfaces gráficas de usuario a través del diseñador de Visual Studio 2013. Se introdujeron varios cambios en el modelo del mundo del problema de la aplicación original para realizar la adaptación correspondiente a los elementos de programa de C# (e.g., propiedades). Para la próxima ocasión ascenderemos al nivel tres (3) para conocer otras construcciones de contención de elementos variables. Empezaremos con un programa para la administración de las notas del curso (muy similar a este aplicación que acabamos de traducir).

10. Glosario

  • Artefacto
  • Componente
  • Estudiante
  • Interfaz gráfica de Usuario
  • Modelo del mundo del problema
  • UML
  • Uniandes
  • Universidad

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]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante/requerimientos-2063
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante/modeloconceptual-n2estudiante
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante/interfaz-n2estudiante
[8]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante/pruebas-n2estudiante
[9]: Estudiante - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante
[10]: Bachelor, Student, User icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/49394/bachelor_student_user_icon#size=48
[11]: JavaDoc - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/estudiante/javadoc-n2estudiante


J

viernes, 25 de julio de 2014

APO1 - Nivel 2 en C#: El Triqui

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: Recibir y marcar las jugadas del usuario
2.2 R2: Responder con las jugadas del computador
2.3 R3: Comenzar un nuevo juego
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. Conclusiones
9. Glosario
10. Literatura & Enlaces

0. Introducción

En esta tercera traducción de los ejercicios del Nivel 2 de APO1, crearemos una aplicación en C# que consistirá en el juego triqui. Emularemos la misma estrategia de juego adoptada por el computador para que compita con un jugador humano. Este ejercicio nos servirá para comprender no sólo características del lenguaje C# y su plataforma subyacente, sino además el diseño de algoritmos de competencia hombre-máquina. Desde luego se trata de un problema sencillo, en futuro dedicaremos tiempo para estudiar el proceso de análisis y diseño de programas más complejos y complicados que nos sirvan de reto para la especialización y dominio de los elementos esenciales de la ciencia de la computación.

1. Enunciado

A continuación se describe el planteamiento original del juego de Triqui publicado en [3].

El Triqui se desarrolla entre dos jugadores, cada uno de los cuales elige una marca para representarse, usualmente entre los símbolos O y X. Los jugadores van colocando intercaladamente su marca en un tablero de 9 posiciones. Gana el jugador que logre formar primero una línea de tres casillas seguidas con su marca, ya sea en sentido:
  • vertical, 
  • horizontal, o 
  • diagonal
Si se acaban las casillas libres y ningún jugador hizo una línea de tres, se determina un empate.

Se quiere desarrollar un programa que permita el juego del Triqui entre un humano y el computador. Para éste último se elige una estrategia sencilla de juego que puede depender o no de las jugadas realizadas por el humano. Un ejemplo de estrategia es ir asignando la siguiente posición libre (según el orden establecido de las casillas).

Adicionalmente se desea dar al usuario la posibilidad de comenzar un juego en cualquier momento.

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


En la Figura 1 se muestra la interfaz gráfica de usuario de la aplicación desarrollada en lenguaje de programación Java.
Juego de Triqui en Java
Figura 1. Juego de Triqui en Java.

2. Requerimientos

Conjunto de requerimientos funcionales de la aplicación El Triqui.

2.1 R1: Recibir y marcar las jugadas del usuario

Código: R1

Descripción: Rercibir y marcar las jugadas del usuario.

Resumen: Cuando se selecciona una casilla, esta debe terminar con la predeterminada para el usuario.

Entradas:
  • Posición en el tablero seleccionada por el usuario.
Resultados:
  • La casilla seleccionada con la marca del usuario. Si con esta marca se completa una hilera de 3, se informa al usuario que ganó el juego.

2.2 R2: Responder con las jugadas del computador

Código: R2

Descripción: Responder con las jugadas del computador

Resumen: Se generan marcas en el tablero automáticamente, en respuesta a las jugadas anteriores hechas por el usuario.

Entradas:
  • El juego del triqui en su estado actual.
Resultados:
  • La casilla seleccionada por el programa con la marca predeterminada para este. Si con la jugada el juego termina, se informa al usuario que perdió el juego.

2.3 R3: Comenzar un nuevo juego

Código: R3

Descripción: Comenzar un nuevo juego

Resumen: Se inicializa sin marcas el tablero del triqui para comenzar un nuevo juego en cualquier momento.

Entradas:
  • «Ninguna»
Resultados:
  • Un nuevo juego listo para comenzar.

3. Modelo del Mundo del Problema


En la Figura 2 se muestra el diagrama UML con la descripción de las entidades que componen el modelo del mundo del problema. (Original en [4].)
Modelo del mundo del problema
Figura 2. Modelo del mundo del problema.

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


En la Figura 3 se presenta el diagrama UML con los componentes que integran la interfaz gráfica de usuario. (Original en [7].)
Modelo de la interfaz gráfica de usuario.
Figura 3. Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias


El diagrama UML en la Figura 4 presenta las clases de prueba de la clase Triqui y la enumeración PosicionCasilla. (Original en [8].)
Modelo de pruebas unitarias
Figura 4. Modelo de pruebas unitarias.

6. Exploración de Código C#

6.1 Modelo
Conjunto artefactos del modelo

6.2 GUI
Artefactos de la interfaz gráfica de usuario

7.1 Java

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

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ón en ejecución

7.2.3.1 Capturas de pantalla
El Triqui en C#
Figura 5. El Triqui en C#.
El Triqui en C# y Java
Figura 6. El Triqui 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 El Triqui:
  • Las nueves posiciones del tablero de trique ha sido representado por una instancia de la enumeración PosicionCasilla.
  • Las casillas del tablero en la clase Triqui quedan representadas como un arreglo de constantes de la enumeración PosicionCasilla.
  • La marca de la casilla estará representada por valores de tipo char.
  • Cambios en la clase Casilla:
    • Se removieron los siguientes métodos fueron reemplazados por la propiedad Marca:
      • AsignarMarca(string)
      • ObtenerMarca
    • El tipo de la marca, string, fue reemplazado por char.

9. Conclusiones

Durante el proceso de traducción de la aplicación Java El Triqui a lenguaje de programación C#, aprendimos a manipular controles personalizadas a partir de la clase ControlUser. Estos controles pueden ser agregados usando la caja de herramientas (toolbox) de Visual Studio o programáticamente. Usamos este último enfoque, pues exige conocer varias propiedades y métodos de la la clase ControlUser, por ejemplo, para poder posicionar cada uno de los controles en el formulario principal de la aplicación.

10. Glosario

  • Caja de herramientas
  • Control
  • Cupi2
  • Formulario
  • Triqui
  • Uniandes

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]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/enunciado-2051
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/requerimientos-2052
[6]: Tac, Tic, Toe icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/85811/tac_tic_toe_icon#size=30
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/interfaz-n2triqui
[8]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/pruebas-n2triqui
[9]: El Triqui - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui


S

domingo, 6 de julio de 2014

APO1 - Nivel 2 en C#: La Tienda

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 un producto
2.2 R2: Hacer pedido de un producto
2.3 R3: Calcular estadísticas de ventas
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

Inicio este nuevo nivel (Nivel 2) con la traducción (Java a C#) de una aplicación que permite administrar los productos de una tienda pequeña. Quiero mencionar que los ejercicios de este nivel incluirá nuevos conceptos (e.g., modelación de características y comportamiento de objetos del mundo [o dominio] del problema, incursión sobre el uso de constantes para representar los valores que puede representar un atributo, expresiones de acceso y modificación del estado de un objeto en un instante del tiempo dado, uso recurrente de construcciones [o sentencias] condicionales simples y compuestas, diseño de funciones [en especial métodos] para construir, calcular, validar, mutar [modificar] el estado de un objeto). ¡Empecemos!


[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

El enunciado original se halla en [4]. Aquí incluyo una versión con el formato descriptivo usado en este blog:

En algunas tiendas, existen procesos de control de inventarios y de control de estadísticas para poder realizar pedidos. Además, se realizan actividades de mercadeo con sus productos más vendidos. Estos procesos y actividades sirven para poder tomar decisiones en cuanto a los productos que se deben vender en la tienda.

En este caso, tenemos una pequeña tienda que vende cuatro productos, para cada uno de los cuales de debe manejar la siguiente información:
  1. Su nombre, 
  2. Su tipo (puede ser un producto de papelería, de supermercado o droguería), 
  3. La cantidad actual del producto en la tienda (número de unidades disponibles para la venta que hay en bodegas), 
  4. El número de productos por debajo del cual se debe hacer un nuevo pedido al proveedor, y
  5. El precio base de venta por unidad.
Para calcular el precio final de cada producto, se deben sumar los impuestos que define la ley. Dichos impuestos dependen del tipo de producto:
  • uno de papelería tiene un IVA del 16%, 
  • uno de supermercado del 4%, y 
  • uno de droguería del 12%
Eso quiere decir, que si un lápiz tiene un precio base de $10, el precio final será de $11.6 considerando que un lápiz es un producto de papelería, y sobre estos se debe pagar el 16% de impuestos.

El programa de manejo de esta tienda debe permitir las siguientes operaciones:
  1. Vender a un cliente un cierto número de unidades de un producto, 
  2. Hacer un pedido de un producto para el cual ya se llegó al tope mínimo definido, y 
  3. Mostrar algunas estadísticas de la tienda. Dichas estadísticas son:
    1. El producto más vendido, 
    2. El producto menos vendido, 
    3. La cantidad total de dinero obtenido por las ventas de la tienda, y 
    4. El promedio de ventas de la tienda (valor total de las ventas dividido por el número total de unidades vendidas de todos los productos).

1.1 Interfaz gráfica de usuario (versión previa en Java)
Latinoamericana: Tienda
Figura 1. Latinoamericana: Tienda (en lenguaje de programación Java).

2. Requerimientos

A continuación se describen cada uno de los requerimientos funcionales necesarios para la construcción de la aplicación de La Tienda en lenguaje de programación C# (fuente [5]):

2.1 R1: Vender un producto

Código: R1

Descripción: Vender un producto.

Resumen: Vender a un cliente un cierto número de unidades de un producto.

Entradas:
  • Nombre del producto
  • Cantidad de unidades a vender
Resultados: 
  • Si había suficiente cantidad del producto disponible, se vendió al cliente lo que pidió. Sino, se le dio todo lo que se tenía en la bodega de la tienda.
  • En la caja de la tienda se guardó el dinero resultado de la venta.
  • El cliente fue informado de la cantidad que se le vendió.

2.2 R2: Hacer pedido de un producto

Código: R2

Descripción: Hacer pedido de un producto.

Resumen: Hacer un pedido de un producto para el cual ya se llegó al tope mínimo definido. El pedido sólo se puede realizar si la cantidad de productos en bodega es menor que la cantidad mínima del producto.

Entradas:
  • Nombre del producto
  • Cantidad de unidades a pedir
Resultados: Si es posible realizar el pedido, se incrementa la cantidad del producto disponible con el número de unidades que se pidieron.

2.3 R3: Calcular estadísticas de ventas

Código: R3

Descripción: Calcular estadísticas de ventas


Resumen: Mostrar las siguientes estadísticas:

  • El producto más vendido
  • El producto menos vendido
  • La cantidad total de dinero obtenido por las ventas de la tienda
  • El promedio de ventas de la tienda.
Entradas: «Ninguna»

Resultados: Se ha presentado por pantalla la información estadística antes descrita.

3. Modelo del Mundo del Problema


En el diagrama de clases de UML de la Figura 2 se esquematizan todas las entidades integrales del modelo del mundo del problema para la aplicación La Tienda. (El modelo original se encuentra en [6].)
Modelo del mundo del problema
Figura 2. Modelo del mundo del problema.

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 [10])
Modelo de la interfaz gráfica de usuario (GUI)
Figura 3. Modelo de la interfaz gráfica de usuario (GUI).

5. Modelo de Pruebas Unitarias

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

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

6.1 Modelo
Artefactos del modelo de la aplicación.

6.2 GUI
Artefactos de la interfaz gráfica de usuario.

7.1 Java

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

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 del código fuente de la aplicación

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

7.2.3 Aplicación en ejecución

7.2.3.1 Capturas de pantalla
Aplicación La Tienda en C#
Figura 5. Aplicación La Tienda en C#.
Aplicación La Tienda en C# (izquierda) y Java (derecha)
Figura 6. Aplicación La Tienda en C# (izquierda) y Java (derecha).
7.2.3.2 Vídeo

8. Cambios

Lista de cambios realizados sobre el modelo del mundo del problema de la aplicación La Tienda:
  • Adición de la enumeración TipoProducto con las siguientes constantes:
    • Papeleria
    • Supermercado
    • Droguería
  • Uso de decimal para representar los precios de los productos, en lugar de double.
  • Las diferentes cantidad porcentuales de IVA se representan como una enumeración -TipoIVA-:
    • IvaPapel
    • IvaFarmacia
    • IvaMercado
  • Uso de propiedades en lugar de métodos para clase Producto:
    • darNombre -> Nombre (solo lectura)
    • darTipo -> Tipo (solo lectura)
    • darValorUnitario -> ValorUnitario (solo lectura)
    • darCantidadBodega -> CantidadBodega (solo lectura)
    • darCantidadMinima -> CantidadMinima (solo lectura)
    • darIva -> Iva (solo lectura)
  • La tienda ofrece hasta cuatro (4) productos que serán almacenados en una estructura de datos secuencial: arreglo.
  • El constructor de Tienda ahora posee dos versiones:
    • Tienda (Producto, Producto, Producto, Producto)
    • Tienda (Producto[])
  • Estos métodos de la clase Tienda se renombran como:
    • darGananciasTotales -> CalcularGananciasTotales
    • darProductoMasVendido -> CalcularProductoMasVendido
    • darProductoMenosVendido -> CalcularProductoMenosVendido
    • darPromedioVentas -> CalcularPromedioVentas
  • El conjunto de métodos darProducto1() hasta darProducto4() queda unificado en un único método, el cual posee la siguiente firma:
    • ObtenerProducto (string)

9. Conclusiones

Hemos iniciado el Nivel 2 de APO1 con la traducción una nueva aplicación de Java a C# útil para la administración de una tienda pequeña. Continuamos en el proceso de afianzar los conocimientos de uso de construcciones del lenguaje de programación C#, y la modelación de entidades que comprenden el dominio (o mundo) del problema. En este último aspecto hacemos hincapié, debido a que comprende un aspecto fundamental en la creación de programas modulares consistentes y robustos. En el próximo ejercicio de traducción crearemos una aplicación para la comercialización de juegos.

10. Glosario

  • Aplicación
  • C#
  • Control
  • Interfaz gráfica de usuario
  • Java
  • Modelo
  • Pruebas unitarias
  • Traducción

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]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda/requerimientos-1651
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda/modeloconceptual-n2tienda
[7]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda/pruebas-n2tienda
[8] La tienda - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda
[9]: Shop, Store icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/61473/shop_store_icon#size=48
[10]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/la-tienda/interfaz-n2tienda


J