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 :