Articles

co to jest metoda mutatora w Javie?

Dowiedz się, co to jest metoda mutatora w Javie i korzyści z używania mutatorów i metod akcesorowych. Wszystkie wyjaśnienia zawierają przykłady do zilustrowania.

cap obrazu karty

w tym artykule znajdziesz dowiedz się, co metoda mutatora w Javie i metody accessor. Ponadto poznasz korzyści płynące z używania metod mutator i accessor i zobaczysz kilka przykładów java.

koncepcje metody mutatora i akcesora są ściśle związane z programowaniem obiektowym i enkapsulacją. W przypadku, gdy nie jesteś zaznajomiony z programowaniem obiektowym. Poniżej zamieściłem krótkie wprowadzenie; jeśli jednak chcesz uzyskać więcej informacji, zapoznaj się z dokumentacją.

spis treści

Programowanie obiektowe podsumowanie

Programowanie obiektowe oznacza, że rozwiązujesz problemy reprezentując encje problemu jako klasy. Klasa ma stan i metody, w których stan jest zbiorem zmiennych zawierających odpowiednie dane w naszej reprezentacji. A metody określają operacje, które Nasza klasa może wykonać.

na przykład możemy zdefiniować klasę Circle:

public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }

Ta klasa reprezentuje pojęcie circle. Stan klasy circle ma radius i metodę o nazwie area(), która zwraca obszar okręgu.

możesz dodać następujący kod do klasyCircle, aby ją przetestować:

public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }

Wyjście:

28.274333882308138

podsumowanie enkapsulacji

zdefiniowaliśmy klasę za pomocą programowania obiektowego i utworzyliśmy obiektcircle1 klasyCircle. Co zrobić, jeśli chcę zmodyfikować promień obiektu circle1. W obecnej postaci kodu nie mogę go zmienić, ponieważ nie ma metody dostępu do zmiennej radius. Mogę tylko stworzyć nowy obiekt o innym promieniu. Co mogę zrobić, aby to poprawić?

można zrobić dwie rzeczy; jeden doprowadzi do dobrze zaprojektowanej klasy, a drugi do słabego, trudnego do utrzymania projektu. Jedną z opcji jest zadeklarowanie polaradius jako pola publicznego, więc jest ono dostępne poza klasą. Zobacz zmiany poniżej:

public class Circle {public float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.radius); circle1.radius = 5; System.out.println(circle1.radius); } }

Wyjście:

3.05.0

inną opcją jest tworzenie metod dostępu i modyfikowania pola radius, które pozwala ukryć szczegóły implementacji. Mechanizm ten znany jest również jako enkapsulacja.

definicja metody Mutatora w Javie

metoda mutatora w Javie i dowolnym obiektowym języku programowania jest metodą, która umożliwia zmianę zmiennych wewnątrz klasy. Prywatny jest poziomem dostępu do zmiennych, co oznacza, że jedynym sposobem na zmianę zmiennych jest użycie metod mutatora. W ten sposób metody mutatora mogą kontrolować ważność i jakość danych zapisanych w klasie.

na przykład w poprzednim fragmencie kodu metodasetRadius() jest metodą mutatora. Możesz zmodyfikować tę metodę, aby dodać walidację danych. Przykładem walidacji danych może być sprawdzenie, czy nowy promień jest liczbą ujemną.

definicja metody Accessor w Javie

metody Accessor są metodami, które umożliwiają odczyt pól klasy do innych metod lub klas poza klasą. W ten sposób możesz kontrolować, w jaki sposób kod klienta może uzyskać dostęp do pól klasy.

mutatory i Accessory przykłady

zobaczmy kilka przykładów ilustrujących metody mutatora i accessora. Setery i gettery to inny sposób odwoływania się do metod akcesora i mutatora.

