Dans cette mission, vous allez approfondir votre compréhension des concepts fondamentaux de la programmation orientée objet en Python. L’objectif est de consolider les compétences acquises dans les missions précédentes tout en explorant de nouvelles notions clés :
Si vous n'avez pas encore eu le temps de relire en détail les différents chapitres de la partie Objects du syllabus en ligne, maintenant est venu le moment de rattraper votre retard. Le syllabus explique bien différents concepts, sur un autre exemple que les exemples utilisés dans le cours magistral :
On vous conseille également de tester et de jouer avec les différents exemples de code qui se trouvent dans les annexes suivantes, venant soit du syllabus en ligne soit correspondant aux exemples du cours magistral :
Dans la mission précédente, vous avez créé et utilisé des classes représentant différents types de médias (LivreAudio, Vidéo, ...), qui sont des sous-classes de la classe Media, ainsi qu’une classe ListeLecture pour les organiser. Dans cette nouvelle mission, vous allez implémenter la fonctionnalité de sauvegarde de vos médias et de vos listes de lecture dans des fichiers texte. Vous travaillerez à la fois sur l’héritage et la réutilisation du code dans la classe mère, tout en approfondissant le concept de polymorphisme : une même méthode pouvant être appelée sur des objets de types différents et produisant un comportement spécifique à chaque type d’objet.
Vous disposez déjà des classes suivantes :
Votre fichier mission10.py doit inclure :
La méthode save() doit permettre de sauvegarder les informations d’un média dans un fichier texte. Le fichier doit être nommé selon le format : auteur_titre_typeMedia.txt et contenir les noms des attributs du média ainsi que leurs valeurs.
Exemple attendu pour LivreAudio:
Nom du fichier : "Cube Kid_Journal d'un noob (tome 1)_LivreAudio.txt"
Contenu du fichier:
Titre : Journal d'un noob (tome 1)
Auteur : Cube Kid
Durée : 02:36:21
Editeur : 404 Éditions
Exemple attendu pour Video :
Nom du fichier : "LeCrafteur_Tuto installation Minecraft_Video.txt"
Contenu du fichier:
Titre : Tuto installation Minecraft
Auteur : LeCrafteur
Durée : 00:10:01
Resolution : 720p
Vous devez également implémenter la méthode save() dans la classe ListeLecture. Cette méthode doit sauvegarder tous les médias contenus dans la liste, en appelant leur propre méthode save() un par un.
Enfin, dans tous les cas, si un fichier portant le même nom existe déjà, la sauvegarde de ce fichier ne se fera pas.
Prenez connaissance du fichier mission10.py et examinez la méthode save() déjà implémentée dans la classe LivreAudio.
Ajoutez la méthode save() également dans la classe Video.
Analysez en détail ce que les méthodes save() des classes LivreAudio et Video ont en commun.
Dans la méthode save() de la classe mère, crééz le fichier et sauvegardez les attributs communs à tous les médias.
Dans chaque sous-classe, rouvrez le fichier pour y ajouter les atttributs spécifiques à ce type de média.
Pour rouvrir un fichier sans écraser son contenu, utilisez :
open(nom_fichier, "a") # mode Append
plutôt que :
open(nom_fichier, "w") # mode Write
car le mode "w" écrase le contenu existant.
Pour cette mission, vous devez soumettre les fichiers suivants :
Bonnes pratiques :