class TreeType: def __init__(self, name, color): self.name = name self.color = color class Tree: def __init__(self, x, y, tree_type): self.x = x self.y = y self.tree_type = tree_type class TreeFactory: tree_types = {} @classmethod def get_tree_type(cls, name, color): key = (name, color) if key not in cls.tree_types: cls.tree_types[key] = TreeType(name, color) return cls.tree_types[key] @classmethod def create_tree(cls, x, y, name, color): tree_type = cls.get_tree_type(name, color) return Tree(x, y, tree_type) class Forest: def __init__(self): self.trees = [] def plant_tree(self, x, y, name, color): tree = TreeFactory.create_tree(x, y, name, color) self.trees.append(tree) def draw(self): for tree in self.trees: print(f"Tree type: {tree.tree_type.name}, color: {tree.tree_type.color}, position: ({tree.x}, {tree.y})") # Пример использования forest = Forest() forest.plant_tree(1, 2, "Oak", "Green") forest.plant_tree(3, 4, "Pine", "Brown") forest.draw()
В данном примере мы создаем классы TreeType, Tree, TreeFactory и Forest. Класс TreeType представляет тип дерева с указанием имени и цвета. Класс Tree представляет отдельное дерево с координатами и типом дерева. Класс TreeFactory отвечает за создание типов деревьев и самих деревьев. Класс Forest представляет лес, в котором можно разместить деревья.
При добавлении нового дерева в лес с помощью метода plant_tree, происходит создание дерева с помощью TreeFactory, который в свою очередь создает или возвращает уже существующий тип дерева. Метод draw выводит информацию о каждом дереве в лесу.
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.