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

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

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

— Никак нет.

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

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

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

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

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

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

Большая задача: Рефакторинг Java - 1
undefined
14
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (1)
Пришло время немного порефакторить. Википедия говорит: "Рефакторинг (англ. refactoring) или реорганизация кода - процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы. В основе рефакторинга лежит последовательность небо
undefined
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 в подходящее место
undefined
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. Д
undefined
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). Добавь
undefined
14
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (5)
5.1. Создание шаблонного метода. 5.1.1. Добавь в класс Human метод String getPosition(), который должен возвращать строку "Человек". 5.1.2. Переопредели этот метод в классе Student и Teacher. Метод должен возвращать "Студент" и "Преподаватель" соответственно. 5.1.3. Замени метод printData в подкласс
undefined
28
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (6)
6.1. Замена параметра набором специализированных методов. Замени метод setValue() класса Student специализированными методами setCourse и setAverageGrade. 6.2. Добавление параметра. Добавить параметр с типом double в метод getStudentWithAverageGrade(), чтобы было понятно с каким средним балом нужен
undefined
14
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (7)
7.1. Параметризация метода. Замени методы incAverageGradeBy01() и incAverageGradeBy02() одним методом incAverageGrade(double delta). 7.2. Передача всего объекта. Перепиши метод addInfoAboutStudent(), чтобы он в качестве параметра принимал объект типа Student. 7.3. Замена параметра вызовом метода. Пе
undefined
7
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (8)
8.1. Удаление сеттера. Удали метод setId(). Поле id должно устанавливаться только в момент создания объекта. 8.2. Сокрытие метода (поля). Изменить область видимости поля nextId в соответствии с областью его использования. 8.3. Замена исключения проверкой условия. Перепиши метод removeStudent(int ind
undefined
28
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (9)
9.1. Самоинкапсуляция поля. Перепиши метод incAverageGrade() используя сеттер и геттер для доступа к averageGrade. 9.2. Замена поля-массива объектом. Замени массив int[] size объектом нового типа Size, содержащим публичные поля: рост int height и вес int weight. Публичный класс Size объяви внутри кл
undefined
14
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (10)
Разберись с кодом в пакете car (машина). 10.1. Замена конструктора фабричным методом. 10.1.1. Объяви классы Truck (грузовик), Sedan (седан) и Cabriolet (кабриолет), унаследованные от Car. 10.1.2. Добавь в них конструкторы, принимающие int numberOfPassengers. 10.1.3. Добавь фабричный статический мето
undefined
14
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (11)
11.1. Замена кода ошибки исключением. Перепиши метод заправиться fill(double numberOfLiters), чтобы он в случае ошибки кидал исключение Exception. Исправленный метод должен возвращать void. 11.2. Разбиение условного оператора. 11.2.1. Добавь и реализуй метод в классе Car, определяющий относится ли переданная дата к лету: boolean isSummer(Dat
undefined
14
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (12)
12.1. Объединение условных операторов. 12.1.1. Добавь внутренний метод, сообщающий, могут ли быть перевезены пассажиры boolean canPassengersBeTransferred() в класс Car. Метод должен возвращать true, если водитель доступен isDriverAvailable и есть топливо fuel. 12.1.2. Перепиши метод getNumberOfPasse
undefined
28
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (13)
Разберись с кодом пакета user (пользователь). 13.1. Извлечение метода. Добавь метод printInfo(), который будет выводить имя и фамилию в консоль в формате Имя: Вася Фамилия: Пупкин Замени повторяющийся код метода printUsers() его вызовом. 13.2. Встраивание метода. Избавься от метода ageLessTh
undefined
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.
undefined
7
Задача
Java Multithreading, 5 уровень, 16 лекция
Недоступна
Рефакторинг (15)
Отлично. Ты освоил основные методы рефакторинга: Подъем поля, Подъем метода, Инкапсуляция коллекции, Извлечение подкласса, Подъем тела конструктора, Спуск метода, Спуск поля, Извлечение интерфейса, Свертывание иерархии, Замена наследования делегированием, Извлечение суперкласса, Замена простого поля