Exercice UML corrigé messages synchrones vs messages asynchrones

1. On considère que le programme  principal est actif tout  le temps. Le calcul de pi avec 3 décimales ne doit pas prendre beaucoup de temps. Le programme principal peut donc être bloqué par un appel synchrone de la méthode calculerPI le temps d’effectuer le calcul.

uml44

Remarque:

La tête de  la ligne  de  vie Programme Principal contient  deux  traits verticaux  qui indiquent que l’objet est actif. Le double trait qui court tout au long de la ligne de vie indique aussi un objet  actif. Ces  deux  notations présentes  simultanément sont  redondantes. Dans  un  dia- gramme de séquence, les deux traits verticaux dans  la tête de la ligne de vie sont superflus, tandis  que  dans  un  diagramme de  communication, comme  aucun   pointillé  n’indique la durée de vie d’un objet, ces deux  traits sont indispensables.

Un objet  actif possède son propre thread de  contrôle, c’est-à-dire  qu’on  peut  lui appliquer des méthodes dans  un flot d’exécution indépendant des  autres  flots d’exécution existants. Un objet passif, au contraire, a besoin qu’on lui « donne » un flot de contrôle  pour lui appliquer  une méthode.

2. Calculer Pi avec 3 000 décimales peut prendre du temps. Dans ce cas, il vaut mieux utiliser un message asynchrone pour ne pas bloquer le programme principal le temps d’effectuer le calcul.

uml45

3. La réception d’un courrier électronique peut se faire n’importe quand après l’émission. Il ne faut donc pas bloquer l’émetteur et utiliser un message asynchrone.

uml46

4. L’émetteur et le destinataire sont des objets actifs qui sont bloqués le temps d’envoyer ou de récupérer un courrier.

uml47

5. Les transmissions sont asynchrones et les messages peuvent être reçus dans un ordre différent de l’ordre d’envoi.

uml48

Remarque:

La durée de  transmission d’un message peut  être  indiquée en ajoutant des  contraintes  sur un diagramme, comme  le montre.

Exercice UML corrigé

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *