uml

UML. Ejemplo de diagrama de clases. Máquina de snacks

Se pide realizar el diagrama de clases de esta máquina:

maquina

RESOLUCIÓN DEL EJERCICIO

En principio el enunciado no nos proporciona más información, luego tendremos que averiguar cómo funciona su mecanismo interno.

Vemos que tiene una serie de resortes los cuales se accionan cuando el usuario inserta una moneda y elige el producto.

Los resortes tienen que tener en cuenta el número de productos que contienen y podrá consultarse si están vacíos y en caso contrario activarse para expulsar el producto por la tolva.

maquina

Estos resortes estarán conectados a una unidad de gestión la cual controlará el dinero introducido, establecerá si con dicho dinero puede comprar el producto elegido y devolverá el cambio necesario.

Podríamos crear una nueva clase que se hiciese con el control del cambio. No obstante con la poca información del enunciado la hemos omitido.

Hemos creado dos clases que controlarán el display y el teclado. ¿Por qué? Porque generalmente estos dispositivos hardware pueden presentar dificultades de controlar si los driver no son de un nivel alto. Sacar un mensaje por display puede ser desde sencillo a ser una tarea tediosa si hay que controlar ciertos parámetros hardware.

El teclado igual, va recibiendo teclas y enviándolas a la unidad de gestión con su método controlarTeclas el cual irá recopilando primero el código del producto y luego de que detecte que es un producto de la estantería tendrá que evaluar si tiene dinero suficiente y si es así llamar a los métodos devolverCambio y entregarProducto.

El diagrama anterior no estaría del todo terminado puesto que hay que tomar muchas decisiones dependiendo del hardware del sistema. Con un enunciado más detallado el esquema podría ser más completo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>