Помогите написать код на 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 уже описывают конкретное поведение.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

