Wat is een mutator methode in Java?
leer wat een mutator methode is in java en de voordelen van het gebruik van mutators en accessor methoden. Alle verklaringen bevatten voorbeelden om te illustreren.
In dit artikel leert u wat een mutator methode is in java en accessor methode. Daarnaast zult u de voordelen van het gebruik van mutator en accessor methoden te begrijpen en zie een aantal java voorbeelden.
de concepten van de mutator-en accessormethode zijn nauw verwant aan objectgeoriënteerde programmering en encapsulatie. Voor het geval u niet bekend bent met objectgeoriënteerd programmeren. Ik heb hieronder een korte inleiding opgenomen; als u echter meer informatie wilt, bekijk dan de documentatie.
inhoudsopgave
objectgeoriënteerd programmeren Recap
objectgeoriënteerd programmeren betekent dat u problemen oplost die de entiteiten van het probleem als klassen weergeven. Een klasse heeft een toestand en methoden waarbij de toestand een verzameling variabelen is die de relevante gegevens in onze representatie bevatten. En de methoden bepalen welke operaties onze klasse kan uitvoeren.
bijvoorbeeld, we kunnen de klasse cirkel definiëren:
public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }
Deze klasse vertegenwoordigt het cirkel concept. De cirkelklasse staat heeft de straal en een methode genaamd area()
, die het cirkelgebied retourneert.
u kunt de volgende code toevoegen aan de klasse Circle
om het uit te testen:
public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }
uitvoer:
28.274333882308138
Encapsulation Recap
we hebben een klasse gedefinieerd met behulp van objectgeoriënteerd programmeren en het object circle1
van de klasse Circle
aangemaakt. Wat als ik de straal van het object circle1
wilde wijzigen. Zoals de code staat, kan ik het niet veranderen omdat er geen methode is om toegang te krijgen tot de radius
variabele. Het enige wat ik kan doen is een nieuw Cirkelobject maken met een andere radius. Wat kan ik doen om dit te corrigeren?
u kunt twee dingen doen; de ene zal leiden tot een goed ontworpen klasse, en de andere tot een slechte, uitdagende ontwerp te onderhouden. Een optie is het declareren van hetradius
veld als een publiek veld, dus het is toegankelijk buiten de klasse. Zie de wijzigingen hieronder:
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); } }
uitvoer:
3.05.0
de andere optie is het creëren van methoden om het radius-veld te openen en te wijzigen, waarmee u de implementatiedetails kunt verbergen. Dit mechanisme staat ook bekend als inkapseling.
Mutator methode definitie in Java
De mutator methode in java, en elke objectgeoriënteerde programmeertaal, is een methode die u in staat stelt om de variabelen binnen de klasse te veranderen. Private is het toegangsniveau voor de variabelen, wat betekent dat de enige manier om de variabelen te veranderen is door gebruik te maken van de mutator methoden. Op deze manier kunnen de mutator methoden de geldigheid en kwaliteit van de gegevens opgeslagen in de klasse te controleren.
bijvoorbeeld, in het vorige codefragment is de setRadius()
methode een mutatiemethode. U kunt deze methode wijzigen om wat gegevensvalidatie toe te voegen. Bijvoorbeeld, een voorbeeld van data validatie zou kunnen controleren of de nieuwe straal is een negatief getal.
Accessor methode definitie in Java
Accessor methoden zijn methoden die het mogelijk maken om de klasse velden te lezen Naar andere methoden of klassen buiten de klasse. Op deze manier kunt u bepalen hoe de client code toegang heeft tot de class velden.
Mutators en Accessors voorbeelden
laten we enkele voorbeelden bekijken om de mutator en accessor methoden te illustreren. Setters en getters is een andere manier om te verwijzen naar accessor en mutator methoden.
Hieronder is een voorbeeld van het toevoegen van getters aan een klasse. De klasse wordt Product
genoemd en heeft twee getters: getPrice()
en getName()
. Met deze methoden kan elke client code toegang krijgen tot de klasse variabele, die price
en name
is.
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; }}
en nu zal ik de mutators toevoegen, zodat ik de klasse variabele kan benaderen en wijzigen.
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; }}
zoals u hierboven kunt zien, omvatten de instelmethoden setPrice()
en setName()
ook validatie, om ervoor te zorgen dat de doorgegeven gegevens voldoen aan enkele criteria. Een van de vereisten is bijvoorbeeld dat een prijs altijd boven nul moet liggen. In het geval dat de parameter niet geldig is, zal de code een uitzondering gooien. Anders zal het de nieuwe waarde toewijzen.
naamgevingsconventies voor Mutators
in java moeten de namen van deze methoden, accessors en mutators specifieke naamgevingsconventies volgen. Deze regels zijn volledig gestabiliseerd, waardoor ze essentieel zijn om te volgen. Het niet volgen van deze conventies kan frustratie en verwarring veroorzaken wanneer andere mensen je code lezen.
laten we beginnen met de naamgevingsconventies voor mutators. De methode moet openbaar worden verklaard en de terugkeer ongeldig worden verklaard. Bovendien moet de methodenaam beginnen met het woord set
in kleine letters. Gevolgd door de naam van de klasse-variabele met een beginhoofdletter. Bijvoorbeeld, als onze klasse een variabele heeft genaamd age
, dan moet de mutator methode er als volgt uitzien:
public void setAge(int age){...}
naamgevingsconventies voor Accessors
samen met mutators hebben we de accessors gezien, die ook een soortgelijke naamgevingsconventie volgen. De regels zijn dat de methode openbaar moet worden verklaard. Daarnaast moet de methodenaam beginnen met get
, gevolgd door de naam van de klasse-variabele met een beginletter. De methode heeft geen parameters en geeft het type instance variabele terug. In navolging van het vorige voorbeeld, laten we een accessor methode maken voor deage
variabele:
public int getAge(){...}
voordelen van Mutators en Accessors
tot nu toe hebben we de accessor en mutator methoden in java gezien met enkele voorbeelden. En vertrouwd te raken met de naamgevingsconventies die je moet volgen bij het verklaren van deze methoden. Echter, hoe zijn deze methoden nuttig? Het belangrijkste voordeel is inkapseling. Dit betekent in principe dat door het creëren van deze methoden, je verbergt de interne details van uw klasse van andere componenten. Andere componenten kunnen alleen via de API communiceren.
bijgevolg worden klassen ontkoppeld; ze zijn niet afhankelijk van elkaar, zodat u zich in afzondering kunt ontwikkelen, wat leidt tot snellere ontwikkelingen omdat teamleden verschillende klassen en componenten parallel kunnen creëren. Naast het verlichten van onderhoud, omdat componenten kunnen worden gewijzigd, met een kleine impact op andere afhankelijke componenten.
conclusie
om samen te vatten, in dit artikel hebben we gezien dat mutator methoden en accessors methoden in java methoden zijn die ons in staat stellen om klassenvariabelen te lezen en te schrijven. Hun primaire doel is ons te helpen om klassen te ontwerpen die goed zijn ingekapseld en van elkaar zijn ontkoppeld.
Ik hoop dat je het artikel nuttig vindt, en dank je wel voor het lezen en ondersteunen van deze blog! Veel succes met programmeren!
Leave a Reply