Hva er en mutator metode I Java?
Lær hva som er en mutator metode i java og fordelene ved å bruke mutatorer og accessor metoder. Alle forklaringer inkluderer eksempler for å illustrere.
i denne artikkelen vil du se følgende: lær hva en mutator metode i java og accessor metode. I tillegg vil du forstå fordelene ved å bruke mutator og accessor metoder og se noen java eksempler.
begrepene mutator og accessor metode er nært knyttet til objektorientert programmering og innkapsling. I tilfelle du ikke er kjent med objektorientert programmering. Jeg har tatt med en kort introduksjon nedenfor; men hvis du vil ha ytterligere detaljer, sjekk ut dokumentasjonen.
Innholdsfortegnelse
Objektorientert Programmering Oppsummering
Objektorientert Programmering betyr at du løser problemer som representerer enhetene i problemet som klasser. En klasse har en tilstand og metoder der staten er et sett med variabler som inneholder de relevante dataene i vår representasjon. Og metodene bestemmer operasjonene vår klasse kan utføre.
for eksempel kan vi definere klassesirkelen:
public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }
denne klassen representerer sirkelkonseptet. Sirkelklassetilstanden har radius og en metode som heter area()
, som returnerer sirkelområdet.
du kan legge til følgende kode iCircle
klassen for å teste den ut:
public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }
Utgang:
28.274333882308138
Innkapsling Oppsummering
vi har definert en klasse ved hjelp av objektorientert programmering og opprettet objektetcircle1
av klassenCircle
. Hva om jeg ønsket å endre radiusen til objektet circle1
. Som koden står, kan jeg ikke endre den siden det ikke er noen metode for å få tilgang til radius
variabelen. Alt jeg kan gjøre er å skape et Nytt Sirkelobjekt med en annen radius. Hva kan jeg gjøre for å rette opp dette?
du kan gjøre to ting; man vil føre til en godt designet klasse, og den andre til en dårlig, utfordrende å opprettholde design. Ett alternativ er å erklære radius
– feltet som et offentlig felt, så det er tilgjengelig utenfor klassen. Se endringene nedenfor:
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
Det andre alternativet er å lage metoder for å få tilgang til og endre radiusfeltet, som lar deg skjule implementeringsdetaljene. Denne mekanismen er også kjent som innkapsling.
Mutator Method Definition In Java
mutatormetoden i java, og ethvert objektorientert programmeringsspråk, er en metode som lar deg endre variablene inne i klassen. Privat er tilgangsnivået for variablene, noe som betyr at den eneste måten å endre variablene på er å bruke mutatormetodene. På denne måten mutator metoder kan kontrollere gyldigheten og kvaliteten på data som er lagret i klassen.
i den forrige kodebiten er for eksempel setRadius()
– metoden en mutatormetode. Du kan endre denne metoden for å legge til noen datavalidering. For eksempel kan et eksempel på datavalidering sjekke om den nye radiusen er et negativt tall.
Accessor Method Definition i Java
Accessor metoder er metoder som tillater lesing av klassefeltene til andre metoder eller klasser utenfor klassen. På denne måten kan du kontrollere hvordan klientkoden kan få tilgang til klassefeltene.
Mutators And Accessors Eksempler
La oss se noen eksempler for å illustrere mutator og accessor metoder. Settere og getters er en annen måte å referere til accessor og mutator metoder.
Nedenfor er et eksempel på hvordan du legger til getters i en klasse. Klassen kalles Product
, og den har to getters: getPrice()
og getName()
. Disse metodene tillater enhver klientkode å få tilgang til klassevariabelen, som er price
og 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; }}
og nå vil jeg legge til mutatorene, slik at jeg kan få tilgang til og endre klassevariabelen.
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; }}
som du kan se ovenfor, settermetodenesetPrice()
ogsetName()
inkluderer også validering, slik at dataene som sendes oppfyller noen kriterier. For eksempel er et av kravene at en pris alltid skal være over null. Hvis parameteren ikke er gyldig, vil koden kaste et unntak. Ellers vil den tildele den nye verdien.
Navnekonvensjoner for Mutatorer
i java skal navnene på disse metodene, aksessorene og mutatorene følge spesifikke navnekonvensjoner. Disse reglene er helt stabilisert, noe som gjør dem viktige å følge. Å ikke følge disse konvensjonene kan skape frustrasjon og forvirring når andre leser koden din.
La oss starte med navnekonvensjonene for mutatorer. Metoden skal deklareres som offentlig og returnere ugyldig. Videre bør metodenavnet begynne med ordet set
i små bokstaver. Etterfulgt av klassen variabel navn med en stor bokstav. For eksempel, hvis klassen vår har en variabel kalt age
, bør mutatormetoden se slik ut:
public void setAge(int age){...}
Navnekonvensjoner for Accessors
sammen med mutators har vi sett accessors, som også følger en lignende navnekonvensjon. Reglene er at metoden skal deklareres som offentlig. I tillegg bør metodenavnet starte med get
, etterfulgt av klassevariabelnavnet med en stor bokstav. Metoden har ingen parametere og returnerer forekomstvariabeltypen. Etter det forrige eksemplet, la oss opprette en tilbehørsmetode forage
variabelen:
public int getAge(){...}
Fordeler Med Mutatorer og Accessors
Så langt har vi sett accessor og mutator metoder i java med noen eksempler. Og gjør oss kjent med navnekonvensjonene du bør følge når du erklærer disse metodene. Men hvordan er disse metodene nyttige? Den største fordelen er innkapsling. Dette betyr i utgangspunktet at ved å lage disse metodene skjuler du de interne detaljene i klassen din fra andre komponenter. Andre komponenter kan bare kommunisere via API.
følgelig er klassene avkoblet; de er ikke avhengige av hver, slik at du kan utvikle seg isolert, noe som fører til raskere utvikling siden teammedlemmer kan lage forskjellige klasser og komponenter parallelt. Foruten lettelser vedlikehold, siden komponentene kan endres, med en liten innvirkning på andre avhengige komponenter.
Konklusjon
for å oppsummere, i denne artikkelen har vi sett at mutatormetoder og tilgangsmetoder i java er metoder som gjør at vi kan lese og skrive klassevariabler. Deres primære formål er å hjelpe oss å designe klasser som er godt innkapslet og koblet fra hverandre.
jeg håper du finner artikkelen nyttig, og takk så mye for å lese og støtte denne bloggen! Glad koding!
Leave a Reply