Exercice UML ajouter un aspect dynamique à un diagramme de classes

1. Le diagramme  de  séquence  est présenté  à la figure  3.33. Le message chercherPièce parvient au robot via une porte. L’émetteur du message est supposé apparaître dans un diagramme  non représenté ici. chercherPiècentraîne l’envoi des messages déplieet replier au bras articulé. Conformément à ce qui est stipulé dans le rectangle spécifiant l’exécution de la méthode déplier (respectivement replier), le message ferme(respectivement ouvrir) est envoyé à la pince.

uml37

2. Le diagramme  de communication (figure 3.34) se déduit  aisément du diagramme  de séquence précédent (figure 3.33). Il faut cependant veiller à numéroter correctement les messages pour indiquer leur ordre d’envoi: le premier message, chercherPièce, porte le numéro 1 ; le message suivant, déplier, est emboîté dans le message chercherPièce et porte en conséquence le numéro  1.1 ; le message fermer (numéro  1.1.1) est emboîté dans le message déplier. Le même raisonnement a permis de numéroter les messages replier et ouvrir.

uml38

3. Le pseudo-code montre que l’objet brasArticulé est inclus dans la partie des attributs de la classe Robot. C’est la façon la plus courante d’implémenter une relation de composition : le robot  est composé d’un bras articulé. Il en est de même des classes BrasArticulé et Pince.

class Robot{

privée :

BrasArticulé brasArticulé  ;      /* objet brasArticulé (instance de la  classe BrasArticulé) */

publique :

void chercherPièce(){

brasArticulé.déplier() ;  /*  appel  de la  méthode déplier de l’objet  brasArticulé */

brasArticulé.replier() ;  /*  appel  de la  méthode replier de l’objet  brasArticulé */

}

}

class  BrasArticulé {

privée :

Pince pince ;                      /* objet pince (instance  de la classe Pince) */

publique :

void déplier (){

…                                                      /* instructions pour déplier le bras */

pince.fermer() ;           /* fermeture de la  pince pour attraper la pièce */

}

void replier (){

…                                                      /* instructions  pour replier le bras */

pince.ouvrir() ;           /* ouverture de la  pince pour relâcher la pièce */

}

}

class Pince  {

privée :

…

publique :

void fermer (){

…                                                      /* instructions pour fermer la pince */

}

void ouvrir (){

…                                                                        /* instructions pour ouvrir la pince */

C3hapitre

}

}

Début  programme principal

Robot robot  ;              /* création  d’un objet robot

(instance  de la  classe  Robot) */

robot.chercherPièce() ;   /* appel de la  méthode

chercherPièce de la  classe  Robot */

Fin  programme principal

Remarque :

Les associations sont souvent implémentées comme des attributs. Il ne faut cependant pas confondre les deux (voir CliCours.com). Malheureusement, de  nombreux langages  de  programmation ne permettent pas  de faire la distinction.

L’annexe E donne des  indications pour  implémenter un modèle  objet  avec  le langage de programmation Java.

Télécharger aussi :

Laisser un commentaire

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