Для студентов МГТУ им. Н.Э.Баумана по предмету ИнформатикаКлассы. КошелькиКлассы. Кошельки
2025-01-052025-01-05СтудИзба
Задача: Классы. Кошельки
Описание
Написать классы, которые будут использованы как счета в банке. Каждый счет - в своей валюте. Соответственно, у каждого объекта счета должны быть атрибуты с суммой денег, хранящихся на нём, и название кошелька. Каждый класс счета должен в себе хранить коэффициент отношения стоимости своей валюты к базовой валюте.
Нам понадобится один базовый класс
Протокол взаимодействия объектов следующий:
У каждого объекта должны быть доступны атрибуты:
# Создаем объект RubleWallet кошелька
ruble_wallet = RubleWallet("Первый кошелек", 10)
# Добавляем 20 к кошельку (та же валюта)
result = ruble_wallet + 20
print(result) # Выводит: Ruble Wallet Первый кошелек 30
# Создаем объект DollarWallet кошелька и добавляем его к RubleWallet кошельку (конвертация валют)
dollar_wallet = DollarWallet("D", 10)
result = ruble_wallet + dollar_wallet
print(result) # Выводит: Ruble Wallet Первый кошелек 610
Нам понадобится один базовый класс
BaseWallet
, в котором будут реализованы общие для всех валютных счетов методы, и три класса для конкретных валютных счетов: RubleWallet
, DollarWallet
, EuroWallet.
Будем считать коэффициентами отношения валют к базовой валюте: - Рубль: 1
- Доллар: 60
- Евро: 70
Протокол взаимодействия объектов следующий:
RubleWallet("Первый кошелек", 10)
, где "Первый кошелек" - это название кошелька, а 10 - сумма денег на нём.- аналогичные конструкторы для других счетов
RubleWallet("X", 10) + 20 == RubleWallet("X", 30)
- при сложении с числом считаем, что это та же валюта.RubleWallet("X", 10) += 20
- должен поддерживаться и такой синтаксис20 + RubleWallet("X", 10) == RubleWallet("X", 30)
- radd для чиселRubleWallet("X", 20) + DollarWallet("D", 10) == RubleWallet("X", 620)
- конвертация валюты при сложении счетов.DollarWallet("D", 2) + RubleWallet("X", 60) == DollarWallet("D", 3)
- результат - в валюте первого слагаемого.DollarWallet("D", 2) += RubleWallet("X", 60)
- здесь тоже должен поддерживаться этот синтаксис.- предыдущие 6 пунктов реализовать и для вычитания
RubleWallet("X", 10) * 20 == RubleWallet("X", 200)
- умножение на числоRubleWallet("X", 10) *= 20
- тоже с таким синтаксисом- те же 2 пункта для деления
20 * RubleWallet("X", 10) == RubleWallet("X", 200)
- умножение числа на кошелекDollarWallet("A", 15) == DollarWallet("B", 15)
: два объекта равны, если у них совпадает тип кошелька и сумма на счете.RubleWallet("X", 100).spend_all()
- для любого типа кошелька релизовать функцию, которая обнуляет баланс, если он положительныйDollarWallet("X", 1).to_base() == 60
- эта функция должна возвращать число денег в кошельке в базовой валютеprint(DollarWallet("Q", 150))
- должна выводить строку: 'Dollar Wallet Q 150' (и аналогично Ruble и Euro для остальных кошельков)
У каждого объекта должны быть доступны атрибуты:
name
- название кошелькаamount
- количество денег на счетеexchange_rate
- коэффициент стоимости валюты к базовой
Пример использования
# Создаем объект RubleWallet кошелька
ruble_wallet = RubleWallet("Первый кошелек", 10)
# Добавляем 20 к кошельку (та же валюта)
result = ruble_wallet + 20
print(result) # Выводит: Ruble Wallet Первый кошелек 30
# Создаем объект DollarWallet кошелька и добавляем его к RubleWallet кошельку (конвертация валют)
dollar_wallet = DollarWallet("D", 10)
result = ruble_wallet + dollar_wallet
print(result) # Выводит: Ruble Wallet Первый кошелек 610
Характеристики решённой задачи
Предмет
Учебное заведение
Учебная пора
Программы
Просмотров
2
Качество
Идеальное компьютерное
Размер
2,8 Kb
Список файлов
base-5.2.txt

Vladelo