Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Pattern Composite : Répertoire de fichiers
Le pattern Composite permet de traiter uniformement des objets individuels et des groupes d'objets. L'exemple classique, c'est un système de fichiers : un répertoire peut contenir des fichiers ou d'autres répertoires, et on peut calculer la taille totale de n'importe quel élément.
L'astuce : les fichiers et les répertoires ont la meme interface (taille_totale(), nb_fichiers()). Un fichier retourne sa propre taille. Un répertoire fait la somme récursive de ses enfants.
Implemente : - Fichier(nom, taille) avec taille_totale() retournant self.taille et nb_fichiers() retournant 1 - Répertoire(nom) avec : - ajouter(élément) : ajoute un fichier ou un sous-répertoire - taille_totale() : somme récursive de tous les éléments - nb_fichiers() : compte recursif du nombre de fichiers (pas de répertoires)
Exemple : racine = Répertoire('/') racine.ajouter(Fichier('img.png', 500)) sub = Répertoire('docs') sub.ajouter(Fichier('readme.txt', 100)) racine.ajouter(sub) racine.taille_totale() # 600 racine.nb_fichiers() # 2
Tests (3/4)
Fichier seul
f = Fichier('img.png', 500)
assert f.taille_totale() == 500