[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, который будет использоваться для хранения данных о странах, со следующими полями:

  1. Название.
  2. Численность населения.
  3. Площадь в квадратных километрах.
  4. Название столицы.
  5. Наличие выхода к морю.


Создайте в этом классе:

  • Конструктор с одним параметром — названием страны.
  • Методы-геттеры для всех полей класса.
  • Методы-сеттеры для всех полей класса.


Имена полей и их типы установите самостоятельно так, чтобы они были понятными и соответствовали хранящимся в них данным.


Задание 4

Что нужно сделать

Выберите любой объект реального мира с тремя-четырьмя свойствами и создайте для него POJO-класс, содержащий:

  • Конструктор с одним-двумя основными свойствами.
  • Методы-геттеры и методы-сеттеры для всех свойств объектов этого класса.


Задание 5

Что нужно сделать

Создайте иммутабельный (неизменяемый) класс Book для хранения информации о книге, содержащий поля:

  • название,
  • автор,
  • количество страниц,
  • номер ISBN.


Задание 6

Что нужно сделать

Модифицируйте класс Product, разобранный в видеоуроке, следующим образом:

  • добавьте в класс неизменяемое поле barCode (штрихкод);
  • поле price сделайте изменяемым и уберите его из конструктора, класс при этом перестанет быть иммутабельным.
    
            Описание
            [Skillbox] Java-разработчик - модуль 5 - Объекты и классы. Часть 2. ИнкапсуляцияЗадача 1 - Создайте новый проект Encapsulation и в нём класс ElevatorЗадача 2 - Продолжайте работу в проекте Encapsulation, в котором вы выполняли предыдущее задание. Создайте в этом проекте иммутабельный класс для хранения информации о грузах.Задача 3 - Создайте POJO-класс Country.Задача 4 - Выберите любой объект реального мира с тремя-четырьмя свойствами и создайте для него POJO-класс.Задача 5 - Создайте иммутабельный (неизменяемый) класс Book.Задача 6 - Модифицируйте класс Product, разобранный в видеоуроке. 
            Оглавление
            Задание 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 - решение задач