test

Форк
0

6 месяцев назад
6 месяцев назад
README.md

ТЗ:

  1. Создайте абстрактный класс BankCard, который будет описывать сущность «Банковская карта». Этот класс должен предоставлять свойство «Баланс», а также функции: o «Пополнить» — пополняет карту на переданную сумму; o «Оплатить» — списывает с карты переданную сумму и возвращает результат типа Boolean; o «Получить информацию о балансе»; o «Получить информацию о доступных средствах» — возвращает информацию о балансе, кредитном лимите и любых других средствах.
  2. Создайте два производных от BankCard класса DebitCard и CreditCard.
  3. В классе DebitCard реализуйте функции «Пополнить» и «Получить информацию о балансе».
  4. Класс CreditCard должен иметь дополнительное свойство «Кредитный лимит». Основные средства кредитной карты состоят из двух частей: кредитная часть и собственные средства. При пополнении кредитной карты необходимо сначала погасить кредитную часть, и только затем увеличивать собственные средства. При оплате сначала списываются собственные средства, затем кредитные.
    Пример Кредитная карта с лимитом 10 000. Кредитные средства: 10 000. Собственные средства: 0.

После пополнения карты на 5 000: Кредитные средства: 10 000. Собственные средства: 5 000.

После оплаты на 5 000: Кредитные средства: 10 000. Собственные средства: 0.

После оплаты на 3 000: Кредитные средства: 7 000. Собственные средства: 0.

После пополнения на 2 000: Кредитные средства: 9 000. Собственные средства: 0. После пополнения на 2 000: Кредитные средства: 10 000. Собственные средства: 1 000.
Реализуйте функции «Пополнить», «Оплатить» и «Получить информацию о балансе». Должны учитываться как собственные, так и кредитные средства.
5. Создайте несколько производных классов от DebitCard и CreditCard. 6. Добавьте для конкретных дебетовых и кредитных карт различные бонусные программы в виде отдельных переменных. Примеры Бонусные баллы в размере 1% от покупок. (см ниже) Потенциальный кэшбэк 5% от покупок при условии трат больше 5 000 тыс. Накопление в размере 0.005% от суммы пополнений. 7. Для конкретных дебетовых и кредитных карт скорректируйте функции «Пополнить» и «Оплатить» так, чтобы они учитывали конкретные бонусные программы. 8. Для конкретных дебетовых и кредитных карт реализуйте функцию «Получение информации обо всех доступных средствах». Функция должна учитывать собственные и кредитные средства, а также соответствующие бонусы. 9. Проанализируйте получившиеся классы. При необходимости перенесите реализацию функций на уровень выше. 10. Убедитесь, что все функции ваших классов работают корректно. Для этого создайте экземпляры классов и проверьте работу каждой из описанных функций. Что оценивается ● Программа запускается, корректно работает и выводит необходимую информацию. ● Выполнены все пункты задания. ● Соблюдена инкапсуляция, доступны только публичные члены классов. ● Функции соответствуют принципам чёрного ящика, выполняют атомарные операции и независимы друг от друга. ● Функции возвращают неизменяемые коллекции. ● Названия переменных отражают суть данных, на которые они ссылаются. ● Переменные, которые не изменяются в программе, объявлены неизменяемыми. ● Открыты только необходимые для переопределения функции. ● Открыты только необходимые для наследования классы. ● Различные выводы в консоль начинаются с новой строки.

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.