10.2. Практикум

Примечание

При выполнении заданий используйте заготовки решений: -> Репозиторий.

Подробнее: см. Цикл выполнения и защиты заданий.

Предупреждение

В данном разделе НЕ должны использоваться сторонние модули для реализации заданной функциональности. Например, при реализации класса РимскоеЧисло не нужно использовать модуль py-romanify и т.д.

10.2.1. Римское число

Создайте класс Roman (РимскоеЧисло), представляющий римское число и поддерживающий операции +, -, *, /.

Совет

При реализации класса следуйте рекомендациям:

  • операции +, -, *, / реализуйте как специальные методы (__add__ и др.);

  • методы преобразования имеет смысл реализовать как статические методы, позволяя не создавать экземпляр объекта в случае, если необходимо выполнить только преобразования чисел.

10.2.2. Пиццерия

Пиццерия предлагает клиентам три вида пиццы: Пепперони, Барбекю и Дары Моря, каждая из которых определяется тестом, соусом и начинкой.

Требуется спроектировать и реализовать приложение для терминала, позволяющее обеспечить обслуживание посетителей.

Дополнительная информация

В бизнес-процессе работы пиццерии в контексте задачи можно выделить 3 сущности (объекта):

  • Терминал: отвечает за взаимодействие с пользователем:

    • вывод меню на экран;

    • прием команд от пользователя (выбор пиццы, подтверждение заказа, оплата и др.);

  • Заказ: содержит список заказанных пицц, умеет подсчитывать свою стоимость;

  • Пицца: содержит заявленные характеристики пиццы, а также умеет себя подготовить (замесить тесто, собрать ингредиенты и т.д.), испечь, порезать и упаковать.

Т.к. пиццерия реализует несколько видов пиццы, которые различаются характеристиками, логично будет сделать общий класс Пицца, а в дочерних классах (например, классе ПиццаБарбекю) уточнить характеристики конкретной пиццы.

Диаграмма указанных классов в нотации UML приведена на Рисунке 10.2.1.

_images/10_02_01.png

Рисунок 10.1.1 - UML-диаграмма классов приложения

Алгоритм работы пользователя с терминалом может выглядеть следующим образом:

  1. Терминал отображает список меню.

  2. Терминал создает новый заказ.

  3. Клиент вводит номер пиццы из меню.

  4. Заказ добавляет в список выбранную пиццу.

  5. Действия 3-4 повторяются до подтверждения или отмены.

  6. Клиент подтверждает заказ (или отменяет).

  7. Терминал выставляет счет, отображая информацию о заказе.

  8. Терминал принимает оплату.

  9. Заказ отдается на выполнение.

10.2.3. Банковские вклады

Банк предлагает ряд вкладов для физических лиц:

  • Срочный вклад: расчет прибыли осуществляется по формуле простых процентов;

  • Бонусный вклад: бонус начисляется в конце периода как % от прибыли, если вклад больше определенной суммы;

  • Вклад с капитализацией процентов.

Реализуйте приложение, которое бы позволило подобрать клиенту вклад по заданным параметрам.