Programmation orientée objet

Transcription

Programmation orientée objet
Programmation orientée objet
L2 MPCIE
TP 9
Threads
« Course de voiture »
Une Voiture de course est caractérisée (entre autres) par son nom, un type lent ou rapide (un simple booléen suffira), une vitesse maximum (un double). La vitesse maximum est déduite du type de voiture : une voiture rapide en vitesse de pointe parcourt 100 mètres en une seconde, tandis qu'une voiture lente parcourt 50 mètres par seconde.
Une Course est caractérisée par une distance à parcourir d'au moins 500 mètres.
On considère que, lors d'une course, sur les 100 premiers mètres, une voiture de course (lente ou rapide) roule au cinquième de sa vitesse ; sur les 100 mètres suivants au tiers et sur les 100 suivants à la moitié. À partir de 300 mètres de distance parcourue, une voiture est lancée à sa vitesse maximum.
Créer la classe VoitureCourse comme étant une sous­classe de la classe Thread (issue du package java.lang) pour représenter le parcours d'une voiture lors d'une course. Cette classe disposera de champs renseignant la voiture concernée, la course à laquelle elle participe et la distance parcourue par la voiture pendant cette course. Implémenter la méthode run() de façon à ce que cette classe affiche tous les 100 mètres parcourus sur la sortie standard :
•
le nom de la voiture ;
•
la distance qu'elle a déjà parcourue ;
•
sa vitesse et donc le temps qu'elle va mettre pour parcourir les 100 prochains mètres (ce temps de parcours sera simulé par un appel à la méthode Thread.sleep(long ms)1 de la classe Thread) ;
•
si elle est arrivée.
Exercice 1
Dans le programme principal, faire concourir une voiture lente et une voiture rapide simultanément sur une même course de 1000 mètres de long. La voiture rapide devrait arriver bien avant la première.
Exercice 2
Il est maintenant demandé de faire partir la voiture rapide seulement lorsque la voiture lente aura parcouru 300 mètres ou plus. Pour cela :
1.
dans un premier temps, l'attente sera active ;
2.
dans un deuxième temps, faites en sorte que l'attente soit passive.
Une voiture indiquera en plus (par rapport à l'exercice 1) sur la sortie standard si elle a gagné ou non la course. Laquelle arrivera en première position ?
Essayer également avec 200 mètres d'attente.
Attention, cette méthode lève une exception de type InterruptedException. Pour gérer cette exception, on englobera le corps de la méthode run() par un try…catch.
1
L2 MPCIE – Programmation orientée objet
TP 9
1/1

Documents pareils