Articles

hvad er en mutator metode i Java?

Lær, hvad der er en mutatormetode i java, og fordelene ved at bruge mutatorer og accessormetoder. Alle forklaringer inkluderer eksempler til at illustrere.

Kortbilledhætte

i denne artikel vil du blive bedt om at lær, hvad en mutator metode i Java og accessor metode. Derudover vil du forstå fordelene ved at bruge mutator-og accessormetoder og se nogle java-eksempler.

mutator-og accessormetodekoncepterne er tæt forbundet med objektorienteret programmering og indkapsling. Hvis du ikke er bekendt med objektorienteret programmering. Jeg har inkluderet en kort introduktion nedenfor; imidlertid, hvis du ønsker yderligere detaljer, tjek dokumentationen.

Indholdsfortegnelse

objektorienteret programmering Recap

objektorienteret programmering betyder, at du løser problemer, der repræsenterer problemets enheder som klasser. En klasse har en tilstand og metoder, hvor staten er et sæt variabler, der indeholder de relevante data i vores repræsentation. Og metoderne bestemmer de operationer, vores klasse kan udføre.

for eksempel kan vi definere klassecirklen:

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

denne klasse repræsenterer cirkelkonceptet. Cirkelklassetilstanden har radius og en metode med navnet area(), som returnerer cirkelområdet.

Du kan tilføje følgende kode til Circle klasse for at teste det ud:

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

Output:

28.274333882308138

indkapsling Recap

Vi har defineret en klasse ved hjælp af objektorienteret programmering og oprettet objektetcircle1af klassenCircle. Hvad hvis jeg ønskede at ændre objektets radius circle1. Som koden står, kan jeg ikke ændre den, da der ikke er nogen metode til at få adgang til radius variablen. Alt jeg kan gøre er at oprette et nyt Cirkelobjekt med en anden radius. Hvad kan jeg gøre for at rette op på dette?

Du kan gøre to ting; den ene vil føre til en veldesignet klasse, og den anden til en dårlig, udfordrende at opretholde design. En mulighed er at erklære radius – feltet som et offentligt felt, så det er tilgængeligt uden for klassen. Se ændringerne 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

den anden mulighed er at oprette metoder til at få adgang til og ændre radiusfeltet, som giver dig mulighed for at skjule implementeringsoplysningerne. Denne mekanisme er også kendt som indkapsling.

definition af Mutatormetode i Java

mutatormetoden i java og ethvert objektorienteret programmeringssprog er en metode, der giver dig mulighed for at ændre variablerne i klassen. Privat er adgangsniveauet for variablerne, hvilket betyder, at den eneste måde at ændre variablerne på er ved hjælp af mutatormetoderne. På denne måde kan mutatormetoderne kontrollere gyldigheden og kvaliteten af de data, der er gemt i klassen.

for eksempel i det foregående kodestykke er setRadius() – metoden en mutatormetode. Du kan ændre denne metode for at tilføje nogle datavalidering. For eksempel kan et eksempel på datavalidering være at kontrollere, om den nye radius er et negativt tal.

definition af Accessormetode i Java

Accessormetoder er metoder, der tillader læsning af klassefelterne til andre metoder eller klasser uden for klassen. På denne måde kan du styre, hvordan klientkoden kan få adgang til klassefelterne.

eksempler på Mutatorer og Accessorer

lad os se nogle eksempler for at illustrere mutator-og accessormetoderne. Settere og getters er en anden måde at henvise til accessor og mutator metoder.

nedenfor er der et eksempel på, hvordan man tilføjer getters til en klasse. Klassen hedder Product, og den har to getters: getPrice() og getName(). Disse metoder tillader enhver klientkode at få adgang til klassevariablen, 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 nu vil jeg tilføje mutatorerne, så jeg kan få adgang til og ændre klassevariablen.

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, indeholder setter-metoderne setPrice()og setName() også Validering, så de data, der sendes, opfylder nogle kriterier. For eksempel er et af kravene, at en pris altid skal være over nul. Hvis parameteren ikke er gyldig, vil koden kaste en undtagelse. Ellers vil den tildele den nye værdi.

navngivningskonventioner for Mutatorer

i java skal navnene på disse metoder, tilbehør og mutatorer følge specifikke navngivningskonventioner. Disse regler er helt stabiliseret, hvilket gør dem vigtige at følge. Ikke at følge disse konventioner kan skabe frustration og forvirring, når andre mennesker læser din kode.

lad os starte med navngivningskonventionerne for mutatorer. Metoden skal erklæres som offentlig og returnere ugyldig. Desuden skal metodenavnet begynde med ordet set med små bogstaver. Efterfulgt af klassevariabelnavnet med et indledende stort bogstav. For eksempel, hvis vores klasse har en variabel kaldet age, skal mutatormetoden se ud som følger:

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

navngivningskonventioner for Accessors

sammen med mutatorer har vi set accessors, som også følger en lignende navngivningskonvention. Reglerne er, at metoden skal erklæres som offentlig. Derudover skal metodenavnet starte med get efterfulgt af klassevariabelnavnet med et startbogstav. Metoden har ingen parametre og returnerer instansvariabeltypen. Efter det foregående eksempel, lad os oprette en accessormetode tilage variablen:

public int getAge(){...}

fordele ved Mutatorer og Accessorer

indtil videre har vi set accessor-og mutatormetoderne i java med nogle eksempler. Og gør os bekendt med de navngivningskonventioner, du skal følge, når du erklærer disse metoder. Men hvordan er disse metoder nyttige? Den største fordel er indkapsling. Dette betyder dybest set, at du ved at oprette disse metoder skjuler de interne detaljer i din klasse for andre komponenter. Andre komponenter kan kun kommunikere via API.

derfor er klasser afkoblet; de er ikke afhængige af hver, så du kan udvikle dig isoleret, hvilket fører til hurtigere udvikling, da teammedlemmer kan oprette forskellige klasser og komponenter parallelt. Udover at lette vedligeholdelsen, Da komponenter kan ændres, med en lille indvirkning på andre afhængige komponenter.

konklusion

for at opsummere har vi i denne artikel set, at mutatormetoder og accessors-metoder i java er metoder, der gør det muligt for os at læse og skrive klassevariabler. Deres primære formål er at hjælpe os med at designe klasser, der er godt indkapslet og afkoblet fra hinanden.

Jeg håber du finder artiklen nyttig, og tak så meget for at læse og støtte denne blog! Glad kodning!