Diagramme états-transitions
# Diagramme états-transitions

Un diagramme états-transitions est un schéma utilisé en génie logiciel pour représenter des automates déterministes. Il fait partie du modèle UML et s'inspire principalement du formalisme des statecharts et rappelle les grafcets des automates. S'ils ne permettent pas de comprendre globalement le fonctionnement du système, ils sont directement transposables en algorithme. En effet, contrairement au diagramme d'activité qui aborde le système d'un point de vue global, le diagramme états-transitions cible un objet unique du système. Tous les automates d'un système s'exécutent parallèlement et peuvent donc changer d'état de façon indépendante.

## Éléments

### Transitions

En plus des états de départ (au moins un) et d'arrivée (nombre quelconque), une transition peut comporter les éléments facultatifs suivants :

* un évènement ;
* une condition de garde ;
* une liste d'actions.

Quand l'événement se produit alors que les états de départ sont actifs et que la condition de garde est vraie alors les actions seront déclenchées.

### États

Cette exécution est enrichie lorsque les états définissent une action d'entrée et une action de sortie : l'action de sortie de l'état de départ est exécutée d'abord, puis l'action de la transition, puis l'action de l'état d'arrivée.

### Autres éléments

Les points de jonction ne sont qu'un élément graphique permettant de regrouper plusieurs segments de transition de façon à rendre le schéma plus lisible. Les points de décision permettent de simuler un choix : si-alors-sinon, qui entraîne deux états différents.

## Représentation graphique

Le formalisme impose un diagramme par classeur.

* L'état initial est représenté par un cercle rempli ; il est obligatoire
* Le cercle creux dénote l'état de fin; il est facultatif. Plusieurs états finaux peuvent coexister.
* Le rectangle à coins arrondis dénote un état. Il peut être nommé. Les actions internes à l'état peuvent être notées dans la partie inférieure du rectangle, séparée du nom par une barre horizontale
* La flèche dénote la transition entre deux états
* Les sous-états non concurrents peuvent être dessinés à l'intérieur de l'état
* Des traits pointillés peuvent être utilisés pour séparer en zones d'exécution concurrentes un état. Les sous-états d'une même zone restent non concurrents
* Les points de décision sont représentés par des losanges
* Les points de jonction sont représentés par des cercles pleins (identique à l'état initial)

## Transposition en langage structuré

À l'état initial ne correspond pas le constructeur de la classe, à l'état final le destructeur de la classe.

