arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Задание на лабораторную работу

hashtag
1. Класс TimeSpan

hashtag
1.1 Создание класса

Создайте класс с названием TimeSpan. Объект класса TimeSpanхранит интервал времени в часах и минутах (к примеру, временной интервал между 8:00 и 10:30 это 2 часа 30 минут). Класс TimeSpanдолжен иметь следующие методы

Вы должны продумать:

  • как хранить значение временного интервала;

  • типы входных аргументов методов;

  • корректно реализовать требуемые методы;

hashtag
1.2. Добавление метода subtract()

Добавьте к написанному ранее классу метод subtract()со следующей сигнатурой

Метод вычитает из текущего временного интервала входной временной интервал. Если входной интервал больше текущего, выйдите из метода и не модифицируйте текущий интервал (можете выбросить исключение IllegalArgumentException, если знаете что это и знаете как выбрить исключение).

hashtag
1.3 Добавление метода scale()

Добавьте к написанному ранее классу метод subtract()со следующей сигнатурой

Метод увеличивает текущий интервал в factorчисло раз. Например, если текущий временной интервал равен 1 час 45 минут, а входной аргумент равен 2, то интервал увеличится до 3 часов 30 минут. Убедитесь, что factor- неотрицательное число, помните про пересчет минут в часы при увеличении интервала.

hashtag
2. Класс BankAccount

hashtag
2.1 Добавление поля transactionFee

В программе существует класс BankAccount, исходный код которого приведен ниже.

Каждый объект класса предназначен для описания одного счета клиента банка, включая его имя и баланс. Модифицируйте класс следующим образом:

  • добавьте поле transactionFeeтипа double, которое хранит сумму, которая вычитается из баланса каждый раз, когда клиент банка снимает деньги (метод withdraw()). Изначальное значение равно 0.00, но значение может быть изменено в дальнейшем. Производите вычитание суммы каждый раз, когда клиент осуществляет снятие денег;

  • сделайте так, чтобы в результате снятия денег и снятия transactionFee, баланс счета не мог опуститься ниже нуля. Если в результате снятия денег и

Модификация класса может потребовать создания новых методов и полей.

hashtag
2.2 Добавление метода transfer()

Добавьте к модифицированному ранее классу BankAccoutметод transfer() со следующей сигнатурой

Метод transfer() осуществляет перевод денег из одного счета (текущего) на другой счет (объект receiver). Первый параметр - счет получателя денег, второй параметр - количество денег, которые переводятся со счета на счет.

Важно!

При снятии денег должна учитываться комиссия (поле transactionFee). Следовательно, из текущего объекта должна быть вычтено amount + transactionFee.

Метод должен модифицировать баланс двух объектов. У текущего объекта должна вычтена сумма amount + transactionFeeиз баланса, а у объекта receiverдолжен быть пополнен баланс счета на сумму amount.

При реализации метода убедитесь, что amount > 0.

Если у текущего объекта баланс меньше amount + transactionFee, то выйдите из метода без какого-либо перевода денег.

hashtag
3. Класс Student

Создайте класс Student, который хранит информацию о студенте. У студента есть имя, год обучения (от 1 до 4), а также массив изучаемых дисциплин.

Класс Student должен иметь следующие методы

Вы должны продумать:

  • как хранить данные студенты (типы данных, структуры и так далее);

  • типы входных аргументов методов и тип возвращаемого значения;

  • корректно реализовать требуемые методы;

Возвращает количество часов в промежутке в виде дробного числа. Например, если временной интервал 9 часов 45 минут, то метод должен вернуть 9.75.

getTotalMinutes()

Возвращает количество минут в текущем промежутке времени (помните, что в интервале есть еще показатель часов, который нужно умножить на 60)

в методах предусмотреть проверки на корректность входных данных.
transactionFee
баланс может стать отрицательным, выйдите из метода и не производите модификацию баланса вообще;
  • в методe deposit() входной аргумент не должен быть ноль или меньше;

  • в методе withdraw() входной аргумент не должно быть ноль или меньше.

  • Возвращает количество денег, которые студент заплатил за обучение (с условием, что каждый год обучения обошелся студенту в 1000 гривен)

    getYear()

    Возвращает год обучения студента (от 1 до 4)

    в методах предусмотреть проверки на корректность входных данных.

    Название метода

    Описание метода

    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() для получения значений часов и минут).

    Название метода

    Описание метода

    Student(name, year)

    Конструктор. Входные аргументы – имя и год обучения

    addCourse(courseName)

    Добавляет дисциплину(в формате String) к массиву дисциплин студента

    dropAll()

    Удаляет все дисциплины студента

    getCourseCount()

    Возвращает количество дисциплин, которые студент изучает

    getName()

    Возвращает имя студента

    getTotalHours()

    getTuition()

    public void subtract(TimeSpan span)
    public void scale(int factor)
    // Каждый объект класса BankAccount представляет данные одного
    // счета пользователя, включая имя и баланс счета
    
    public class BankAccount {
        String name;
        double balance;
    
        public void deposit(double amount) {
            balance = balance + amount;
        }
    
        public double getBalance() {
            return this.balance;
        }
    
        public boolean withdraw(double amount) {
            balance = balance - amount;
            return true;
        }
    }
    public boolean transfer(BankAccount receiver, double amount)