Задание на лабораторную работу
Для каждого класса необходимо предоставить его графическое представление в диаграмме классов UML. Графическое представление добавить в протокол лабораторной работы и принести на защиту лабораторной работы.
1. Класс TimeSpan
1.1 Создание класса
Создайте класс с названием TimeSpan
. Объект класса TimeSpan
хранит интервал времени в часах и минутах (к примеру, временной интервал между 8:00 и 10:30 это 2 часа 30 минут). Класс TimeSpan
должен иметь следующие методы
Название метода | Описание метода |
| Конструктор. Входные аргументы – количество часов и минут |
| Возвращает целое количество часов во временном интервале, без учета количества минут (например, если интервал 2 часа 15 минут, то метод вернет 2, так как 15 минут мы не учитываем) |
| Возвращает количество минут во временном интервале, без учета количества часов (например, если интервал 2 часа 15 минут, то метод вернет 15, так как 2 часа мы отбрасываем) |
| Добавляет указанное количество часов и минут к промежутку. Новое значение промежутка должно пересчитываться корректно. Например, 2 часа 15 минут + 1 час 45 минут = 4 часа 0 минут. Помните, что необходимо проверить корректность входных аргументов (количество часов - не отрицательное число, количество минут от 0 до 59). |
| Добавляет входной промежуток времени к указанному промежутку (используйте методы |
| Возвращает количество часов в промежутке в виде дробного числа. Например, если временной интервал 9 часов 45 минут, то метод должен вернуть |
| Возвращает количество минут в текущем промежутке времени (помните, что в интервале есть еще показатель часов, который нужно умножить на 60) |
Вы должны продумать:
как хранить значение временного интервала;
типы входных аргументов методов;
корректно реализовать требуемые методы;
в методах предусмотреть проверки на корректность входных данных.
1.2. Добавление метода subtract()
Добавьте к написанному ранее классу метод subtract()
со следующей сигнатурой
Метод вычитает из текущего временного интервала входной временной интервал. Если входной интервал больше текущего, выйдите из метода и не модифицируйте текущий интервал (можете выбросить исключение IllegalArgumentException
, если знаете что это и знаете как выбрить исключение).
1.3 Добавление метода scale()
Добавьте к написанному ранее классу метод subtract()
со следующей сигнатурой
Метод увеличивает текущий интервал в factor
число раз. Например, если текущий временной интервал равен 1 час 45 минут, а входной аргумент равен 2, то интервал увеличится до 3 часов 30 минут. Убедитесь, что factor
- неотрицательное число, помните про пересчет минут в часы при увеличении интервала.
2. Класс BankAccount
2.1 Добавление поля transactionFee
В программе существует класс BankAccount
, исходный код которого приведен ниже.
Каждый объект класса предназначен для описания одного счета клиента банка, включая его имя и баланс. Модифицируйте класс следующим образом:
добавьте поле
transactionFee
типаdouble
, которое хранит сумму, которая вычитается из баланса каждый раз, когда клиент банка снимает деньги (методwithdraw()
). Изначальное значение равно0.00
, но значение может быть изменено в дальнейшем. Производите вычитание суммы каждый раз, когда клиент осуществляет снятие денег;сделайте так, чтобы в результате снятия денег и снятия
transactionFee
, баланс счета не мог опуститься ниже нуля. Если в результате снятия денег иtransactionFee
баланс может стать отрицательным, выйдите из метода и не производите модификацию баланса вообще;в методe
deposit()
входной аргумент не должен быть ноль или меньше;в методе
withdraw()
входной аргумент не должно быть ноль или меньше.
Модификация класса может потребовать создания новых методов и полей.
2.2 Добавление метода transfer()
Добавьте к модифицированному ранее классу BankAccout
метод transfer()
со следующей сигнатурой
Метод transfer()
осуществляет перевод денег из одного счета (текущего) на другой счет (объект receiver
). Первый параметр - счет получателя денег, второй параметр - количество денег, которые переводятся со счета на счет.
Важно!
При снятии денег должна учитываться комиссия (поле transactionFee
). Следовательно, из текущего объекта должна быть вычтено amount + transactionFee
.
Метод должен модифицировать баланс двух объектов. У текущего объекта должна вычтена сумма amount + transactionFee
из баланса, а у объекта receiver
должен быть пополнен баланс счета на сумму amount
.
При реализации метода убедитесь, что amount > 0
.
Если у текущего объекта баланс меньше amount + transactionFee
, то выйдите из метода без какого-либо перевода денег.
3. Класс Student
Создайте класс Student
, который хранит информацию о студенте. У студента есть имя, год обучения (от 1 до 4), а также массив изучаемых дисциплин.
Класс Student
должен иметь следующие методы
Название метода | Описание метода |
| Конструктор. Входные аргументы – имя и год обучения |
| Добавляет дисциплину(в формате String) к массиву дисциплин студента |
| Удаляет все дисциплины студента |
| Возвращает количество дисциплин, которые студент изучает |
| Возвращает имя студента |
| Возвращает количество денег, которые студент заплатил за обучение (с условием, что каждый курс обошелся студенту в 1000 гривен) |
| Возвращает год обучения студента (от 1 до 4) |
Вы должны продумать:
как хранить данные студенты (типы данных, структуры и так далее);
типы входных аргументов методов и тип возвращаемого значения;
корректно реализовать требуемые методы;
в методах предусмотреть проверки на корректность входных данных.
Last updated