Zanim zagłębimy się w tę koncepcję, musisz być świadomy klas i enkapsulacji w Javie .

Hermetyzacja w Javie

Hermetyzacja, jak sama nazwa wskazuje, to proces zamykania danych i metod jako pojedynczej jednostki. W programowaniu zorientowanym obiektowo składowe danych klasy prywatne, aby ograniczyć do nich bezpośredni dostęp. Tak więc hermetyzowane elementy danych nie mogą być pobierane ani modyfikowane bez odpowiednio zdefiniowanego sposobu. W tym celu definiujemy metody akcesorów i mutatorów w Javie. Przyjrzyjmy się szczegółowo tym metodom.

Czym są akcesory i mutatory w Javie?

Akcesoria

Nazwa metody akcesora jest sterowana przez słowo „ dostęp ”, które umożliwia użytkownikowi dostęp do prywatnych informacji w klasie. Jeśli kiedykolwiek słyszałeś o metodzie „ get ” lub „ getterach ”, jest to to samo, co akcesorium. Moduły pobierające pobierają prywatne zmienne i stałe, aby uzyskać dostęp poza zakresem klasy.

Składnia

Używamy słowa kluczowego „ get ” dla akcesorów Java. Aby uzyskać dostęp do zmiennej „ nazwa ”, możemy użyć następującego gettera getName() . Aby zapoznać się z przykładem metody akcesora, spójrz na poniższe.

public class Student {

	private String name;
	
	public String getName() {
		return name;
	}
}
Należy pamiętać, że każdy getter ma słowo kluczowe „ get ” przed nazwą zmiennej w sygnaturze metody, a typ zwracany jest taki sam, jak zwracana zmienna. Ponieważ zmienna „ name ” jest typu „ String ”, więc metoda gettera/akcesora również zwraca „ String ”.

Mutatory

Metoda mutator w Javie opiera się na słowie „mutowanie”, które dosłownie oznacza modyfikację. Mutatory pozwalają użytkownikom na ustawienie/mutację wartości prywatnych zmiennych obiektu klasy. W kontekście programowania obiektowego metoda „ set ” lub „ settery ” są również znane jako mutatory. Setery ułatwiają enkapsulację, ponieważ prywatnych członków danych nie można bezpośrednio modyfikować. Tak więc metody ustawiające/mutatory są używane do aktualizowania wartości zmiennej poza zakresem klasy.

Składnia

W przypadku mutatorów używamy słowa kluczowego „ set ”. Każdy seter jest zdefiniowany przez słowo kluczowe „set”, po którym następuje nazwa zmiennej, która ma zostać zmutowana. Tutaj używamy metody ustawiającej setName() , która jako parametr przyjmuje zmienną typu String.

public class Student {

	private String name;

	public void setName(String name) {
		this.name = name;
	}
}

Dlaczego potrzebujemy akcesorów i mutatorów?

Potrzebujemy getterów i setterów lub akcesorów i mutatorów do ochrony poufnych informacji w klasie. Informacje są chronione przed nielegalnym wykorzystaniem przy użyciu tych standardowych metod. Co więcej, zbiór danych w mutatorze może być również walidowany, jeśli spełnia wszystkie wymagania programu.

Przykłady akcesorów i mutatorów

Korzystając z poniższej klasy ucznia, przyjrzyjmy się przykładom metod akcesora i mutatora.

Przykład


import java.util.Arrays;

public class Student {

	private String name;
	private Integer ID;
	private String DOB;
	private double GPA;
	private String[] courses;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getID() {
		return ID;
	}

	public void setID(Integer iD) {
		this.ID = iD;
	}

	public String getDOB() {
		return DOB;
	}

	public void setDOB(String dOB) {
		this.DOB = dOB;
	}

	public double getGPA() {
		return GPA;
	}

	public void setGPA(double gPA) {
		this.GPA = gPA;
	}

	public String[] getCourses() {
		return courses;
	}

	public void setCourses(String[] courses) {
		this.courses = courses;
	}

	public static void main(String[] args) {

		Student student1 = new Student();

		System.out.println("Student Bio [ Before using Accessors & Mutators ]");

		// calling accessor methods
		System.out.print("Name: " + student1.getName());
		System.out.print("\tID: " + student1.getID());
		System.out.print("\tGPA: " + student1.getGPA());
		System.out.print("\tDOB: " + student1.getDOB());
		System.out.println("\tCourses: " +  Arrays.toString(student1.getCourses()));

		// calling mutator methods
		student1.setName("Alex Coy");
		student1.setID(3115);
		student1.setGPA(2.79);
		student1.setDOB("08/08/1998");
		String[] courses = { "Object Oriented Programming", "Cryptography", "Photography", "Network Security" };
		student1.setCourses(courses);

		System.out.println("\nStudent Bio [ After using Mutators & Accessors ]");

		// calling accessor methods
		System.out.print("Name: " + student1.getName());
		System.out.print("\tID: " + student1.getID());
		System.out.print("\tGPA: " + student1.getGPA());
		System.out.print("\tDOB: " + student1.getDOB());
		System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
	}
}

Wyjście

Życiorys studenta [ Przed użyciem akcesoriów i mutatorów] Imię i nazwisko: null ID: null GPA: 0.0 Data urodzenia: null Kursy: null Życiorys studenta [ Po użyciu mutatorów i mutatorów] Imię i nazwisko: Alex Coy ID: 3115 GPA: 2.79 Data urodzenia: 08/08/1998 Kursy: [Programowanie obiektowe, kryptografia, fotografia, bezpieczeństwo sieciowe]

Wniosek

To było krótkie wprowadzenie i przykład akcesorów i mutatorów w Javie. Zalecamy stworzenie własnych przykładowych przykładów i samodzielne przetestowanie tych metod. W następnym ćwiczeniu możesz znaleźć sposoby automatycznego dodawania getterów i setterów przez IDE. Dowiedz się i daj nam znać!