Exercices de POO - série 2
Crédits⚓︎
Ces exercices ont été créés par Gilles Lassus et publiés sous licence cc nc-by-sa
Exercices⚓︎
Exercice 1
- Écrire une classe
Eleve
qui contiendra les attributsnom
,classe
etnote
. - Instancier trois élèves de cette classe.
- Écrire une fonction
compare(eleve1, eleve2)
qui renvoie le nom de l'élève ayant la meilleure note.
Exemple d'utilisation de la classe
>>> riri = Eleve("Henri", "TG2", 12)
>>> fifi = Eleve("Philippe", "TG6", 15)
>>> loulou = Eleve("Louis", "TG1", 8)
>>> compare(riri, fifi)
'Philippe'
🐍 Script Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
Exercice 2
Écrire une classe TriangleRect
qui contiendra les attributs cote1
, cote2
et hypotenuse
.
La méthode constructeur ne prendra en paramètres que cote1
et cote2
, l'attribut hypotenuse
se calculera automatiquement.
⚠️ Attention, hypotenuse
n'est pas une méthode.
Exemple d'utilisation de la classe
>>> mon_triangle = TriangleRect(3,4)
>>> mon_triangle.cote1
3
>>> mon_triangle.cote2
4
>>> mon_triangle.hypotenuse
5.0
Exercice 3
- Écrire une classe
Chrono
qui contiendra les attributsheures
,minutes
etsecondes
. - Doter la classe d'une méthode
affiche()
qui fera affichera le tempst
. - Doter la classe d'une méthode
avance(s)
qui fera avancer le tempst
des
secondes.
Exemple d'utilisation de la classe
>>> 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'
🐍 Script Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Exercice 4
Écrire une classe Player
qui :
- ne prendra aucun argument lors de son instanciation.
- affectera à chaque objet créé un attribut
energie
valant 3 par défaut. - affectera à chaque objet créé un attribut
alive
valantTrue
par défaut. - fournira à chaque objet une méthode
blessure()
qui diminue l'attributenergie
de 1. - fournira à chaque objet une méthode
soin()
qui augmente l'attributenergie
de 1. - si l'attribut
energie
passe à 0, l'attributalive
doit passer àFalse
et ne doit plus pouvoir évoluer.
Exemple d'utilisation de la classe
>>> 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
🐍 Script Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Exercice 5
Créer une classe CompteBancaire
dont la méthode constructeur recevra en paramètres :
- un attribut
titulaire
stockant le nom du propriétaire. - un attribut
solde
contenant le solde disponible sur le compte.
Cette classe contiendra deux méthodes retrait()
et depot()
qui permettront de retirer ou de déposer de l'argent sur le compte.
Exemple d'utilisation de la classe
>>> compteGL = CompteBancaire("G.Lassus", 1000)
>>> compteGL.retrait(50)
Vous avez retiré 50 euros
Solde actuel du compte : 950 euros
>>> compteGL.retrait(40000)
Retrait impossible
>>> compteGL.depot(10000000)
Vous avez déposé 10000000 euros
Solde actuel du compte : 10000950 euros
🐍 Script Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Exercice 6
Cet exercice est l'exercice 5.2 de la BNS (version 2022) légèrement modifié.
On dispose d’un programme permettant de créer un objet de type PaquetDeCarte
,
selon les éléments indiqués dans le code ci-dessous.
Compléter ce code aux endroits indiqués par ...
, puis ajouter des
assertions dans l’initialiseur de Carte
, ainsi que dans la méthode getCarteAt()
.
🐍 Script Python | |
---|---|
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 |
|
👉 Exemple :
>>> unPaquet = PaquetDeCarte()
>>> unPaquet.remplir()
>>> uneCarte = unPaquet.getCarteAt(20)
>>> print(uneCarte.getNom() + " de " + uneCarte.getCouleur())
8 de coeur
🐍 Script Python | |
---|---|
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 39 |
|
Exercice 7 : Une bibliothèque
👉 Gestion d'une bibliothèque
Il s'agit de gérer les livres d'une bibliothèque, à l'aide de deux classes, la classe Livre
et la classe Bibliotheque
.
Le cahier des charges ci-dessous comporte la description des deux classes, ainsi qu'un exemple concret de leur utilisation.
👉 classe Livre
Elle comporte 3 attributs :
titre
: le titre du livreauteur
: le nom de l'auteuretat
: un nombre entier entre 0 et 5. Si l'état vaut 0, le livre est trop abîmé et doit être retiré de la bibliothèque. L'état d'un livre ne peut pas être négatif.
Elle comporte 2 méthodes :
- degrade
: enlève 1 à l'état du livre.
- description
: affiche les renseignements sur le livre
👉 classe Bibliotheque
Elle comporte 1 attribut :
- livres
: une liste (vide à la création de l'objet)
Elle comporte 3 méthodes :
ajoute
: prend un livre en paramètre et l'ajoute à la bibliothèque.supprime_livres_abimes
: enlève de la bibliothèque les livres trop abîmés.inventaire
: affiche le contenu de la bibliothèque
👉 Exemple d'utilisation des classes
>>> ma_bibli = Bibliotheque()
>>> livre1 = Livre("Les Misérables", "Victor Hugo", 3)
>>> livre2 = Livre("Les fleurs du mal", "Charles Baudelaire", 1)
>>> ma_bibli.ajoute(livre1)
>>> ma_bibli.ajoute(livre2)
>>> livre1.description()
Titre : Les Misérables
Auteur : Victor Hugo
Etat : 3
>>> livre2.degrade()
>>> livre2.description()
Titre : Les fleurs du mal
Auteur : Charles Baudelaire
Etat : 0
>>> ma_bibli.inventaire()
-------------------------------
contenu de ma bibliothèque :
-------------------------------
Titre : Les Misérables
Auteur : Victor Hugo
Etat : 3
Titre : Les fleurs du mal
Auteur : Charles Baudelaire
Etat : 0
>>> ma_bibli.supprime_livres_abimes()
>>> ma_bibli.inventaire()
-------------------------------
contenu de ma bibliothèque :
-------------------------------
Titre : Les Misérables
Auteur : Victor Hugo
Etat : 3
Question
Proposer un code pour la classe Livre
et la classe Bibliotheque
répondant au cahier des charges.
🐍 Script Python | |
---|---|
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 39 40 41 42 43 |
|
Pour approfondir : Les fractions égyptiennes⚓︎
Pour le fun - travail facultatif
Si vous avez du temps ... et aimez les mathématiques ...
Après avoir téléchargé le fichier, vous pourrez le lire à partir de Basthon
🌐 TD à télécharger : Fichier Fractions_egyptiennes_POO_sujet_2022.ipynb
: "Clic droit", puis "Enregistrer la cible du lien sous"
⏳ La correction viendra bientôt ... si vous la demandez à votre professeur après lui avoir montré votre travail ... 😊
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)