solucion a maquina expendedora de cafe hasta clases
TRANSCRIPT
Caso: Máquina Expendedora de Café
Enunciado del Problema
El siguiente diseño en UML es sobre una Máquina que sirve café en forma
automatizada, mediante el ingreso de monedas y la selección de opciones para un
determinado producto. El lenguaje UML en conjunto a una herramienta de
desarrollo como es PowerDesigner, permite especificar el diseño preeliminar y
detallar las funciones y relaciones entre clases (OO). El desarrollo es algo
metódico y lento, pero tiene el beneficio de generar código en forma automática
que permite comenzar a desarrollar un producto.
El siguiente diseño pretende explicar la estructura de la Máquina de Café y su
comportamiento, mediante Casos de Uso. A su vez, se tienen los Diagramas de
Secuencia del Diagrama de Estados, que permiten detallar los pasos del proceso.
Los diagramas de Estado surgen como complemento a los Casos de uso, para
entender mejor la interacción visual entre el ente externo o cliente y el Sistema.
Usuario
DepositarDinero
ElegirProducto
ElegirNivelAzucar
EntregarVuelto
CancelarOperacion
<<Uses>>
<<Uses>>
Diagrama de Casos de Uso
Casos de Uso
Caso de Uso DepositarDinero
Actores Usuario (iniciador)
Propósito Depositar el dinero para comprar un producto en la máquina
Visión General Un usuario llega a la Máquina dispensadora, deposita el dinero
(monedas de 100, 200 y 500) para comprar un producto.
Tipo Primario y esencial
Referencias Función: RecolectarMoneda.1
Curso Típico de Eventos
Acción del Actor
1. Este caso de uso empieza cuando un
usuario introduce la cantidad de monedas
mínima para comprar algún producto.
Cursos Alternativos:
Línea 1: No ha ingresado la cantidad
mínima para comprar tras unos
segundos. Se cancela la operación.
Línea 2: No hay suficiente monedas
para dar vuelto. Se cancela la
operación.
Respuesta del Sistema
2. Da la opción de seleccionar un producto de la lista.
Caso de Uso ElegirProducto
Actores Usuario (iniciador)
Propósito Seleccionar el producto a comprar en la máquina
Visión General El usuario selecciona el tipo de producto que desea comprar en la
máquina mediante los botones disponibles en ella.
Tipo Primario y esencial
Referencias Atributo: Producto.1
Curso Típico de Eventos
Acción del Actor
1. El usuario elige el producto de la lista
(café negro, café claro, té).
3. Escoge el producto.
Cursos Alternativos:
Línea 3: No está disponible el
producto. Se cancela la operación.
Respuesta del Sistema
2. Condiciones del producto:
a) No está disponible el producto. Se cancela la operación.
b) Da la opción para seleccionar el azúcar.
Casos de Uso - Especificación
Caso de Uso ElegirNivelAzucar
Actores Usuario (iniciador)
Propósito Seleccionar el nivel de azúcar para agregar al producto
Visión General El usuario selecciona el nivel de azúcar que desea agregar al
producto. El nivel puede ser 0, 1 ó 2
Tipo Primario y esencial
Referencias Función: Ingrediente.1
Curso Típico de Eventos
Acción del Actor
1. El usuario selecciona el nivel de azúcar (0,
1 ó 2).
3. Abre la tapa protectora y retira el
producto.
Cursos Alternativos:
Línea 2: No existe suficiente azúcar.
Se cancela la operación.
Respuesta del Sistema
2. La máquina empieza la preparación del producto, mezclando
los ingredientes anexos al agua. Manda mensaje para que
retire el producto.
CASOS DE USO -ESPECIFICACION
Caso de Uso CancelarOperacion
Actores Usuario (iniciador)
Propósito Cancelar la Operación con la máquina
Visión General Si el usuario se equivoca en su elección selecciona el botón
cancelar para que devolverle el dinero
Tipo Primario y esencial
Referencias Función: Maquina.1
Curso Típico de Eventos
Acción del Actor
1. El usuario selecciona cancelar.
3. El usuario retira el vuelto y se va o sigue
comprando.
Respuesta del Sistema
2. Se detiene la operación actual y se entrega el vuelto.
CASOS DE USO - ESPECIFICACION
Casos de Uso - Especificacion
Caso de Uso EntregarVuelto
Actores ElegirProducto, CancelarOperacion
Propósito Devolver el dinero
Visión General Si el usuario cancela una operación o seleccionar un producto
satisfactoriamente, se le entrega el vuelto o devuelve el
dinero respectivamente
Tipo Primario y esencial
Referencias Función: Maquina.2
Curso Típico de Eventos
Acción del Actor
1. El producto se ha seleccionado o
correctamente o se eligió la opción
cancelar.
Respuesta del Sistema
2. La máquina entrega el vuelto correspondiente o devuelve el
dinero.
Revision de Conceptos
Clase: representada mediante un cadrado con 3 divisiones. Una para el nombre, otra para los atributos y la
última para los métodos.
Asociación: es una línea de unión entre clases, que establece cierta dirección y tipo de relación.
Multiplicidad: es una restricción a una asociación, que limita el número de instancias de una clase con
respecto a otra única instancia de la otra clase. Si contiene una flecha, indica la dependencia a esa clase.
Roles:indica el papel que juega en la clase.
Agregación: es una asociación débil, sin dependencia existencial. Se representa por un diamante en blanco en
la clase que repesenta el todo.
Composición: es una asociación fuerte que implica dependencia existencial, es perteneciente a esa clase y el
objeto no es compartido. Se representa por un diamante en relleno en la clase que repesenta el todo.
Generalización: es una relación de herencia, representada por un triángulo sin rellenar del lado de la
superclase.
Explicación del Diseño Clases
Generalización: Existe una subclase para Ingrediente que es Azucar para definir un
método para ElegirNivelAzucar y otra subclase en RecolectarMoneda que es
RecolectarMonedaTipo para verificar las monedas ingresadas y almacenarlas en un
depósito por valor.
Composición: La mayoría de las clases como Ingrediente, Producto, RecolectorMoneda
y RecolectorMonedaTipo tienen una dependencia fuerte de Maquina, por ser parte de
ella. Si se elimina una de las dependencia, no existe la máquina o abría que modificar
Maquina.
Agregación: Existe una relación débil entre Ingrediente y Producto, por ser parte uno del
otro. Pero es débil porque no existe dependencia existencial, el producto es formado por
ingredientes, pero la eliminación de uno no implica eliminar el otro.
Diagrama de Clases
1
producto
2..5
ingredientes
15
recursos
1
3
productos
0..1
3
acumula
0..1
1
recibe
Ingrediente
-
-
isNombre
idCantidad
: String
: int = 0
+ ElegirIngrediente () : int
Producto
-
-
isNombre
iiValor
: String
: int
+ ElegirProducto () : int
Maquina
-
-
isNombre
iiDepositado
: String
: int
= Cafe/Te
= 0
+
+
+
CancelarOperacion ()
ServirProducto ()
EntregarVuelto ()
: void
: void
: void
RecolectorMoneda
- iiMonedas : int = 0
+ AgregarMoneda () : void
RecolectorMonedaTipo
- iiValor : int
+
+
VerificarMoneda ()
DevolverMoneda ()
: boolean
: void
Azucar
+
+
isTipo
isCantidad
: String
: int
+ ElegirNivelAzucar () : int
Conclusión El lenguaje UML es una especificación de diseño sumamente poderosa en la
aplicación de un mundo orientado a objeto. En cojunto con la herramienta
utilizada que es PowerDesigner, se logra un desarrollo rápido y eficiente,
fácilmente modificable y que permite generar código básico y no de mucha
utilidad. Muchas veces se piensa que el programa es capaz de dar el código casi
completo, pero no es tan así. Son solo herramientas de ayuda respecto al diseño.
Para trabajar con este lenguaje es necesario un lenguaje orientado al objeto, que
permita ocupar todas las herramientas de diseño y facilitar la programación. Se
dejan de lado diseños simples, estructurados, como en la antigüedad, lo cual es
una gran avance para la Informática.
El aprendizaje de UML entrega un complemento a la programación orientada al
objeto en Java, C# u otros lenguajes, para los que ya manejan dicho código y se
les muestra una nueva herramienta utilizable a lo antes aprendido. Sin duda,
una gran herramienta.