— Привет, Амиго!

— Здравия желаю, Капитан Бобров!

— Ты чувствуешь этот запах, боец?

— Никак нет.

— Скорее всего, запах доносится из твоего терминала. Сейчас посмотрим, чем ты тут занят.

— Что? Как может пахнуть код?

— Да, пахнуть определенно не может… а вот пованивать — запросто.

— Капитан, я тут разрабатываю новую систему управления персоналом корабля. Вот, проект практически готов.

— Ну что же, пришло твое время постичь Дзэн в рефакторинге. Только так ты сможешь очистить свой код. Обратись за заданием к агенту Intellij IDEA, там получишь все инструкции.

— Есть, идти выполнять приказ.

Большая задача: Рефакторинг Java - 1
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (1)
Пришло время немного порефакторить. Википедия говорит: "Рефакторинг (англ. refactoring) или реорганизация кода - процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы. В основе рефакторинга лежит последовательность небо
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (2)
2.1. Извлечение подкласса. 2.1.1. Добавь класс Soldier в пакет human. 2.1.2. Избавься от поля isSoldier. 2.1.3. Обнови сигнатуру конструктора Human. 2.1.4. Перенеси в Soldier необходимые методы из Human. 2.2. Подъем тела конструктора. 2.2.1. Перенеси инициализацию полей name и age в подходящее место
7
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (3)
3.1. Спуск поля. Спусти поле course в соответствующий класс. Сделай его приватным. 3.2. Спуск метода. Спусти геттер для поля course в соответствующий класс. 3.3. Извлечение интерфейса. 3.3.1. Создай интерфейс Alive (живой) в пакете human. 3.3.2. Интерфейс должен содержать метод жить live(). 3.3.3. Д
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (4)
4.1. Замена наследования делегированием. 4.1.1. Класс University не должен наследоваться от Student. 4.1.2. Класс University должен содержать список students. Не забудь его инициализировать. 4.1.3. Добавь сеттер и геттер для students. 4.1.4. Университет имеет название (name) и возраст (age). Добавь
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (5)
5.1. Создание шаблонного метода. 5.1.1. Добавь в класс Human метод String getPosition(), который должен возвращать строку "Человек". 5.1.2. Переопредели этот метод в классе Student и Teacher. Метод должен возвращать "Студент" и "Преподаватель" соответственно. 5.1.3. Замени метод printData в подкласс
28
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (6)
6.1. Замена параметра набором специализированных методов. Замени метод setValue() класса Student специализированными методами setCourse и setAverageGrade. 6.2. Добавление параметра. Добавить параметр с типом double в метод getStudentWithAverageGrade(), чтобы было понятно с каким средним балом нужен
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (7)
7.1. Параметризация метода. Замени методы incAverageGradeBy01() и incAverageGradeBy02() одним методом incAverageGrade(double delta). 7.2. Передача всего объекта. Перепиши метод addInfoAboutStudent(), чтобы он в качестве параметра принимал объект типа Student. 7.3. Замена параметра вызовом метода. Пе
7
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (8)
8.1. Удаление сеттера. Удали метод setId(). Поле id должно устанавливаться только в момент создания объекта. 8.2. Сокрытие метода (поля). Изменить область видимости поля nextId в соответствии с областью его использования. 8.3. Замена исключения проверкой условия. Перепиши метод removeStudent(int ind
28
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (9)
9.1. Самоинкапсуляция поля. Перепиши метод incAverageGrade() используя сеттер и геттер для доступа к averageGrade. 9.2. Замена поля-массива объектом. Замени массив int[] size объектом нового типа Size, содержащим публичные поля: рост int height и вес int weight. Публичный класс Size объяви внутри кл
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (10)
Разберись с кодом в пакете car (машина). 10.1. Замена конструктора фабричным методом. 10.1.1. Объяви классы Truck (грузовик), Sedan (седан) и Cabriolet (кабриолет), унаследованные от Car. 10.1.2. Добавь в них конструкторы, принимающие int numberOfPassengers. 10.1.3. Добавь фабричный статический мето
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (11)
11.1. Замена кода ошибки исключением. Перепиши метод заправиться fill(double numberOfLiters), чтобы он в случае ошибки кидал исключение Exception. Исправленный метод должен возвращать void. 11.2. Разбиение условного оператора. 11.2.1. Добавь и реализуй метод в классе Car, определяющий относится ли переданная дата к лету: boolean isSummer(Dat
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (12)
12.1. Объединение условных операторов. 12.1.1. Добавь внутренний метод, сообщающий, могут ли быть перевезены пассажиры boolean canPassengersBeTransferred() в класс Car. Метод должен возвращать true, если водитель доступен isDriverAvailable и есть топливо fuel. 12.1.2. Перепиши метод getNumberOfPasse
28
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (13)
Разберись с кодом пакета user (пользователь). 13.1. Извлечение метода. Добавь метод printInfo(), который будет выводить имя и фамилию в консоль в формате Имя: Вася Фамилия: Пупкин Замени повторяющийся код метода printUsers() его вызовом. 13.2. Встраивание метода. Избавься от метода ageLessTh
14
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (14)
14.1. Перемещение поля. Замени поля isManAnya и isManRoma полем man в нужном классе. Добавь сеттер и геттер для нового поля (при выборе имен методов учти тип поля). 14.2. Извлечение класса. 14.2.1. Добавь класс Address в пакет user. 14.2.2. Перенеси поля country, city и house в новый класс. 14.2.3.
7
Задача
Java Multithreading,  5 уровень16 лекция
Недоступна
Рефакторинг (15)
Отлично. Ты освоил основные методы рефакторинга: Подъем поля, Подъем метода, Инкапсуляция коллекции, Извлечение подкласса, Подъем тела конструктора, Спуск метода, Спуск поля, Извлечение интерфейса, Свертывание иерархии, Замена наследования делегированием, Извлечение суперкласса, Замена простого поля