IFT232 Méthodes Orientées Objets
Exercices VI
Solutionnnaire
Le but de cette séance d’exercices est de vous préparer pour l’examen final. Voici un exemple
partiel d’examen. Vous auriez normalement 3 heures pour le solutionner sur papier. Dans le
cadre de cette séance d’exercices, vous devez faire les implémentations complètes.
Les solutions décrites ici ne sont pas optimales, mais acceptables. La meilleure solution se trouve
dans le fichier .jar.
Étude de cas : Robot Autonome
Vous venez de découvrir dans le grenier de vos grands-parents, un robot de la première
génération des robots autonomes. Ces robots pouvaient mener une vie presque autonome… à
condition bien sûr de les programmer correctement. Le vôtre est déjà programmé en Java, un
vieux langage de programmation certes, mais malgré tout pas si mal foutu.
Plein d’espoir, vous commencez à examiner le code du programme, que vous trouverez ci-
dessous. Les classes principales sont Film, Lieu, Marchandise et Robot. Les classes
Film, Lieu, Marchandise représentent en fait des structures de données passées en
arguments aux actions primitives que peut réaliser un robot. La classe Robot contient les
actions primitives. Ces actions primitives sont encodées sous forme de méthodes :
voir(Film) , aller(Lieu) , dormir(Lieu, Date), acheter(Marchandise).
Des scripts plus complexes peuvent être aussi spécifiés à l’aide de méthode. La méthode
passerUneBonneSoiree() constitue un exemple d’une action complexe correspondant è
une séquence d’actions primitives. Un robot vieillit et les actions primitives qu’il peut réaliser
sont contraintes par son âge. Un robot de moins de 13 ans est considéré comme un enfant. Un
robot âgé entre 13 et 18 ans comme un adolescent. Un robot âgé de 18 ans et plus comme un
adulte.
Après avoir examiné le code existant de près, vous êtes franchement déçu. A preuve, toutes ces
conditionnelles, ce n’est vraiment pas de la programmation par objets... Le coeur vaillant et plein
d’espoir vous décidez de refactoriser le code afin de le rendre facilement modifiable pour
pouvoir ajouter de nouvelles fonctionnalités à votre robot, en particulier,
modifier son comportement en fonction de nouvelles catégories d’âge,
implémenter de nouvelles actions primitives,
implémenter la possibilité de réaliser de nouvelles commandes complexes,
augmenter son autonomie de décision...
Voici les fragments principaux du programme de votre robot.