Вопрос задан 05.09.2026 в 05:55. Предмет Информатика. Спрашивает Ляхов Данил.

Помогите написать код на Python. Создайте абстрактный класс Dish, который определяет общий интерфейс для всех блюд, и классы Starter, MainCourse и Dessert, которые наследуются от Dish и предоставляют конкретную реализацию для каждого типа блюд. Кроме того, можно создать абстрактный класс Order, который определяет общий интерфейс для заказов, и классы TableOrder и DeliveryOrder, которые наследуются от Order и предоставляют конкретную реализацию для заказов в ресторане и на доставку соответственно.

Перейти к ответам

Ответы на вопрос

Отвечает Логунова Полина.

Пример кода на Python:

from abc import ABC, abstractmethod

class Dish(ABC):
    def __init__(self, name, price):
        self.name = name
        self.price = price

    @abstractmethod
    def get_description(self):
        pass

class Starter(Dish):
    def get_description(self):
        return f'Закуска: {self.name}, цена: {self.price} руб.'

class MainCourse(Dish):
    def get_description(self):
        return f'Основное блюдо: {self.name}, цена: {self.price} руб.'

class Dessert(Dish):
    def get_description(self):
        return f'Десерт: {self.name}, цена: {self.price} руб.'

class Order(ABC):
    def __init__(self):
        self.dishes = []

    def add_dish(self, dish):
        self.dishes.append(dish)

    def get_total_price(self):
        return sum(dish.price for dish in self.dishes)

    @abstractmethod
    def get_order_info(self):
        pass

class TableOrder(Order):
    def __init__(self, table_number):
        super().__init__()
        self.table_number = table_number

    def get_order_info(self):
        return f'Заказ за столиком №{self.table_number}. Сумма: {self.get_total_price()} руб.'

class DeliveryOrder(Order):
    def __init__(self, address):
        super().__init__()
        self.address = address

    def get_order_info(self):
        return f'Заказ на доставку по адресу: {self.address}. Сумма: {self.get_total_price()} руб.'

starter = Starter('Салат', 250)
main = MainCourse('Паста', 500)
dessert = Dessert('Мороженое', 200)

order = TableOrder(5)
order.add_dish(starter)
order.add_dish(main)
order.add_dish(dessert)

print(starter.get_description())
print(main.get_description())
print(dessert.get_description())
print(order.get_order_info())

Здесь Dish и Order — абстрактные классы. Они задают общий набор методов, а Starter, MainCourse, Dessert, TableOrder и DeliveryOrder уже описывают конкретное поведение.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос