Module 3Appliquer la POO en Python
Chapitre 10 sur 10
Examen blanc et fiche mémo
Te tester sur l'ensemble du module et garder une fiche mémo des concepts POO.
- ≈ 90 min
- 2 leçons
- 3 exercices
- TP
Module 3Appliquer la POO en Python
Chapitre 10 sur 10
Te tester sur l'ensemble du module et garder une fiche mémo des concepts POO.
Objectifs
Avec ce chapitre, tu sauras…
Fais cet examen en 2 heures, sans le cours. Les parties A et B se font sur papier, les parties C et D sur ordinateur. Corrige-toi avec le barème, puis retravaille les chapitres où tu as perdu le plus de points.
Leçon 1
| Partie | Contenu | Points | Chapitres |
|---|---|---|---|
| A | questions à choix multiples | 10 | 1 à 9 |
| B | questions de cours et analyse de code | 8 | 1 à 5 |
| C | implémentation de classes | 14 | 4, 5, 7, 8 |
| D | interface graphique | 8 | 9 |
| Total | 40 |
Leçon 2
| Concept | Définition | En Python |
|---|---|---|
| classe | modèle qui décrit les attributs et méthodes d'un type d'objets | class Compte: |
| objet / instance | exemplaire concret d'une classe | c = Compte("MA001") |
| constructeur | méthode appelée à la création | def __init__(self, ...): |
| attribut d'instance | propre à chaque objet |
1Un objet est caractérisé par…
2Une instance est…
3La relation entre une classe fille et sa classe mère est…
4Redéfinir une méthode héritée s'appelle…
5La liaison retardée (dynamique) permet…
6En Python, un attribut __solde est…
7Une classe abstraite…
8Pour définir une méthode de classe en Python :
9Une exception personnalisée hérite généralement de…
10Dans Tkinter, la boucle des événements est lancée par…
L'essentiel du chapitre
self ; un constructeur de fille appelle super().__init__().self.solde = 0 |
| attribut de classe | partagé par toutes les instances | nombre = 0 dans la classe |
| méthode de classe | agit sur la classe | @classmethod def f(cls): |
| méthode statique | fonction rangée dans la classe | @staticmethod def f(): |
| héritage | une classe fille reprend une classe mère | class Fille(Mere): |
| appel à la mère | réutiliser le code hérité | super().__init__(...) |
| redéfinition | réécrire une méthode héritée | même nom dans la fille |
| polymorphisme | même message, comportements différents | for f in formes: f.surface() |
| encapsulation | cacher l'état, accès contrôlé | self.__x, @property, @x.setter |
| abstraction | classe non instanciable, contrat | class F(ABC):, @abstractmethod |
| interface | toutes les méthodes abstraites | classe ABC sans méthode concrète |
| composition | un objet contient d'autres objets | self.comptes = [] |
| exception | objet représentant une erreur | class MonErreur(Exception):, raise, try/except |
| GUI | interface graphique événementielle | tk.Tk(), widgets, command=, mainloop() |
Crée une classe ApplicationIMC(tk.Tk) : deux champs (poids en kg, taille en m), un bouton « Calculer » qui affiche l'IMC (poids / taille²) arrondi à 1 décimale et l'interprétation (< 18,5 : maigreur ; < 25 : normal ; sinon : surpoids), et un message d'erreur si une saisie n'est pas un nombre positif.
class Animal:
def parler(self):
return "..."
class Chien(Animal):
def parler(self):
return "Wouf"
class Chat(Animal):
def parler(self):
return "Miaou"
for a in [Animal(), Chien(), Chat()]:
print(a.parler())Une agence loue des véhicules.
VehiculeIndisponible. (1 pt)Vehicule : immatriculation (privée, en lecture seule par propriété), marque, prix par jour (refusant une valeur négative), attribut disponible ; méthode abstraite prix_location(jours) ; méthodes louer() (lève VehiculeIndisponible si déjà loué) et rendre() ; __str__. (5 pts)Voiture (prix = jours × prix par jour) et Camion (même calcul + 200 DH d'assurance fixe). (3 pts)Agence qui contient une liste de véhicules, avec ajouter(), vehicules_disponibles() et chiffre_affaires(locations) où locations est une liste de couples (vehicule, jours). (3 pts)