Candy Machine

Máquina de Dulces

Este proyecto consiste en realizar un sistema de control con el cual se pueda gestionar los productos ofrecidos por una máquina de dulces empleando el paradigma de la programación orientada a objetos en lenguaje Java. La maquina de dulces a trabajar está dividida por secciones o celdas, y en cada celda están almacenados los productos que dispone la máquina. El usuario podrá realizar una selección múltiple de productos ya sean pertenecientes a la misma celda o de diferentes celdas.

En el siguiente documento podrás encontrar de forma detallada el planteamiento del problema a desarrollar, la estructura de paquetes y caracteristicas de los métodos:

Información General

Para tener una vista conceptual del sistema descrito en el problema podemos apoyarnos de herramientas visuales como lo son un bosquejo de la máquina de dulces y el respectvo diagrama UML. En ésta sección se detallarán los elementos mensionados.

La Figura 1 muestra un pequeño bosquejo de la composición de la máquina de dulces. Se puede apreciar la representación de los productos con elementos de colores dentro de las celdas, y en la parte inferior, los diferentes métodos o acciones que la máquina dispone.

Candy Machine
Figura 1. Esquema Máquina de Dulces

Este proyecto se puede modelar a partir de 3 tablas: Productos, Celdas y Máquina de Dulces. Entre sus relacionestenemos que, una celda la componen productos, y a su vez, una máquina de dulces tiene celdas. De esta forma, nuestro diagrama UML resulta de la siguiente manera (ver Figura 2 ):

Diagrama UML
Figura 2. Diagrama UML de la máquina de dulces.

Desarrollo

Como se comenta en la documentación, cada método implementado tiene una clase Test asociada que evalua su funcionamiento. En este ocasión solo se mostrará el funcionamiento de los métodos más relevantes con el fin de explicar la metodología del trabajo, para la solución completa puede explorar el repositorio del código en github.

De acuerdo a lo anterior, en las Figuras 3 y 4 se presentan los códigos desarrollados para los métodos incrementarProductos y venderConCambio respectivamente. Del código se puede apreciar que se utiliza la colección de ArrayList para recorrer el conjuto de elementos de la celda. Por otro lado, a modo de buenas prácticas, se trabaja con la nomeclatura camelCase para las variables, y los métodos getter para culplir con el principio de encapsulamiento.

Candy Machine
Figura 3. Implementación del método incrementarProductos.
Candy Machine
Figura 4. Implementación del método venderConCambio.

Resultados

Con el fin de dar continuidad al resultado de los métodos mostrados anteriormente en las figuras 5 y 6 se presenta el código de las respectivas clases Test con su respuesta en consola.

Candy Machine
Figura 5. Respuesta del test TestIncrementarProductos.
Candy Machine
Figura 6. Respuesta del test TestVenderConCambio.