Comment ?

Interaction

Pour être complètement spécifiée, une interaction doit être décrite dans plusieurs diagrammes UML :

Ligne de vie

Une ligne de vie représente un participant à une interaction (objet ou acteur). La syntaxe de son libellé est :

nomLigneDeVie {[selecteur]}: NomClasseOuActeur

Une ligne de vie est une instance, donc il y a nécessairement les deux points (:) dans son libellé.

Dans le cas d’une collection de participants, un sélecteur permet de choisir un objet parmi n (par exemple objets[2]).

Messages

Les principales informations contenues dans un diagramme de séquence sont les messages échangés entre les lignes de vie :

Un message définit une communication particulière entre des lignes de vie (objets ou acteurs).

Plusieurs types de messages existent, dont les plus courants :

La réception des messages provoque une période d’activité (rectangle vertical sur la ligne de vie) marquant le traitement du message (spécification d’exécution dans le cas d’un appel de méthode).

Messages synchrones et asynchrones

Un message synchrone bloque l’expéditeur jusqu’à la réponse du destinataire. Le flot de contrôle passe de l’émetteur au récepteur.

Un message asynchrone n’est pas bloquant pour l’expéditeur. Le message envoyé peut être pris en compte par le récepteur à tout moment ou ignoré.

Messages synchrones et diagramme de classe

Les messages synchrones correspondent le plus souvent à une opération :

Les méthodes correspondant aux messages synchrones doivent être définies dans un diagramme de classes.

Les méthodes sont définies dans la classe du récepteur, et pas de l’émetteur du message.

La flèche dans le diagramme de classes correspond à une association unidirectionnelle, et pas à un message : la notion de message n’a aucun sens dans le contexte d’un diagramme de classes.

Echange de messages et code Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class B {
    C c;
    message1 (p:Type) {
        c.message2 ();
        c.message3 (p);
    }
}
class C {
    message2 () {
        ...
    }
    message3 (p:Type) {
        ...
    }

Messages asynchrones et diagramme de classe

Les messages asynchrones correspondent à des signaux dans le diagramme de classes.

Les signaux sont des objets dont la classe est stéréotypée << signal >> et dont les attributs (porteurs d’information) correspondent aux paramètres du message.

Syntaxe des messages

La syntaxe des messages est :

nomSignalOuOperation (LISTE_PARAMS)

avec LISTE_PARAMS un liste de paramètres séparés par des virgules. Dans la liste des paramètres, on peut utiliser les notations suivantes :

Exemples :

Messages de retour

Le récepteur d’un message synchrone rend la main à l’émetteur du message en lui envoyant un message de retour.

Les messages de retour sont optionnels : la fin de la période d’activité marque également la fin de l’exécution d’une méthode.

Ils sont utilisés pour spécifier le résultat de la méthode invoquée. Leur syntaxe est :

attributCible = nomMessageSynchroneInitial(LISTE_PARAMS) : valeurRetour

Les messages de retour sont représentés en pointillés.

Messages trouvés

Les diagrammes de séquences peuvent être employés pour décrire les traitements d’un système résultant de l’envoi d’un message, indépendamment de l’émetteur. Dans ce cas, l’émetteur importe peu et on le le spécifie pas.

Les messages trouvés peuvent être synchrones ou asynchrones.

Messages perdus

Des messages perdus, on connaît l’émetteur mais pas le récepteur, à l’inverse des messages trouvés.

On utilise souvent des messages de retour perdus pour spécifier le résultat d’un message synchrone trouvé.

Création et destructiob d’objets (et de lignes de vie)

Fragment combiné

Un fragment combiné permet de décomposer une interaction complexe en fragments suffisamment simples pour être compris.

Un fragment combiné se représente de la même façon qu’une interaction. Il est représenté un rectangle dont le coin supérieur gauche contient un pentagone.

Dans le pentagone figure le type de la combinaison (appelé opérateur d’interaction).

Fragment alt : opérateur conditionnel

Les différentes alternatives sont spécifiées dans des zones délimitées par des pointillés.

Fragment loop : opérateur d’itération

Le fragment loop permet de répéter ce qui se trouve en son sein.

On peut spécifier entre crochets à quelle condition continuer.

Remarques

Opérateurs de flux de contrôle

Opérateurs d’interprétation de la séquence

(source : msdn)

Réutilisation de séquences

Un fragment ref permet d’indiquer la réutilisation d’un diagramme de séquences défini par ailleurs.

En supposant qu’il existe un diagramme intitulé Authentification et un autre Paiement, on peut établir le diagramme suivant :

Utilisation des diagrammes de séquence

Les diagrammes de séquences sont principalement utilisés pour :


Module d’UML