Задача: Классы. Кошельки
Описание
Написать классы, которые будут использованы как счета в банке. Каждый счет - в своей валюте. Соответственно, у каждого объекта счета должны быть атрибуты с суммой денег, хранящихся на нём, и название кошелька. Каждый класс счета должен в себе хранить коэффициент отношения стоимости своей валюты к базовой валюте.
Нам понадобится один базовый класс
Протокол взаимодействия объектов следующий:
У каждого объекта должны быть доступны атрибуты:
# Создаем объект 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
Комментарии
Нет комментариев
Стань первым, кто что-нибудь напишет!
Отзывы на другие работы автора
Вся теория для экзамена "Интегралы и ДУ" с доказательствами
не вся теория, некоторые ответы на вопросы норм, а некоторые не оч
Разбор всех билетов РК "Общие теоремы динамики"
Такие файлы есть и это радует
Билеты РК1 для СМ и РК4
Билеты совпали, очень помогло
Вся теория для экзамена по кратным интегралам, теории поля и рядам
Все сошлось, только номера разные
Пределы и непрерывность функций
я хотел бы выразить благодарность этому владело. не раз натыкаюсь на его файлы и ни раз он спасает меня. спасибо тебе за то что ты делаешь!!
МГТУ им. Н.Э.Баумана
vladelo



















