Помощь в написании программы

USER: PIP_INSTALL

Новичок
Пользователь
Май 2, 2020
9
0
1
Доброго времени суток форумчане. Есть задача.


Вы - владелец кафе, в котором работают 3 повара: JapaneseCook, RussianCook и ItalianCook. Каждый из них умеет готовить блюдо и напиток национальной кухни: - JapaneseCook: Sushi и Tea - RussianCook: Dumplings и Compote - ItalianCook: Pizza и Juice Ваша задача - реализовать 3 класса (каждый повар - отдельный класс), которые будут наследниками AbstractCook с соответствующими методами: - add_food(food_amount, food_price), который добавляет в заказ клиента указанное количество еды по указанной цене - add_drink(drink_amount, drink_price), который добавляет в заказ клиента указанное количество напитков по указанной цене - total(), который возвращает строку вида: 'Food: 150, Drinks: 50, Total: 200', причем для каждого повара на месте Food и Drinks будут указаны именно те блюда и напитки, которые он готовит. Обратите внимание, что каждый клиент может обращаться только к одному повару. В этой миссии вам может помочь такой шаблон проектирования, как Abstract Factory.

Пример:

client_1 = JapaneseCook()

client_1.add_food(2, 20)

client_1.add_drink(5, 4)

client_1.total() == "Sushi: 40, Tea: 20, Total: 60"



client_2 = RussianCook()

client_2.add_food(1, 40)

client_2.add_drink(5, 20)

client_2.total() == "Dumplings: 40, Compote: 100, Total: 140"



client_3 = ItalianCook()

client_3.add_food(2, 20)

client_3.add_drink(2, 10)

client_3.total() == "Pizza: 40, Juice: 20, Total: 60"

Сделал такой кусок кода

class AbstractCook:
def __init__(self, amount, price):
self.amount = a
self.price = p

Дальше не идет. Вполне возможно, что я дурак, а этот кусок неправильный.

Уже 2 час пытаюсь разобраться. Не получается. Помогите если можете плиз.
Модераторы плиз не баньте. Ну не могу понять.
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример:
Python:
class AbstractCook:
    def __init__(self):
        self.food_name = 'food'
        self.food_cost = 0
        self.drinks_name = 'drinks'
        self.drinks_cost = 0

    def add_food(self, amount, price):
        self.food_cost += amount * price

    def add_drink(self, amount, price):
        self.drinks_cost += amount * price

    def total(self):
        return f'{self.food_name}: {self.food_cost}, {self.drinks_name}: {self.drinks_cost}, Total: {self.food_cost + self.drinks_cost}'


class JapaneseCook(AbstractCook):
    def __init__(self):
        super().__init__()
        self.food_name = 'Sushi'
        self.drinks_name = 'Tea'


class RussianCook(AbstractCook):
    def __init__(self):
        super().__init__()
        self.food_name = 'Dumplings'
        self.drinks_name = 'Compote'


class ItalianCook(AbstractCook):
    def __init__(self):
        super().__init__()
        self.food_name = 'Pizza'
        self.drinks_name = 'Juice'


client_1 = JapaneseCook()
client_1.add_food(2, 20)
client_1.add_drink(5, 4)
print(client_1.total())

client_2 = RussianCook()
client_2.add_food(1, 40)
client_2.add_drink(5, 20)
print(client_2.total())

client_3 = ItalianCook()
client_3.add_food(2, 20)
client_3.add_drink(2, 10)
print(client_3.total())
 
  • Мне нравится
Реакции: USER: PIP_INSTALL

USER: PIP_INSTALL

Новичок
Пользователь
Май 2, 2020
9
0
1
Спасибо большое. Можно один вопрос. Что делает super()? Она как-то что-то связывает с конструктором?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Спасибо большое. Можно один вопрос. Что делает super()? Она как-то что-то связывает с конструктором?
Вызывает конструктор родительского класса.
 

USER: PIP_INSTALL

Новичок
Пользователь
Май 2, 2020
9
0
1
Вызывает конструктор родительского класса.
Ясно, еще раз спасибо большое)
 

Форум IT Специалистов