Тут всё Ясно

Реши задачу с деревьям с помощью паттерна легковес 4 класса Tree, TreeFactory, TreeType Forest

Пройдите быструю авторизацию для просмотра:

Продолжая, вы даете согласие на обработку персональных данных, соглашаетесь с условиями использования cookies, а также подтверждаете ознакомление с публичной офертой.

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 выводит информацию о каждом дереве в лесу.

Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.

Напишите нам, если в вопросе есть ваши персональные данные ([email protected])

Последние вопросы

  • Напиши одну главу диплома по теме чат бот активный туризм Калининградской области и основные значения библиотек для создания чат бота
  • Анализ затрат производства керамогранита в динамике по исходным данным, приведенным в табл. 1. Таблица: Сравнение доходов компаний по производству плитки и керамики Показатель 2020 2021
  • Анализ затрат производства керамогранита в динамике по исходным данным, приведенным в табл. 1. Таблица: Сравнение доходов компаний по производству плитки и керамики Показатель 2020 2021
  • играя в гта 5 рп - Тайрон - член банды из Дэвиса. После нескольких месяцев продажи наркотиков он решает вложить накопленный капитал и открыть ночной клуб в центре Вайнвуда. Тайрон устанавливает связи
  • Существуют-ли телепаты параллельных миров, и что они представляют собой?
  • Существует-ли научное объяснение сбоев матрицы, и что оно представляет собой?