Задание на лабораторную работу
1. Класс TimeSpan
1.1 Создание класса
Создайте класс с названием TimeSpan
. Объект класса TimeSpan
хранит интервал времени в часах и минутах (к примеру, временной интервал между 8:00 и 10:30 это 2 часа 30 минут). Класс TimeSpan
должен иметь следующие методы
Название метода
Описание метода
TimeSpan(hours, minutes)
Конструктор. Входные аргументы – количество часов и минут
getHours()
Возвращает целое количество часов во временном интервале, без учета количества минут (например, если интервал 2 часа 15 минут, то метод вернет 2, так как 15 минут мы не учитываем)
getMinutes()
Возвращает количество минут во временном интервале, без учета количества часов (например, если интервал 2 часа 15 минут, то метод вернет 15, так как 2 часа мы отбрасываем)
add(hours, minutes)
Добавляет указанное количество часов и минут к промежутку. Новое значение промежутка должно пересчитываться корректно. Например, 2 часа 15 минут + 1 час 45 минут = 4 часа 0 минут. Помните, что необходимо проверить корректность входных аргументов (количество часов - не отрицательное число, количество минут от 0 до 59).
addTimeSpan(timespan)
Добавляет входной промежуток времени к указанному промежутку (используйте методы getHours()
и getMinutes()
для получения значений часов и минут).
getTotalHours()
Возвращает количество часов в промежутке в виде дробного числа. Например, если временной интервал 9 часов 45 минут, то метод должен вернуть 9.75
.
getTotalMinutes()
Возвращает количество минут в текущем промежутке времени (помните, что в интервале есть еще показатель часов, который нужно умножить на 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
должен иметь следующие методы
Название метода
Описание метода
Student(name, year)
Конструктор. Входные аргументы – имя и год обучения
addCourse(courseName)
Добавляет дисциплину(в формате String) к массиву дисциплин студента
dropAll()
Удаляет все дисциплины студента
getCourseCount()
Возвращает количество дисциплин, которые студент изучает
getName()
Возвращает имя студента
getTuition()
Возвращает количество денег, которые студент заплатил за обучение (с условием, что каждый год обучения обошелся студенту в 1000 гривен)
getYear()
Возвращает год обучения студента (от 1 до 4)
Вы должны продумать:
как хранить данные студенты (типы данных, структуры и так далее);
типы входных аргументов методов и тип возвращаемого значения;
корректно реализовать требуемые методы;
в методах предусмотреть проверки на корректность входных данных.
Last updated
Was this helpful?