Exercice 22 (Classe Livre avec héritage de la classe Roman)
I - Classe Livre
1) - Écrire une classe Python Livre ayant les méthodes et attributs suivants :
- titre : (string)
- auteur : (string)
- nb_pages : (int)
2) - Créer un constructeur __init__
3) - Créer une méthode afficher_infos() : affiche (titre, auteur, nb_pages)
II - Héritage
4) - Créez une classe Roman héritant de la classe Livre en ajoutant un attribut : genre (string)
5) - Créer un constructeur qui appelle le constructeur de Livre et initialise genre.
6) - Ajouter une méthode afficher_genre() : affiche le genre.
7) - Getters et Setters : Ajouter des méthodes get_ et set_ pour chaque attribut dans les deux classes.
8) - Créez un objet Roman et affichez infos + genre, modifiez quelques attributs avec les setters et réaffichez pour vérifier
Solution
Partie I : classe Livre
|
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# ========================================= # I - Classe Livre # ========================================= # 1) Écrire une classe Python nommée Livre class Livre: # 2) Créer un constructeur __init__ def __init__(self, titre, auteur, nb_pages): # Attributs de la classe Livre self._titre = titre # titre du livre (string) self._auteur = auteur # auteur du livre (string) self._nb_pages = nb_pages # nombre de pages (int) # 3) Créer une méthode afficher_infos() # qui affiche : titre, auteur, nb_pages def afficher_infos(self): print("Titre :", self._titre) print("Auteur :", self._auteur) print("Nombre de pages :", self._nb_pages) # 7) Getters (accesseurs) def get_titre(self): return self._titre def get_auteur(self): return self._auteur def get_nb_pages(self): return self._nb_pages # 7) Setters (mutateurs) def set_titre(self, titre): self._titre = titre def set_auteur(self, auteur): self._auteur = auteur def set_nb_pages(self, nb_pages): if nb_pages > 0: self._nb_pages = nb_pages else: print("Erreur : le nombre de pages doit être positif.") # ========================================= # Tests (sans if __name__ == "__main__") # ========================================= # Création d'un objet Livre livre1 = Livre("Python pour débutants", "Auteur Inconnu", 250) # Affichage des informations livre1.afficher_infos() # Modification des attributs avec les setters livre1.set_titre("Python Avancé") livre1.set_nb_pages(300) # Réaffichage print("\nAprès modification :") livre1.afficher_infos() |
Sortie du programme
|
1 2 3 4 5 6 7 8 |
Titre : Python pour débutants Auteur : Auteur Inconnu Nombre de pages : 250 Après modification : Titre : Python Avancé Auteur : Auteur Inconnu Nombre de pages : 300 |
Partie II : Héritage (Roman)
|
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 44 45 46 47 48 49 50 51 52 53 54 55 |
# ========================================= # II - Héritage # ========================================= # 4) Créer une classe Roman héritant de la classe Livre class Roman(Livre): # 5) Créer un constructeur qui appelle le constructeur de Livre def __init__(self, titre, auteur, nb_pages, genre): # Appel du constructeur de la classe mère Livre super().__init__(titre, auteur, nb_pages) # Attribut spécifique à la classe Roman self._genre = genre # 6) Ajouter une méthode afficher_genre() def afficher_genre(self): print("Genre :", self._genre) # 7) Getter pour l'attribut genre def get_genre(self): return self._genre # 7) Setter pour l'attribut genre def set_genre(self, genre): self._genre = genre # ========================================= # Tests (sans if __name__ == "__main__") # ========================================= # 8) Créer un objet Roman roman1 = Roman( "Les Misérables", "Victor Hugo", 1488, "Roman historique" ) # Affichage des informations (héritées de Livre) roman1.afficher_infos() # Affichage du genre roman1.afficher_genre() # Modification de quelques attributs avec les setters roman1.set_titre("Notre-Dame de Paris") roman1.set_nb_pages(940) roman1.set_genre("Roman classique") # Réaffichage après modification print("\nAprès modification :") roman1.afficher_infos() roman1.afficher_genre() |
Sortie du programme
|
1 2 3 4 5 6 7 8 9 10 |
Titre : Les Misérables Auteur : Victor Hugo Nombre de pages : 1488 Genre : Roman historique Après modification : Titre : Notre-Dame de Paris Auteur : Victor Hugo Nombre de pages : 940 Genre : Roman classique |
Younes Derfoufi
CRMEF OUJDA



