TP1 - Prise en main
- Prendre en main la programmation Objet ;
- Créer des entêtes de classe ;
- Manipuler des objets.
- Se créer un dossier
Terminale NSI
sur votre ordinateur ou clé USB - Dans ce dossier, créer un dossier
POO
(Programmation Orientée Objet)
Sur EduPython ou autre instance python, faire :
- Créer un nouveau fichier en cliquant sur l'icône
📄
, ou en appuyant surCTRL
+N
- Enregistrer le fichier sous le nom
TP1_Base
en cliquant sur l'icône💾
, ou en appuyant surCTRL
+S
L'ensemble des exercices se fait sur python.
Exercice 1 - Pokémon
On souhaite créer une classe qui représente un Pokemon. Un Pokemon est une créature de combat aux multiples caractéristiques qui peut en affronter un autre en combat singulier,jusqu'à ce que défaite s'en suive.
On définit un Pokemon par un nom (son espèce) et un nombre de points de vie.
- Relever dans le texte les informations qui caractérisent un Pokemon.
- Écrire l'entête de la classe
Pokemon
, sans méthodes ni attributs. - Écrire le constructeur de la classe
Pokemon
. On n'oubliera pas les paramètres nécessaires à sa construction, ni ses attributs.
On souhaite créer 2 Pokemon, c'est-à-dire les instancier à partir de notre classe.
- Créer le Pokemon
Pikachu
avec 50 points de vie, et le PokemonSalamèche
avec 45 points de vie. - Écrire la méthode spéciale permettant l'affichage des informations d'un pokémon, la tester.
Pour faire un combat, il faut mettre en place un système permettant de faire diminuer les points de vie.
- Écrire une méthode
pertePDV(self,montant)
qui soustrait fait perdre à un Pokemon appelant cette méthode montant points de vie.
Pour faire un combat, il faut aussi savoir combien de dégât font les Pokemon.
- Modifier le constructeur de la classe Pokemon pour qu'il prenne en plus en paramètre un entier, correspondant aux dégâts qu'un Pokémon fait.
- Écrire une méthode
combat(self,pkmn)
qui prend un Pokemon en paramètre (un OBJETPokemon
créé) et qui soustrait les points de vie du Pokemon qui appelle la fonction par les dégâts du Pokemon en paramètre. Si le Pokemon atteint les 0 points de vie, on affiche "KO".ExemplePikachu a 50 PDV, et fait 10 dégâts. Salamèche a 45 PDV, et fait 15 dégâts. Si Pikachu attaque Salamèche, cela donnerait : pikachu.combat(Salameche), et la vie de Salameche baissera d'autant de dégât que fait Pikachu, soit 45-10 = 35.
- Un Pokemon peut avoir 4 attaques différentes. Modifier le constructeur pour qu'à la place de faire passer un entier correspondant au dégât, on puisse passer une liste de 4 éléments comportant un entier différent.
Exemple
Pikachu faisait de base 10 dégâts, maintenant Pikachu aura le choix parmi [5, 10, 12, 15] dégâts.
- Notre Pokemon va maintenant attaquer aléatoirement. Avec la bibliothèque random dont les fonctions sont disponibles en annexe, modifier la fonction combat(self,pkmn) pour qu'elle choisisse un nombre aléatoire entre 1 et 4, et fait autant de dégât que la valeur
à l'indice du nombre aléatoire dans la liste.
Exemple
Pikachu a le choix parmi [5, 10, 12, 15] dégâts. Mon nombre aléatoire est 3, Pikachu fera 12 dégâts.
Exercice 2 - Chef d'orchestre
On souhaite avoir une classe permettant d'instancier un orchestre. Un orchestre est un ensemble de musiciens jouant de différents instruments, dans le but de produire une oeuvre musicale.
Pour savoir de quels instruments sera composé notre orchestre, il faut commencer par définir les instruments.
Classe Instrument
On définit un instrument par son nom, sa famille (bois, cuivre etc...), et enfin sa classification (corde, percussion ...). L'instrument que l'on va créer devra être capable d'afficher son nom, sa famille et sa classification (via une méthode d'affichage).
- Écrire la classe
Instrument
avec son constructeur et ses attributs. - Instancier 2 instruments : une clarinette de la famille des instruments à bois, classifiée comme étant un instrument à vent; et un piano de la famille des instruments à claviers, classifié comme étant un instrument à cordes.
- Écrire la méthode spéciale d'affichage qui permet à un instrument de dire son nom, sa famille d'instrument et sa classification.
Classe Orchestre
Un orchestre est défini par un nom, ainsi qu'une liste comprenant différents instruments.
- Écrire la classe Orchestre avec son constructeur et ses attributs.
- Instancier un orchestre avec les 2 instruments créés précédemment.
- Instancier un second orchestre avec les 2 mêmes instruments, et écrire la méthode spéciale permettant de comparer 2 objets de classe. La méthode doit retourner True en comparant le premier orchestre avec le second, et False sinon.
- Écrire la méthode spéciale permettant l'affichage des informations d'un orchestre, la tester.
- On souhaite pouvoir ajouter des instruments à notre orchestre. Écrire une méthode ajoutInstrument(self,instru) dans la classe Orchestre, qui prend un instrument en paramètre, et l'ajoute dans la liste des instruments.
- Faire la même chose mais en utilisant cette fois-ci la méthode spéciale utilisant l'opérateur +.
- On souhaite pouvoir supprimer des instruments. Écrire uné méthode supprimerInstrument(self,instru), qui prend un instrument en paramètre, et le supprime de l'orchestre.
- Faire la même chose en utilisant cette fois-ci la méthode spéciale utilisant l'opérateur -.
En fonction des familles d'instruments présentes, l'orchestre prend un nom différent. On souhaite ainsi savoir quel type d'orchestre on a créé.
- Écrire une méthode typeOrchestre(self) dans la classe Orchestre qui renvoie :
- "Orchestre symphonique" si notre orchestre est composé d'instruments à cordes ET à bois ET à cuivre ET à percussions;
- "Orchestre harmonique" si notre orchestre est composé d'instruments à bois ET à cuivre ET à percussions;
- "Fanfare" si notre orchestre est composé d'instruments à cuivre ET à percussions ET à saxophones;
- "Bagad" si notre orchestre est composé d'instruments à bois ET à percussions;
- "Pas un orchestre encore" si ce n'est rien de tout ça.