Le TP n°3 est une extension du TP n°2. En fait, l’objectif est de traiter le changement du sens
de déplacement du robot par une hiérarchie de classes d’exception.
Lorsque lors d’un déplacement effectif, le sens de déplacement fait sortir le robot de la grille ou le
percute à un obstacle, on veut que le robot réalise une Manœuvre. On souhaite corriger le
problème de déplacement moyennant l’usage d'exceptions. Ainsi, lorsque la direction proposée
par la méthode prochaineCaseAVisiter :
• fait sortir le robot de la grille, celui ci effectue la manœuvre suivante : il tourne dans le
sens contraire d’une aiguille d’une montre puis continue son chemin.
• percute le robot à un obstacle, celui ci effectue la manœuvre suivante : retourne dans le
sens opposé puis avance d’une case puis tourne dans le sens d’une aiguille d’une montre
puis fait un déplacement de 2 cases puis tourne dans le sens inverse d’une aiguille d’une
montre puis continue son chemin.
Remarque : Si lors d’une manœuvre le robot risque de sortir de la grille ou percute un obstacle, il
oublie la manœuvre courante et applique une nouvelle manœuvre.
Travail à faire
Il s’agit de proposer une nouvelle version du TP2. En plus, il s’agit principalement d’implémenter
1- une nouvelle classe Manœuvre.
2- la classe d'exception PbDeDeplacement ainsi que deux classes dérivées PbSortieGrille et
PbPercuteObstacle.
3- le déclenchement et l'interception de ces 2 exceptions.
Instructions de conception :
• Définir dans la classe Robot la méthode « Case * deplacer(Direction) ». Cette
méthode assure un déplacement réel du robot à une case voisine de sa position courante. Elle
déplace effectivement le robot de sa position courante à une nouvelle position et retourne la
nouvelle Case occupée par le robot. Cette méthode assure un déplacement à l’intérieur de la
grille et dans une position qui est différente d’un obstacle.
• La classe manœuvre est une suite de directions. Représenter la suite par une collection STL.
• La classe PbDeDeplacement comporte une méthode virtuelle « faireLeNecessaire » qui sera
redéfini dans les 2 classes dérivées PbSortieGrille & PbPercuteObstacle.
Travail à remettre
• Créer dans le workspace « live office » un répertoire intitulé TP4.
• Déposer un fichier intitulé RobotException.txt comportant la fusion de tous le contenu de
vos fichiers ‘.h’ et fichiers ‘.cpp’.
o Veillez à l’ordre de vos classes afin que la compilation du contenu puisse se faire
sans problème.