Задание
Last modified: 08 April 2025Условие
Реализуйте систему для представления структуры файловой системы с использованием паттерна "Компоновщик". В файловой системе есть два типа элементов: файлы и директории. Директории могут содержать как файлы, так и другие директории.
Необходимо создать абстракцию для элементов файловой системы и конкретные реализации для файлов и директорий. Также требуется создать метод для отображения содержимого директории и расчета общего размера файлов в ней.
Требования
Создайте интерфейс
FileSystemElement
, который определяет методыdisplay()
иget_size()
.Реализуйте классы
File
иDirectory
, которые будут использовать интерфейсFileSystemElement
.В классе
Directory
реализуйте метод для добавления элементов в директорию.Реализуйте метод для отображения содержимого директории.
Реализуйте метод для расчета общего размера файлов в директории.
Создайте клиентский код, который демонстрирует использование созданной системы.
Пример использования
# Клиентский код
def main():
root = Directory("root")
home = Directory("home")
user = Directory("user")
file1 = File("file1.txt", 100)
file2 = File("file2.txt", 200)
file3 = File("file3.txt", 300)
root.add(home)
home.add(user)
user.add(file1)
user.add(file2)
root.add(file3)
root.display()
print(f"\nTotal size: {root.get_size()} bytes")
if __name__ == "__main__":
main()