В об’єктно-орієнтованому програмуванні інкапсуляція є фундаментальною концепцією, яка стосується практики приховування деталей реалізації об’єкта та надання інтерфейсу для доступу до його властивостей і поведінки. Методи доступу та мутації є двома важливими концепціями, пов’язаними з інкапсуляцією в Java.
Аксессор
Методи доступу, також відомі як методи отримання, — це методи, які дозволяють отримати значення приватних змінних екземпляра об’єкта. Ці методи надають доступ лише для читання до стану об’єкта. Використовуючи методи доступу, ви можете гарантувати, що стан об’єкта не буде змінено випадково чи зловмисно зовнішнім кодом.
Мутатор
Методи мутації, також відомі як методи встановлення, — це методи, які дозволяють змінювати значення приватних змінних екземпляра об’єкта. Ці методи надають доступ лише для запису до стану об’єкта. Використовуючи методи мутатора, ви можете переконатися, що стан об’єкта змінюється лише через керований інтерфейс.
Давайте розглянемо приклад, щоб зрозуміти концепцію методів доступу та мутаторів у Java. Припустімо, що у нас є клас під назвою Person, який має три приватні змінні екземпляра: ім’я, вік та електронна адреса. Ми хочемо надати доступ до цих змінних за допомогою методів доступу та мутатора.
public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
У цьому прикладі ми визначили три методи доступу: getName(), getAge() і getEmail() і три методи-мутатори: setName(), setAge() і setEmail(). Методи доступу повертають значення відповідної змінної екземпляра, а методи мутатора встановлюють значення відповідної змінної екземпляра.
Угода про найменування
Конвенція про іменування методів доступу та мутатора є важливою в Java. Методи доступу повинні мати назву, починаючи з «get», за якою слідує ім’я змінної, з великої першої літери. Назви методів-мутаторів мають починатися з «set», за якою йде ім’я змінної з великої першої літери. Ця домовленість про найменування пояснює, що робить кожен метод, і робить код більш читабельним і зручним для обслуговування.
Методи доступу та мутації є важливою частиною інкапсуляції в Java. Вони дозволяють контролювати доступ до стану об’єкта, забезпечуючи доступ до нього та його зміну лише через керований інтерфейс. Дотримуючись угоди про іменування методів доступу та мутатора, ми можемо зробити ваш код більш читабельним і придатним для обслуговування.
Ось приклад програми, яка демонструє використання методів доступу та мутатора в Java:
Особа.java
import java.util.Scanner; public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Person person = new Person(); System.out.print('Enter name: '); String name = scanner.nextLine(); person.setName(name); System.out.print('Enter age: '); int age = scanner.nextInt(); person.setAge(age); scanner.nextLine(); // Consume the newline character left by nextInt() System.out.print('Enter email: '); String email = scanner.nextLine(); person.setEmail(email); System.out.println(' Name: ' + person.getName()); System.out.println('Age: ' + person.getAge()); System.out.println('Email: ' + person.getEmail()); } }
Вихід:
Name: Manoj Age: 21 Email: [email protected]
У цьому прикладі основний метод створює новий екземпляр класу Person і використовує методи мутації (setName, setAge та setEmail) для встановлення значень приватних змінних екземпляра об’єкта. Потім методи доступу (getName, getAge та getEmail) використовуються для отримання значень змінних екземпляра та відображення їх на консолі.
Перевага використання Accessor і Mutator
Перевага використання методів доступу та мутатора полягає в тому, що вони дозволяють нам додати перевірку та іншу логіку обробки до процесу отримання та встановлення стану об’єкта. Наприклад, ви можете додати перевірку підтвердження до методу setAge(int age), щоб переконатися, що значення віку знаходиться в межах певного діапазону, або додати логіку форматування до методу getName() для великої першої літери ім'я людини.