Un estado es una situación en la vida de un objeto en la que satisface cierta condición, realiza alguna actividad o espera algún evento.
Existen tres tipos de estado en los que se puede encontrar un objeto:
- Estado inicial. Punto de partida por defecto del diagrama de estados. Corresponde a los valores de los atributos de una clase en el momento de instanciar un nuevo objeto.
- Estado final. Estado en el que se encuentra el objeto una vez finalizada la secuencia de eventos que pueden proporcionar transiciones entre estados.
- Estado intermedio. Cualquiera de los estados intermedios entre los dos anteriores.
Los estados se representan mediante una caja y admite algunas variantes. La información que se muestra en los estados suele ser:
- Nombre del estado. Por ejemplo Abierta.
- Nombre del estado y acción/actividad asociada al objeto mientras se encuentra en ese estado. En un semáforo en estado de precaución, se produce la actividad de parpadeo de la luz.
- Estado con subestados. En el ejemplo se indica que el estado vigilando tiene asociado una serie de subestados, si se trata de un vigilante de seguridad, el estado "vigilando" podría tener relacionados los subestados de ruta a pie y o de visionado de cámaras.
Un evento es un acontecimiento que dispara una transición entre dos estados del objeto. Existen eventos externos y eventos internos según el agente que los produzca.
Tipos de eventos:
- Señales (excepciones): la recepción de una señal, producida por una situación excepcional en el sistema. Puede ser origen de una transición entre estados.
- Llamadas: la recepción de una petición para invocar una operación. Normalmente un evento de llamada es manejado por un método del objeto.
- Paso de tiempo: el evento se genera como consecuencia del cumplimiento de un temporizador.
- Cambio de estado: evento generado por un cambio en el estado o el cumplimiento de una condición.