T2.1 POO: Exercices⚓︎
Exercice 1
- Compléter la classe
Balleavec la méthodeavancequi doit actualiser les coordonnées de l'objet en gérant les rebonds sur les bords de la fenêtre. - Créer une liste de 100 instances de cette classe et compléter la boucle des événements.
- Si possible, gérer les collisions...
Exercice 2
- Écrire une classe
Voiturequi contiendra les attributskilometrage,consommationdont les valeurs seront données comme arguments à l'initialisation et un attributcarburantvalant0par défaut. - Doter la classe d'une méthode
affichequi donne le kilométrage et le carburant disponible. - Doter la classe d'une méthode
remplirqui prend en argument un entier correspondant au volume de carburant à ajouter au réservoir. - Doter la classe d'une méthode
avancequi prend en argument un entier correspondant au nombre de kilomètres parcourus et qui actualise les valeurs des attributskilometrageetcarburant.
>>> christine = Voiture(0, 8)
>>> christine.affiche()
La voiture a parcouru 0 kilomètres et il y a 0 litres d'essence dans le réservoir.
>>> christine.remplir(25)
>>> christine.avance(200)
>>> christine.affiche()
La voiture a parcouru 200 kilomètres et il y a 9.0 litres d'essence dans le réservoir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Exercice 3
- Écrire une classe
Chronoqui contiendra les attributsheures,minutesetsecondes. - Doter la classe d'une méthode
affiche()qui affichera le tempst. - Doter la classe d'une méthode
avance(s)qui fera avancer le tempstdessecondes.
>>> t = Chrono(17,25,38)
>>> t.heures
17
>>> t.minutes
25
>>> t.secondes
38
>>> t.affiche()
'Il est 17 heures, 25 minutes et 38 secondes'
>>> t.avance(27)
>>> t.affiche()
'Il est 17 heures, 26 minutes et 5 secondes'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Exercice 4
Écrire une classe Player qui :
- ne prendra aucun argument lors de son instanciation.
- affectera à chaque objet créé un attribut
energievalant 3 par défaut. - affectera à chaque objet créé un attribut
alivevalantTruepar défaut. - fournira à chaque objet une méthode
blessure()qui diminue l'attributenergiede 1. - fournira à chaque objet une méthode
soin()qui augmente l'attributenergiede 1. - si l'attribut
energiepasse à 0, l'attributalivedoit passer àFalseet ne doit plus pouvoir évoluer.
>>> mario = Player()
>>> mario.energie
3
>>> mario.soin()
>>> mario.energie
4
>>> mario.blessure()
>>> mario.blessure()
>>> mario.blessure()
>>> mario.alive
True
>>> mario.blessure()
>>> mario.alive
False
>>> mario.soin()
>>> mario.alive
False
>>> mario.energie
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Exercice 5
On souhaite construire une base d'objets servant à créer des jeux utilisant des dés.
-
Un dé doit posséder un nombre de faces, ainsi qu'une valeur (la face supérieure du dé une fois qu'on l'a lancé, et la valeur -1 s'il n'a pas encore été lancé). On doit pouvoir lancer le dé, c'est-à-dire lui attribuer une valeur aléatoire entre 1 et son nombre de faces).
-
Un jeu de dés possède un nombre de dés ainsi qu'un ensemble de ces dés. On doit pouvoir lancer tous les dés (en une fois), faire la somme des valeurs des dés, et on souhaite afficher la valeur des dés ainsi que leur somme.
Questions:
- Créer un diagramme de classe pour deux classes représentant ce problème: une classe
Jeuet une classeDe. - Écrire les classes, sachant qu'une instance de classe
Jeudoit prendre en arguments le nombre de dés et le nombre de faces de chaque dé (identique pour tous les dés), et qu'une instance de classeDedoit prendre en argument son nombre de faces.
>>> j = Jeu(3, 6) #pour créer un jeu de 3 dés à 6 faces
>>> print(j)
Les dés n'ont pas été lancés
>>> j.lancer()
>>> j.somme()
13
>>> print(j)
Les dés valent 2, 5 et 6 et leur somme vaut 13.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |
Exercice 6
On définit une classe gérant une adresse IPv4.
On rappelle qu’une adresse IPv4 est une adresse de longueur 4 octets, notée en décimale
à point, en séparant chacun des octets par un point. On considère un réseau privé avec
une plage d’adresses IP de 192.168.0.0 à 192.168.0.255.
On considère que les adresses IP saisies sont valides.
Les adresses IP 192.168.0.0 et 192.168.0.255 sont des adresses réservées.
Le code ci-dessous implémente la classe AdresseIP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
'192.168.0.1', '192.168.0.2', '192.168.0.0'.
Vérifier que:
>>> adresse1.liste_octets()
[192, 168, 0, 1]
>>> adresse1.est_reservee()
False
>>> adresse3.est_reservee()
True
>>> adresse2.adresse_suivante().adresse # acces valide à adresse
# ici car on sait que l'adresse suivante existe
'192.168.0.3'
Exercices Type BAC