Articles

Vad är en mutatormetod i Java?

lär dig vad som är en mutatormetod i java och fördelarna med att använda mutatorer och åtkomstmetoder. Alla förklaringar innehåller exempel för att illustrera.

kort bild cap

i den här artikeln kommer du lär dig vad en mutator metod i Java och accessor metod. Dessutom kommer du att förstå fördelarna med att använda mutator-och accessormetoder och se några java-exempel.

mutator-och accessormetodbegreppen är nära besläktade med objektorienterad programmering och inkapsling. Om du inte är bekant med objektorienterad programmering. Jag har inkluderat en kort introduktion nedan; men om du vill ha ytterligare detaljer, kolla in dokumentationen.

Innehållsförteckning

objektorienterad programmering Recap

objektorienterad programmering innebär att du löser problem som representerar problemets enheter som klasser. En klass har ett tillstånd och metoder där staten är en uppsättning variabler som innehåller relevanta data i vår representation. Och metoderna bestämmer vilka operationer vår klass kan utföra.

till exempel kan vi definiera klasscirkeln:

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

denna klass representerar cirkelkonceptet. Cirkelklasstillståndet har radien och en metod som heter area(), som returnerar cirkelområdet.

Du kan lägga till följande kod tillCircle för att testa det:

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

utgång:

28.274333882308138

Encapsulation Recap

Vi har definierat en klass med objektorienterad programmering och skapat objektet circle1I klassen Circle. Vad händer om jag ville ändra objektets radie circle1. Som koden står kan jag inte ändra den eftersom det inte finns någon metod för att komma åt radius variabel. Allt jag kan göra är att skapa ett nytt Cirkelobjekt med en annan radie. Vad kan jag göra för att rätta till detta?

Du kan göra två saker; en kommer att leda till en väl utformad klass, och den andra till en dålig, utmanande att upprätthålla design. Ett alternativ är att deklarera fältet radius som ett offentligt fält, så det är tillgängligt utanför klassen. Se ändringarna nedan:

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); } }

utgång:

3.05.0

det andra alternativet är att skapa metoder för att komma åt och ändra radiefältet, vilket gör att du kan dölja implementeringsinformationen. Denna mekanism är också känd som inkapsling.

mutator Method Definition i Java

mutator method i java och alla objektorienterade programmeringsspråk är en metod som gör att du kan ändra variablerna i klassen. Privat är åtkomstnivån för variablerna, vilket betyder att det enda sättet att ändra variablerna är att använda mutatormetoderna. På så sätt kan mutatormetoderna styra giltigheten och kvaliteten på de data som sparats i klassen.

till exempel i föregående kodavsnitt ärsetRadius() – metoden en mutatormetod. Du kan ändra den här metoden för att lägga till viss datavalidering. Till exempel kan ett exempel på datavalidering vara att kontrollera om den nya radien är ett negativt tal.

Accessor method Definition i Java

Accessor methods är metoder som gör det möjligt att läsa klassfälten till andra metoder eller klasser utanför klassen. På så sätt kan du styra hur klientkoden kan komma åt klassfälten.

mutatorer och Accessorer exempel

Låt oss se några exempel för att illustrera mutator och accessor metoder. Setters och getters är ett annat sätt att hänvisa till accessor och mutator metoder.

nedan finns ett exempel på hur man lägger till getters i en klass. Klassen heter Product, och den har två getters: getPrice() och getName(). Dessa metoder tillåter vilken klientkod som helst att komma åt klassvariabeln, som är price och 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; }}

och nu lägger jag till mutatorerna, så jag kan komma åt och ändra klassvariabeln.

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 ovan inkluderar setter-metoderna setPrice() och setName() även validering, vilket gör att data som skickas uppfyller vissa kriterier. Ett av kraven är till exempel att ett pris alltid ska vara över noll. Om parametern inte är giltig kommer koden att kasta ett undantag. Annars kommer det att tilldela det nya värdet.

namnkonventioner för mutatorer

i java bör namnen på dessa metoder, accessorer och mutatorer följa specifika namnkonventioner. Dessa regler är helt stabiliserade, vilket gör dem nödvändiga att följa. Att inte följa dessa konventioner kan skapa frustration och förvirring när andra läser din kod.

låt oss börja med namnkonventionerna för mutatorer. Metoden ska deklareras som offentlig och ogiltigförklaras. Dessutom bör metodnamnet börja med ordet set I små bokstäver. Följt av klassvariabelnamnet med en initial stor bokstav. Till exempel, om vår klass har en variabel som heter age, ska mutatormetoden se ut som följer:

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

namnkonventioner för Accessorer

tillsammans med mutatorer har vi sett accessorerna, som också följer en liknande namnkonvention. Reglerna är att metoden ska förklaras som offentlig. Dessutom bör metodnamnet börja med get, följt av klassvariabelnamnet med en initial stor bokstav. Metoden har inga parametrar och returnerar typen instansvariabel. Efter föregående exempel, låt oss skapa en åtkomstmetod förage variabel:

public int getAge(){...}

fördelar med mutatorer och Accessorer

hittills har vi sett åtkomst-och mutatormetoderna i java med några exempel. Och bekanta oss med namnkonventionerna som du bör följa när du förklarar dessa metoder. Men hur är dessa metoder användbara? Den största fördelen är inkapsling. Detta innebär i princip att genom att skapa dessa metoder döljer du de interna detaljerna i din klass från andra komponenter. Andra komponenter kan bara kommunicera via API.

följaktligen frikopplas klasserna; de är inte beroende av var och en, så att du kan utvecklas isolerat, vilket leder till snabbare utveckling eftersom teammedlemmar kan skapa olika klasser och komponenter parallellt. Förutom att underlätta underhållet, eftersom komponenter kan modifieras, med liten inverkan på andra beroende komponenter.

slutsats

för att sammanfatta har vi i den här artikeln sett att mutatormetoder och åtkomstmetoder i java är metoder som gör att vi kan läsa och skriva klassvariabler. Deras primära syfte är att hjälpa oss att utforma klasser som är väl inkapslade och frikopplade från varandra.

Jag hoppas att du hittar artikeln användbar, och tack så mycket för att läsa och stödja den här bloggen! Lycklig kodning!