mikä on Mutaatiomenetelmä Jaavalla?
opi, mikä on mutaattorimenetelmä Javassa ja mitä hyötyä mutaattoreiden ja accessor-menetelmien käytöstä on. Kaikki selitykset sisältävät esimerkkejä havainnollistamaan.
tässä artikkelissa opi mitä mutaattori menetelmä Java ja accessor menetelmä. Lisäksi, ymmärrät hyödyt käyttämällä mutator ja accessor menetelmiä ja nähdä joitakin java esimerkkejä.
mutaattori-ja accessor-metodikäsitteet liittyvät läheisesti oliokeskeiseen ohjelmointiin ja kapselointiin. Jos et tunne olio-orientoitunutta ohjelmointia. Olen sisällyttänyt lyhyen johdannon alla; kuitenkin, jos haluat lisätietoja, tutustu asiakirjat.
Sisällysluettelo
Oliokeskeinen ohjelmointi kertaus
Oliokeskeinen ohjelmointi tarkoittaa sitä, että ratkaistaan ongelmia, jotka edustavat ongelman entiteettejä luokkina. Luokalla on tila ja menetelmät, joissa tila on joukko muuttujia, jotka sisältävät olennaiset tiedot esityksessämme. Menetelmät määräävät, mitä toimintoja luokkamme voi suorittaa.
esimerkiksi voidaan määritellä luokkaympyrä:
public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }
Tämä luokka edustaa ympyrän käsitettä. Ympyrän luokkatilalla on säde ja area()
, joka palauttaa ympyrän pinta-alan.
voit lisätä seuraavan koodin Circle
Luokka testaamaan sitä:
public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }
Lähtö:
28.274333882308138
kapselointi kertaus
olemme määritelleet luokan käyttäen olio-ohjelmointia ja luoneet olion circle1
luokasta Circle
. Mitä jos haluaisin muokata kohteen sädettä circle1
. Koodia en voi muuttaa, koska radius
muuttuja ei voi käyttää. Voin vain luoda uuden ympyrän, jonka säde on erilainen. Mitä voin tehdä korjatakseni tämän?
voit tehdä kaksi asiaa; toinen johtaa hyvin suunniteltuun luokkaan ja toinen huonoon, haastavaan suunnittelun ylläpitoon. Yksi vaihtoehto on julistaa radius
kenttä julkiseksi kentäksi, joten se on käytettävissä luokan ulkopuolella. Katso muutokset alta:
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); } }
Output:
3.05.0
toinen vaihtoehto on luoda menetelmiä sädekentän käyttämiseen ja muokkaamiseen, jolloin toteutuksen yksityiskohdat voi piilottaa. Tätä mekanismia kutsutaan myös kapseloinniksi.
mutator Method Definition in Java
mutator method in java, and any object-oriented programming language, on menetelmä, jonka avulla voidaan muuttaa muuttujia luokan sisällä. Private on muuttujien pääsytaso, eli ainoa tapa muuttaa muuttujia on käyttää mutaattorimenetelmiä. Näin mutaatiomenetelmillä voidaan kontrolloida luokkaan tallennettujen tietojen pätevyyttä ja laatua.
esimerkiksi edellisessä koodinpätkässä setRadius()
menetelmä on mutaatiomenetelmä. Voit muokata tätä menetelmää lisätä joitakin tietojen validointi. Esimerkki tietojen validoinnista voisi olla esimerkiksi sen tarkistaminen, onko Uusi säde negatiivinen luku.
Accessor Method Definition in Java
Accessor methods ovat menetelmiä, jotka mahdollistavat luokkakenttien lukemisen muihin menetelmiin tai luokan ulkopuolisiin luokkiin. Näin voit hallita, miten asiakaskoodi voi käyttää luokkakenttiä.
Mutaattorit ja Accessorit esimerkkejä
Katsotaanpa joitakin esimerkkejä havainnollistamaan mutaattori ja accessor menetelmiä. Setters ja getters on toinen tapa viitata accessor ja mutator menetelmiä.
alla on esimerkki siitä, miten getterit lisätään luokkaan. Luokan nimi on Product
, ja sillä on kaksi getteria: getPrice()
ja getName()
. Näiden menetelmien avulla mikä tahansa asiakaskoodi pääsee käsiksi luokkamuuttujaan, joka on price
ja 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; }}
ja nyt lisään mutaattorit, jotta pääsen käsiksi ja muokkaamaan luokkamuuttujaa.
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; }}
kuten yllä näkyy, setter-menetelmät setPrice()
ja setName()
sisältävät myös validoinnin, jolla varmistetaan, että syötetyt tiedot täyttävät tietyt kriteerit. Yksi vaatimuksista on esimerkiksi se, että hinnan pitäisi olla aina nollan yläpuolella. Jos parametri ei ole voimassa, koodi tekee poikkeuksen. Muuten se määrittää uuden arvon.
Mutaattoreiden nimeämiskäytännöt
Jaavassa näiden menetelmien, accessoreiden ja mutaattoreiden nimien tulee noudattaa erityisiä nimeämiskäytäntöjä. Nämä säännöt ovat täysin vakautettuja, mikä tekee niistä välttämättömiä noudattaa. Näiden yleissopimusten noudattamatta jättäminen voi aiheuttaa turhautumista ja hämmennystä, kun muut ihmiset lukevat koodiasi.
aloitetaan mutanttien nimeämiskäytännöistä. Menetelmä on julistettava julkiseksi ja palautus mitättömäksi. Lisäksi menetelmän nimen tulee alkaa sanalla set
pieninä kirjaimina. Jota seuraa luokkamuuttujan nimi isolla alkukirjaimella. Esimerkiksi, jos luokassamme on muuttuja nimeltä age
, mutaatiomenetelmän tulee näyttää seuraavasti:
public void setAge(int age){...}
Accessorsien nimeämiskäytännöt
mutaattoreiden ohella on nähty accessoreja, jotka noudattavat myös samanlaista nimeämiskäytäntöä. Sääntöjen mukaan menetelmä on ilmoitettava julkiseksi. Lisäksi menetelmän nimen tulee alkaa get
, jonka jälkeen tulee luokkamuuttujan nimi isolla alkukirjaimella. Menetelmässä ei ole parametreja ja palauttaa instanssimuuttujan tyypin. Luodaan edellisen esimerkin mukaisesti accessor-menetelmä age
muuttuja:
Mutaattoreiden ja Accessoreiden edut
toistaiseksi on nähty accessor ja mutator-menetelmiä Javassa muutamin esimerkein. Ja tutustu nimeämiskäytäntöihin, joita sinun tulisi noudattaa näitä menetelmiä julistaessasi. Mutta miten nämä menetelmät ovat hyödyllisiä? Tärkein hyöty on kapselointi. Tämä tarkoittaa käytännössä sitä, että luomalla näitä menetelmiä, olet piilossa sisäisiä yksityiskohtia oman luokan muista komponenteista. Muut komponentit voivat kommunikoida vain API: n kautta.
näin ollen luokat on irrotettu tuotannosta; ne eivät riipu jokaisesta, jolloin voit kehittyä erikseen, mikä johtaa nopeampaan kehitykseen, koska tiimin jäsenet voivat luoda eri luokkia ja komponentteja rinnakkain. Huollon helpottamisen lisäksi, koska komponentteja voidaan muuttaa, millä on pieni vaikutus muihin riippuvaisiin komponentteihin.
johtopäätös
yhteenvetona voidaan todeta, että tässä artikkelissa mutator-ja accessors-metodit ovat Javan menetelmiä, joiden avulla voidaan lukea ja kirjoittaa luokkamuuttujia. Niiden ensisijainen tarkoitus on auttaa meitä suunnittelemaan luokkia, jotka on hyvin kapseloitu ja erotettu toisistaan.
toivon, että pidät artikkelia hyödyllisenä, ja kiitos paljon tämän blogin lukemisesta ja tukemisesta! Hyvää koodausta!
Leave a Reply