Olio-ohjelmoinnissa kapselointi on peruskäsite, joka viittaa käytäntöön piilottaa objektin toteutustiedot ja tarjota käyttöliittymä sen ominaisuuksiin ja käyttäytymiseen pääsyä varten. Accessor- ja mutator-menetelmät ovat kaksi tärkeää Javan kapselointiin liittyvää käsitettä.
Lisälaite
Accessor-menetelmät, jotka tunnetaan myös nimellä getter-menetelmät, ovat menetelmiä, joiden avulla voit noutaa objektin yksityisen ilmentymän muuttujien arvon. Nämä menetelmät tarjoavat vain luku -oikeuden objektin tilaan. Accessor-menetelmiä käyttämällä voit varmistaa, että ulkoinen koodi ei muuta objektin tilaa vahingossa tai haitallisesti.
Mutaattori
Mutaattorimenetelmät, joita kutsutaan myös setter-menetelmiksi, ovat menetelmiä, joiden avulla voit muokata objektin yksityisen ilmentymän muuttujien arvoa. Nämä menetelmät tarjoavat vain kirjoitusoikeuden objektin tilaan. Mutaattorimenetelmiä käyttämällä voit varmistaa, että objektin tilaa muutetaan vain ohjatun rajapinnan kautta.
Katsotaanpa esimerkkiä ymmärtääksemme aksessori- ja mutaattorimenetelmien käsitteen Javassa. Oletetaan, että meillä on luokka nimeltä Person, jolla on kolme yksityistä esiintymän muuttujaa: nimi, ikä ja sähköpostiosoite. Haluamme tarjota pääsyn näihin muuttujiin käyttämällä accessor- ja mutator-menetelmiä.
public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
Tässä esimerkissä olemme määrittäneet kolme aksessorimenetelmää: getName(), getAge() ja getEmail() ja kolme mutaattorimenetelmää: setName(), setAge() ja setEmail(). Accessor-menetelmät palauttavat vastaavan ilmentymämuuttujan arvon, kun taas mutaattorimenetelmät asettavat vastaavan ilmentymämuuttujan arvon.
Nimeämissopimus
Aksessori- ja mutaattorimenetelmien nimeämiskäytäntö on tärkeä Javassa. Aksessorimenetelmät tulee nimetä alkaen kirjaimella 'get', jota seuraa muuttujan nimi ja ensimmäinen kirjain isolla. Mutaattorimenetelmien nimet tulee aloittaa kirjaimella 'set', jota seuraa muuttujan nimi ja ensimmäinen kirjain isolla. Tämä nimeämiskäytäntö tekee selväksi, mitä kukin menetelmä tekee, ja tekee koodista luettavamman ja ylläpidettävämmän.
Accessor- ja mutator-menetelmät ovat olennainen osa Java-kapselointia. Niiden avulla voit hallita pääsyä objektin tilaan varmistaen, että sitä käytetään ja sitä muokataan vain ohjatun käyttöliittymän kautta. Noudattamalla accessor- ja mutator-menetelmien nimeämiskäytäntöä voimme tehdä koodistasi luettavamman ja ylläpidettävämmän.
tässä on esimerkkiohjelma, joka esittelee aksessori- ja mutaattorimenetelmien käyttöä Javassa:
Henkilö.java
import java.util.Scanner; public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Person person = new Person(); System.out.print('Enter name: '); String name = scanner.nextLine(); person.setName(name); System.out.print('Enter age: '); int age = scanner.nextInt(); person.setAge(age); scanner.nextLine(); // Consume the newline character left by nextInt() System.out.print('Enter email: '); String email = scanner.nextLine(); person.setEmail(email); System.out.println(' Name: ' + person.getName()); System.out.println('Age: ' + person.getAge()); System.out.println('Email: ' + person.getEmail()); } }
Lähtö:
Name: Manoj Age: 21 Email: [email protected]
Tässä esimerkissä päämenetelmä luo Person-luokan uuden ilmentymän ja käyttää mutaattorimenetelmiä (setName, setAge ja setEmail) objektin yksityisen ilmentymän muuttujien arvojen asettamiseen. Sitten aksessorimenetelmiä (getName, getAge ja getEmail) käytetään ilmentymämuuttujien arvojen hakemiseen ja niiden näyttämiseen konsolissa.
Accessorin ja Mutatorin käytön etu
Accessor- ja mutator-menetelmien käytön etuna on, että niiden avulla voimme lisätä validointi- ja muuta käsittelylogiikkaa objektin tilan hankinta- ja asetusprosessiin. Voit esimerkiksi lisätä vahvistustarkistuksen menetelmään setAge(int age) varmistaaksesi, että ikäarvo on tietyllä alueella, tai lisätä muotoilulogiikan menetelmään getName() kirjoittaaksesi ison kirjaimen henkilön nimi.