Академический Документы
Профессиональный Документы
Культура Документы
Mquina de caf
Diagrama de clases
interface
MaquinaCafe
+preparar(in codigoBebida : int, in cantidadAzucar : int)
+hayStock(in codigoMaterial : int, in cantidad : decimal)
+mostrarEnDisplay(in mensaje : string)
+addListener(in listener : MaquinaCafeListener)
MaquinaCafeListener
Pedido
-cantidadAzucar : int
-fichaPuesta : bool
-azucarSeleccionada : bool
+isPreparado() : bool
+puedeRecibirFicha() : bool
+setBebidaSeleccionada()
-servicioElegido
-mapaBotonOperaciones
-mapaEstados
+apretaronBoton(in : int)
+insertarFicha()
+setEstado(in : int)
+isPedidoPreparado() : bool
+agregarAzucar()
1
*
Operacion
+ejecutar()
1
Bebida
ExtraAzucar
Amargo
-nombre : string
Estado
+puedeRecibirFicha() : bool
+apretaronBoton(in boton : int)
*
Ingrediente
-cantidad : decimal
-opcional : bool
+hayStock()
interface
ILog
+loguear()
FueraServicio
ListaParaOperar
PreparandoPedido
*
1
ArchivoLog
EnCalentamiento
Material
-nombre
-unidadMedida
-codigoHW
+hayStock()
Responsabilidades
MaquinaCafeListener <<Singleton>>: lleva el control del crdito, la cantidad de azcar y la
bebida seleccionada. Escucha los cambios de estado de la mquina y sabe relacionarlos con
los distintos objetos que representan cada uno de los estados de la mquina.
MaquinaCafe(HW): encapsula o decora la interfaz del hardware. Lleva el stock de los
materiales que componen las bebidas (puede incluirse en stos el vaso), prepara finalmente
una bebida y a travs del contrato mostrarEnDisplay permite mostrar un error por la consola de
la mquina.
Pedido: es un objeto opcional que permite encapsular el pedido actual. Sabe si est completo
para ser preparado por la mquina de caf (esto es: ficha insertada y bebida seleccionada).
Tambin registra la primera dosificacin de azcar.
Operacin: es la clase abstracta que representa las diferentes operaciones que puede hacer
una mquina de caf. El Command se subclasifica para el pedido de bebidas, o bien para la
seleccin de extra-azcar o amargo. Una variante podra ser tener una sola subclase para el
manejo de azcar y trabajarlo con algn atributo en la inicializacin.
Estado: representa los distintos estados por los que pasa la mquina, en cuyo caso responde
en forma diferente a la posibilidad de recibir fichas o apretar un botn.
Bebida: representa una bebida seleccionable por la mquina de caf. No se generan varias
instancias sino que el caf con leche es una instancia de Bebida cuyo atributo nombre tiene el
valor caf con leche. Conoce sus ingredientes de preparacin.
Ingrediente: representa una cantidad de un determinado material para la preparacin de una
bebida. Sabe responder si hay stock en la mquina para formar parte de una bebida.
Material: representa un material. Conoce el cdigo de la mquina y sabe responder si existe
una determinada cantidad de s en la mquina.
Diagramas de secuencia
Caso 1: La mquina est en estado En Calentamiento y el cliente inserta una ficha. La
mquina debe mostrar un error en el display. Luego la mquina le avisa que est lista para
operar.
Caso 2: Con la mquina en estado Lista Para Operar, el cliente inserta una ficha, selecciona
Extra Azcar y pide Caf con Leche. La mquina debe devolvrselo, previa verificacin de
stock de los ingredientes.
Lo ltimo que resta es definir en qu momento se inicializa nuevamente el pedido actual que
contiene la MaquinaCafeListener (representado por un objeto Pedido). Opciones posibles:
Cuando se enva el mensaje preparar(int
codigoBebida,
int
cantidadAzucar) al hardware, la MaquinaCafeListener guarda el pedido mandado a
preparar en una coleccin histrica y genera una nueva instancia inicializada de Pedido
con el flag azucarSeleccionada = falso, bebidaSeleccionada = null y fichaInsertada =
cero.
Otra posibilidad es marcar cuando la mquina pasa el estado Preparando pedido.
Ante un nuevo cambio de estado de la mquina, registrar el pedido en la coleccin
histrica y generar un nuevo objeto Pedido convenientemente inicializado.
: Maquina
(HW)
: Extra
Azucar
listeners
: MaqCafe
Listener
hw
mapaOperac
mapaEstados
estado
CafeCorto :
Bebida
nombre
ingredientes
caf corto
: Ingrediente
: ListaPara
Operar
material
: Material
caf
nombre