poniżej znajduje się przykład jak dodać gettery do klasy. Klasa nazywa się ProductI ma dwa gettery: getPrice()I getName(). Metody te pozwalają każdemu klientowi na dostęp do zmiennej klasy, która jest price I name.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name;// getter or accessor methods public BigDecimal getPrice() { return price; } public String getName() { return name; }}

a teraz dodam mutatory, abym mógł uzyskać dostęp i zmodyfikować zmienną klasy.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name; public BigDecimal getPrice() { return price; } public String getName() { return name; } // mutator or setter methods public void setPrice(BigDecimal price) { if(price.compareTo(BigDecimal.ZERO)<0 )throw new IllegalArgumentException("Empty product name"); this.price = price; } public void setName(String name) { if(name.isEmpty()) throw new IllegalArgumentException("Empty product name"); this.name = name; }}

jak widać powyżej, metody ustawianiasetPrice() IsetName() obejmują również walidację, upewniając się, że przekazywane dane spełniają pewne kryteria. Na przykład, jednym z wymogów jest to, że cena powinna być zawsze powyżej zera. Jeśli parametr nie jest poprawny, kod wyrzuci wyjątek. W przeciwnym razie przypisze nową wartość.

konwencje nazewnictwa dla mutatorów

w Javie nazwy tych metod, akcesoriów i mutatorów powinny być zgodne z określonymi konwencjami nazewnictwa. Zasady te są całkowicie ustabilizowane, co czyni je niezbędnymi do przestrzegania. Nieprzestrzeganie tych konwencji może powodować frustrację i zamieszanie, gdy inni czytają Twój kod.

zacznijmy od konwencji nazewnictwa mutatorów. Metoda powinna być zadeklarowana jako publiczna i zwracana void. Ponadto nazwa metody powinna zaczynać się od słowaset małymi literami. Po której następuje nazwa zmiennej class z wielką literą. Na przykład, jeżeli nasza klasa posiada zmienną o nazwie age, wtedy metoda mutator powinna wyglądać następująco:

public void setAge(int age){...}

konwencje nazewnictwa dla akcesoriów

wraz z mutatorami widzieliśmy akcesoria, które również stosują podobną konwencję nazewnictwa. Zasady są takie, że metoda powinna być zadeklarowana jako Publiczna. Dodatkowo, nazwa metody powinna zaczynać się od get, po której następuje nazwa zmiennej klasy z wielką literą. Metoda nie posiada parametrów i zwraca typ zmiennej instancji. Idąc za poprzednim przykładem, stwórzmy metodę accessor dla zmiennejage :

public int getAge(){...}

zalety mutatorów i akcesoriów

do tej pory widzieliśmy metody accessor i mutator w Javie z kilkoma przykładami. I zapoznaj się z konwencjami nazewnictwa, których powinieneś przestrzegać deklarując te metody. Jednak w jaki sposób te metody są przydatne? Główną zaletą jest hermetyzacja. Oznacza to, że tworząc te metody, ukrywasz wewnętrzne szczegóły swojej klasy przed innymi komponentami. Inne komponenty mogą komunikować się tylko za pośrednictwem API.

w związku z tym klasy są oddzielone; nie zależą one od każdego z nich, co pozwala rozwijać się w izolacji, co prowadzi do szybszego rozwoju, ponieważ członkowie zespołu mogą tworzyć różne klasy i Komponenty równolegle. Oprócz ułatwienia konserwacji, ponieważ komponenty mogą być modyfikowane, z niewielkim wpływem na inne zależne komponenty.

wniosek

podsumowując, w tym artykule widzieliśmy, że metody mutatora i metody accessors w Javie są metodami, które umożliwiają nam odczyt i zapis zmiennych klasowych. Ich głównym celem jest pomoc w projektowaniu klas, które są dobrze zamknięte i oddzielone od siebie.

mam nadzieję, że artykuł okaże się przydatny i bardzo dziękuję za przeczytanie i wspieranie tego bloga! Szczęśliwego kodowania!