Un diagramme d'états-transitions est un diagramme UML qui fournit une représentation graphique d'une State Machine, le comportement public d'un classificateur (composant ou classe), sous la forme des changements de l'état du classificateur et des événements qui permettent la transition d'un état à l'autre.
Le classificateur est censé avoir déjà été identifié dans un autre diagramme et tous ses états doivent pouvoir être répertoriés.
A la différence des autres diagrammes d'interaction, le diagramme d'états-transitions peut représenter une spécification complète des scénarios possibles appartenant au classificateur. A un moment donné, l'objet doit être dans l'un des états définis.
Vous pouvez créer plusieurs diagrammes d'états-transitions pour le même classificateur, mais alors les états et les transitions représentés doivent être liés à différents aspects de son évolution. Par exemple, une personne peut être considérée d'un côté comme se déplaçant entre les états étudiant, travailleur, sans emploi et en retraite, et de l'autre étant successivement célibataire, fiancé, marié et divorcé.
Les diagrammes d'états-transitions montrent le comportement du classificateur via des règles d'exécution qui expliquent précisément de quelle façon les actions sont exécutées lors des transitions entre les différents états ; ces états correspondent aux différentes situations se produisant lors de la vie du classificateur.
L'exemple ci-dessus montre les états d'un jeu d'échecs.
La première étape dans la création d'un diagramme d'états-transitions consiste à définir les états initial et final et le jeu d'états possibles entre eux. Vous liez ensuite les états à l'aide de transitions, en notant sur chacune d'entre elles l'événement qui déclenche le passage d'un état à l'autre.
Vous pouvez également définir une action qui s'exécute au moment de la transition. De même, l'entrée ou la sortie d'un état peut provoquer l'exécution d'une action. Il est même possible de définir les événements internes qui ne changent pas l'état. Les actions peuvent être associées aux opérations du classificateur décrit par le diagramme.
Il est également possible de décomposer les états complexes en sous-états, qui sont représentés dans des sous-diagrammes d'états-transitions.
Un diagramme d'états-transitions requiert l'identification préalable d'un classificateur. Il peut être utilisé pour décrire le comportement du classificateur, et vous aide également à découvrir ses opérations via la spécification des actions associées aux événements d'états-transitions.
Vous pouvez également utiliser les transitions identifiées afin d'établir l'ordre dans lequel les opérations peuvent être appelées. Ce type de diagramme est appelé "protocol state machine".
La spécification de l'interface utilisateur graphique (GUI, Graphic User Interface) peut être une autre utilisation. Les états sont les différents écrans disponibles avec les transitions entre eux, le tout dépendant des événements de clavier et de souris produits par l'utilisateur.