230918 - Máquina de estados
Clase
Máquina de estados
- Es un artefacto gráfico que permite explorar el ciclo de vida de un objeto
- La máquina de estados describe de qué manera cambia o evoluciona un objeto en el Modelo de Dominio, desde un nacimiento, pasando por un desarrollo/crecimiento, hasta su muerte
- Todos los objetos del MD tienen una máquina de estado, pero no es necesario dibujar la ME de cada clase pues algunas tienen sólo un (1) estado, en cuyo caso se le llama "Anónimo"
- Es necesario tener un Modelo de Dominio para elaborarla
- Una de las utilidades de la ME es descubrir Casos de Uso faltantes y reconocer las Reglas de inferencia y las Reglas de restricción
- Generalmente, el sistema detecta un estado mediante atributos; tener un atributo
estado
en la clase sería redundante
- Se utilizan los siguientes símbolos (similares al de Diagrama de actividad):
- Ver #Ejercicios / Ejemplos#Ejemplo 1
- Como en el Diagrama de Actividad, puede haber un sólo fin, o varios
- Los estados terminales son aquellos en los que el objeto terminó su ciclo de una forma no deseada
- Si se existe un evento
Ev_alpha
en la transición de un estado a un Fin, significa que:- El objeto se destruye
- Hay un Caso de Uso
- Condición de guarda: Es una condición para que el cambio de estado sea efectivo
- Conveniente antes de empezar a dibujar:
- Hacer una lista de los posibles estados
Ejercicios / Ejemplos
Ejemplo 1
Máquina de Estados (ME): Presentación
hide empty description
[*] --> Pendiente: Pac. define una gira (Ev) / CU1: Definir Gira
Pendiente --> Confirmada: Con. confirma contrato (Ev)
Pendiente --> Cancelada: Con. amsa no realizaron\nel contrato / CU1: Cancelar
Cancelada --> . <<ExitPoint>>: Ev_alpha
Confirmada --> Realizada: Artista realiza la presentación
Realizada --> [*]
Pendiente --> Anulada: PA cancela gira
Anulada --> . <<ExitPoint>>
hide empty description
[*] --> Creada: CU1 Definir gira
note right of Creada: nombre: Creada??, pues no queda claro si se "crea" una gira
Creada --> Cerrada: PAC cierra gira\n
Creada --> Anulada: PAC cierra gira\n [No existe presentación confirmada]
Anulada --> . <<ExitPoint>>
Cerrada --> [*]
- Hay un caso de uso que tiene la misma frase del evento
- "Cuando llega la fecha de ###~": El actor en este caso es el tiempo, no se hace automático/instantáneo el cambio de estado
- Donde haya un evento en el que no puedo asignar un Casos de uso, ahí tengo un hueco que debo evaluar si debo llenar
Ejercicio 2 - Autos Usados
Una PYME se dedica a la venta de autos usados.
Cuando un cliente llega con un auto para la venta, este es dejado en depósito hasta chequear que todos los papeles estén en condiciones. Luego el auto que está en condiciones es puesto por la PYME en exposición y cuando se vende deja de estarlo. Luego en algún momento viene el nuevo dueño y lo retira.
Lista de estados:
- Guardado (en depósito)
Verificando(papeles) No interesa a la claseauto
- Expuesto
- Vendido
- Retirado (estado fin?)
\\Blueberry\DCIM\20230918_121113.heic
Hoja de práctica
![[]]