Урок 5. Тонкости работы
Задача 1
Написать функцию, создающую резервную копию всех файлов в директории (без поддиректорий) во вновь созданную папку ./backup
Решение
Реализация метода копирования .backup()
в классе BackupHelper
(см. src/main/java/edu/alexey/javacore/homeworks/hw5/BackupHelper.java
)
Пример
Копирование:
Тестовая директория источник:
Итоговый бэкап:
Пример информирования об ошибке:
Задача 2
Предположить, что числа в исходном массиве из 9 элементов имеют диапазон[0, 3], и представляют собой, например, состояния ячеек поля для игры в крестикинолики, где 0 – это пустое поле, 1 – это поле с крестиком, 2 – это поле с ноликом, 3 – резервное значение. Такое предположение позволит хранить в одном числе типа int всё поле 3х3. Записать в файл состояние поля и добавить возможность восстановить состояние поля из файла (*) сделать доп возможность в игре крестики-нолики - метод для сохранения состояния игры и восстановление из файла
Урок 4. Обработка исключений
Задача
- В класс Товаров добавить перечисление с категориями товаров, добавить в Товар поле категория со значением созданного перечисления. Добавить геттеры, сеттеры.
- Добавить перечисление с размерами скидок - 0, 5, 10, 15, 20%. Написать метод, при вызове которого на переданную категорию товара незначается рандомная скидка из перечисления. Добавить в заказ поле стоимость и пересчитать стоимость согласно сгенерированным скидкам.
- Если сумма величин скидок на товары из заказа получилась больше 50%, выбросить исключение TooMuchSaleException(); То есть нужно сложить величины скидок на категории и проверить больше 50 или нет.
Исходная задача: Эмуляция интернет-магазина
Решение
Перечисление с категориями товаров — …/hw4/enums/Category.java
Перечисление с размерами скидок — …/hw4/enums/Discount.java
Метод рандомного назначения скидки на категорию — generateDiscountByCategory()
в …/hw4/DiscountHelper.java
Типы кастомных исключений, включая TooMuchSaleException
— …/hw4/exceptions/*
Поскольку условие подразумевает, что один заказ может иметь более одной позиции, в том числе из разных категорий товаров, обработка заказа реализована как фабрика заказов — …/hw4/OrderComposerImpl.java, предоставляемая экземпляром магазина …/hw4/Store.java.
Пример
mvn exec:java
Урок 3. Классы и объекты
Задача 1
Опишите класс руководителя, наследник от сотрудника. Перенесите статический метод повышения зарплаты в класс руководителя, модифицируйте метод таким образом, чтобы он мог поднять заработную плату всем, кроме руководителей.
В основной программе создайте руководителя и поместите его в общий массив сотрудников. Повысьте зарплату всем сотрудникам и проследите, чтобы зарплата руководителя не повысилась.
Решение
См. статический метод increaseOrdinaryEployeesSalary(…)
в классе руководителя — …/hw3/Chief.java
Основная программа — …/hw3/Main.java
Команды для запуска (предварительно установить корневой каталог проекта в качестве рабочей директории):
mvn exec:java
или
javac -sourcepath src/main/java/ -d out src/main/java/edu/alexey/javacore/homeworks/hw3/Main.java
java -classpath out edu.alexey.javacore.homeworks.hw3.Main
Задача 2
Написать 2 класса компараторов по возрасту и зарплате (implements Comparator)
Решение
См. вложенные классы ComparatorByAge
и ComparatorBySalary
в фабрике компараторов EmployeeComparators
— …/hw3/EmployeeComparators.java