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 le début simplement 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 (son nom et son nombre de points de vie), ni les attributs de notre Pokemon.
- 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 Pokemon "Salamèche" avec 45 points de vie. - Écrire une méthode quiSuisJe(self) qui, pour chaque Pokemon, affiche son nom et son nombre de point de vie en utilisant les attributs.
- 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
montant
à la vie du Pokemon qui appelle la méthode. - 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 OBJET
Pokemon
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".
Exemple : Pikachu 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 fonction affichage(self) 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.
- Écrire une méthode affichage(self) dans la classe Orchestre qui affiche le nom de l'orchestre, puis, pour chaque instrument, utilise sa méthode d'affichage.
- 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.
- 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.
- 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.