[Skillbox] Java-разработчик - модуль 5 - Объекты и классы. Часть 2. Инкапсуляция (Решение → 53164)
[Skillbox] Java-разработчик - модуль 5 - Объекты и классы. Часть 2. Инкапсуляция
Задача 1 - Создайте новый проект Encapsulation и в нём класс Elevator
Задача 2 - Продолжайте работу в проекте Encapsulation, в котором вы выполняли предыдущее задание. Создайте в этом проекте иммутабельный класс для хранения информации о грузах.
Задача 3 - Создайте POJO-класс Country.
Задача 4 - Выберите любой объект реального мира с тремя-четырьмя свойствами и создайте для него POJO-класс.
Задача 5 - Создайте иммутабельный (неизменяемый) класс Book.
Задача 6 - Модифицируйте класс Product, разобранный в видеоуроке.
Задание 1ЦельОпробовать принцип инкапсуляции на практике.Научиться самостоятельно реализовывать в классах методы и переменные с использованием принципа инкапсуляции.Что нужно сделатьПапка в репозитории не содержит готового проекта, вам необходимо создать проект с
Задание 1
Цель
- Опробовать принцип инкапсуляции на практике.
- Научиться самостоятельно реализовывать в классах методы и переменные с использованием принципа инкапсуляции.
Что нужно сделать
Папка в репозитории не содержит готового проекта, вам необходимо создать проект с нуля. Создайте новый проект Encapsulation и в нём класс Elevator, эмулирующий работу пассажирского лифта. В классе создайте:
- Переменные currentFloor (текущий этаж), minFloor и maxFloor (минимальный и максимальный этажи). Тип переменных — int.
- Конструктор с двумя параметрами minFloor и maxFloor, сохраняющий эти параметры в соответствующих переменных класса.
- Значение переменной currentFloor изначально должно быть равно 1.
- Метод getCurrentFloor, возвращающий текущий этаж, на котором находится лифт.
- Метод moveDown, перемещающий лифт на один этаж вниз (уменьшающий значение переменной currentFloor на единицу).
- Метод moveUp, перемещающий лифт на один этаж вверх.
- Метод move(int floor), перемещающий лифт на заданный в параметре этаж, если он задан верно. Если параметр у метода задан неверно, ничего не делать и выводить в консоль сообщение об ошибке. Этот метод может перемещать лифт только последовательно, по одному этажу, с помощью циклов и методов moveUp и moveDown, и он должен выводить в консоль текущий этаж после каждого перемещения между этажами.
Создайте в этом же проекте класс Main с методом main и напишите в нём следующий код:
Elevator elevator = new Elevator(-3, 26);
while (true) {
System.out.print("Введите номер этажа: ");
int floor = new Scanner ().nextInt();
elevator.move(floor);
}
Этот код поможет вам протестировать созданный класс Elevator: он будет создавать лифт и в консоли запрашивать этаж, на который нужно переместить лифт, после чего вызывать у него метод move с указанием полученного из консоли этажа. Запустите получившийся код и убедитесь, что он работает корректно.
Критерии оценки работы
Принято:
- Выполнены все указанные в заданиях требования по написанию кода в классе Elevator.
- Все методы классов работают без ошибок, код компилируется и запускается.
- В результате выполнения кода для тестирования в консоль выводится:
- сообщение об ошибке, если в консоль введён номер этажа меньше −3 или больше 26;
- последовательно все номера этажей, если введён этаж, отличный от текущего;
- ничего, если в консоль введён номер этажа, на котором лифт находится сейчас.
На доработку: задание не выполнено, выполнено неточно либо частично.
Задание 2
Цель
Научиться реализовывать механизм копирования объектов, в том числе объектов иммутабельных классов.
Что нужно сделать
Продолжайте работу в проекте Encapsulation, в котором вы выполняли предыдущее задание. Создайте в этом проекте иммутабельный класс для хранения информации о грузах, передаваемых в курьерскую службу. Название класса придумайте самостоятельно.
Создайте у класса следующие поля:
- габариты;
- масса;
- адрес доставки;
- свойство — можно ли переворачивать;
- регистрационный номер (может содержать буквы);
- является ли груз хрупким.
Названия полей придумайте самостоятельно таким образом, чтобы по ним было понятно, что в них находится. Типы полей задайте в соответствии с данными, которые в них содержатся.
Габариты — ширина, высота и длина — должны храниться в отдельном иммутабельном классе Dimensions. Создайте класс Dimensions с соответствующими полями и реализуйте в нём метод вычисления объёма груза (название метода придумайте самостоятельно).
Реализуйте в классе методы, дающие возможность изменять адрес доставки, габариты и массу груза без изменения исходного объекта путём создания его копии.
Напишите в методе main класса Main дополнительный код, который будет создавать экземпляр класса (объект) груза и его копии при изменении тех или иный полей. Напишите также код, который позволит проверить, что копирование действительно происходит.
Задание 3
Что нужно сделать
Создайте POJO-класс Country, который будет использоваться для хранения данных о странах, со следующими полями:
- Название.
- Численность населения.
- Площадь в квадратных километрах.
- Название столицы.
- Наличие выхода к морю.
Создайте в этом классе:
- Конструктор с одним параметром — названием страны.
- Методы-геттеры для всех полей класса.
- Методы-сеттеры для всех полей класса.
Имена полей и их типы установите самостоятельно так, чтобы они были понятными и соответствовали хранящимся в них данным.
Задание 4
Что нужно сделать
Выберите любой объект реального мира с тремя-четырьмя свойствами и создайте для него POJO-класс, содержащий:
- Конструктор с одним-двумя основными свойствами.
- Методы-геттеры и методы-сеттеры для всех свойств объектов этого класса.
Задание 5
Что нужно сделать
Создайте иммутабельный (неизменяемый) класс Book для хранения информации о книге, содержащий поля:
- название,
- автор,
- количество страниц,
- номер ISBN.
Задание 6
Что нужно сделать
Модифицируйте класс Product, разобранный в видеоуроке, следующим образом:
- добавьте в класс неизменяемое поле barCode (штрихкод);
- поле price сделайте изменяемым и уберите его из конструктора, класс при этом перестанет быть иммутабельным.
- [Skillbox] Java-разработчик - модуль 4 - Объекты и классы. Часть 1. Методы и классы
- [Skillbox] Java-разработчик - модуль 5 - Объекты и классы. Часть 2. Инкапсуляция
- [Skillbox] Java-разработчик - модуль 5 - Объекты и классы. Часть 2. Инкапсуляция(задача 2)
- [Skillbox] Java-разработчик - модуль 6 - Объекты и классы. Часть 3. Static, константы и enum
- [Skillbox] Java-разработчик - модуль 7 - Примитивы
- [Skillbox] Java-разработчик - модуль 8 - числа и строки
- [Skillbox] Java-разработчик. Модуль 9 "Массивы и коллекции". Решение задач домашней работы №9.2
- [Skillbox] Java-разработчик - модуль 15 - Практическая работа 15.14 - Airport.
- [Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.13 - DataCollector
- [Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.16 - calculateFolderSize() класса FileUtils
- [Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.17 - calculateFolderSize() класса FileUtils
- [Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.18 - MovementsList
- [Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.19 - Lenta
- [Skillbox] Java-разработчик - модуль 2 -синтаксис языка часть 1 - решение задач