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èce entraîne l’envoi des messages déplier et 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 fermer (respectivement ouvrir) est envoyé à la pince.
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.
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.