Лабораторная работа №10
Тема: Encapsulation. Getters and setters
Цель работы
Изучить принцип инкапсуляции в объектно-ориентированном программировании
Научиться использовать модификаторы доступа (private, public)
Освоить создание геттеров и сеттеров
Развить навыки защиты данных внутри классов
Краткая теория
Инкапсуляция — это принцип ООП, который скрывает внутреннее состояние объекта и
предоставляет доступ к нему только через специальные методы.
Модификаторы доступа:
private — доступ только внутри класса
public — доступ откуда угодно
protected — доступ внутри пакета и наследникам
Геттеры и сеттеры:
Геттер (getter) — метод для получения значения приватного поля
Сеттер (setter) — метод для установки значения приватного поля
Пример:
java
public class Person {
private String name; // приватное поле
// Геттер
public String getName() {
return name;
}
// Сеттер
public void setName(String name) {
[Link] = name;
}
}
Примеры
Пример 1. Простой класс с инкапсуляцией
java
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
[Link] = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0 && age < 120) {
[Link] = age;
}
}
}
Пример 2. Использование геттеров и сеттеров
java
public class Main {
public static void main(String[] args) {
Student student = new Student();
[Link]("Аян");
[Link](20);
[Link]("Имя: " + [Link]());
[Link]("Возраст: " + [Link]());
}
}
Задания к лабораторной работе №10
Блок 1. Основы инкапсуляции
Задание 1
Создайте класс Book с приватными полями: title (название), author (автор), year (год издания).
Создайте геттеры и сеттеры для всех полей.
Задание 2
Создайте класс Product с приватными полями: name, price, quantity. Добавьте геттеры и
сеттеры. В сеттере для price добавьте проверку: цена не может быть отрицательной.
Задание 3
Создайте класс BankAccount с приватными полями: accountNumber, balance. Создайте геттер
для balance и методы deposit() и withdraw() вместо сеттера для баланса.
Блок 2. Валидация в сеттерах
Задание 4
Создайте класс User с полями: username, password, email. В сеттере для password проверьте,
чтобы длина пароля была не менее 6 символов.
Задание 5
Создайте класс Temperature с полем celsius. Добавьте геттер и сеттер. В сеттере ограничьте
диапазон от -273 до 1000 градусов.
Блок 3. Работа с массивами объектов
Задание 6
Создайте класс Student с полями: name, grade (оценка). Создайте массив из 3 студентов,
заполните данные через сеттеры и выведите информацию через геттеры.
Задание 7
Создайте класс Car с полями: brand, speed. Создайте метод accelerate(), который увеличивает
скорость на 10. Скорость не может быть отрицательной.
Блок 4. Итоговое задание
Задание 8
Создайте программу "Список контактов":
Класс Contact с полями: name, phoneNumber, email
Все поля приватные, с геттерами и сеттерами
В сеттере для phoneNumber проверьте, чтобы номер содержал только цифры и имел длину
11 символов
Создайте ArrayList<Contact>, добавьте 3 контакта, выведите их на экран
Контрольные вопросы
1. Что такое инкапсуляция и зачем она нужна?
2. Чем отличается private от public?
3. Для чего нужны геттеры и сеттеры?
4. Какую проверку можно добавить в сеттер?
Вывод
В ходе лабораторной работы был изучен принцип инкапсуляции в Java, освоено
использование модификаторов доступа private и public, а также создание геттеров и сеттеров
для защиты и контроля доступа к данным класса.