Kapselointi Java: ssa - Kuinka hallita OOP: ita kapseloinnilla?



Tämä Java-kapselointia koskeva artikkeli auttaa sinua ymmärtämään toteutuksen yksityiskohtien piilottamisen peruskäsitteet sekä useita yksinkertaisia ​​esimerkkejä.

Kohdekeskeinen ohjelmointi tai tunnetaan paremmin nimellä OOPs on yksi Java-pääpilareista, joka on hyödyntänyt sen voimaa ja helppokäyttöisyyttä. Jos haluat tulla ammattimaiseksi Java-kehittäjäksi, sinun on hankittava virheetön hallinta eri laitteista Kuten , Abstraktio , Kapselointi ja polymorfismi. Tämän artikkelin välityksellä annan sinulle täydellisen kuvan yhdestä OOP: n tärkeimmistä käsitteistä, ts. Java-kapselointi ja miten se saavutetaan.

Alla on aiheita, joista keskustelen tässä artikkelissa:





Voit myös käydä läpi tämän äänityksen jossa voit ymmärtää aiheita yksityiskohtaisesti esimerkkien avulla.



Johdanto kapselointiin

Kapselointi tarkoittaa tietojen käärimistä yhden yksikön alle. Se on mekanismi, joka sitoo koodin ja sen käsittelemät tiedot. Toinen tapa ajatella kapselointia on, että se on suojakilpi, joka estää tietoja pääsemästä koodiin tämän kilven ulkopuolella. Tässä muuttujat tai tiedot a on piilotettu muilta luokilta ja siihen pääsee vain minkä tahansa oman luokan jäsenfunktion kautta, johon heidät on ilmoitettu.

Otetaan nyt esimerkki lääketieteellisestä kapselista, jossa lääke on aina turvallista kapselin sisällä. Samoin kapseloinnin avulla luokan menetelmät ja muuttujat ovat hyvin piilossa ja turvallisia.



Kapselointi - Kapselointi Java-EdurekassaKapselointi Java voidaan saavuttaa:

  • Luokan muuttujien julistaminen yksityisiksi.
  • Tarjoamalla julkisia setteri- ja getter-menetelmiä muuttujien arvojen muokkaamiseksi ja tarkastelemiseksi.

Katsotaan nyt koodia saadaksemme paremman käsityksen kapseloinnista:

public class Opiskelija {private String nimi public String getName () {return name} public void setName (String name) {this.name = name}} luokan testi {public static void main (String [] argumentit) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Kuten yllä olevasta koodista näet, olen luonut luokan Opiskelijan, jolla on yksityinen nimi . Seuraavaksi olen luonut getterin ja setterin saadaksesi ja asettamalla opiskelijan nimen. Näiden menetelmien avulla jokaisen luokan, joka haluaa käyttää nimimuuttujaa, on tehtävä se näillä getter- ja setter-menetelmillä.

Katsotaan nyt vielä yksi esimerkki ja ymmärretään kapselointi perusteellisesti. Tässä esimerkissä autoluokassa on kaksi kenttää –nimi ja huippunopeus. Täällä molemmat julistetaan yksityisiksi, mikä tarkoittaa, että niitä ei voida käyttää suoraan luokan ulkopuolella. Meillä on joitain getter- ja setter-menetelmiä, kuten getName, setName, setTopSpeed ​​jne., Ja ne julistetaan julkisiksi. Nämä menetelmät altistuvat ulkopuolisille, ja niitä voidaan käyttää tietojen muuttamiseen ja noutamiseen Auto-objektista. Meillä on yksi menetelmä ajoneuvon huippunopeuden asettamiseksi ja kaksi parempaa menetelmää maksiminopeusarvon hakemiseksi joko MPH: na tai KMHt: na. Joten kapselointi tekee näin - se piilottaa toteutuksen ja antaa meille haluamamme arvot. Katsotaan nyt alla olevaa koodia.

paketti Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Tässä pääohjelma luo autonobjektin tietyllä nimellä ja tallentaa setterimenetelmällä huippunopeuden tälle esiintymälle. Tällöin voimme helposti saada nopeuden MPH: ssa tai KMH: ssa huolimatta siitä, kuinka nopeus muunnetaan autoluokassa.

paketti Edureka public class Esimerkki {public static void main (String args []) Auto auto = new Car () car.setName ('Mustang GT 4.8-litran V8') car.setTopSpeed ​​(201) System.out.println (auto. getName () + 'MPH: n huippunopeus on' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'KMH: n huippunopeus on' + car.getTopSpeedKMH ())

So, näin kapselointi voidaan saavuttaa Java-muodossa. Siirrytään nyt eteenpäin ja katsotaan miksi tarvitsemme kapselointia.

Miksi tarvitsemme kapselointia Java-järjestelmään?

Kapselointi on välttämätöntä Java-sovelluksessa, koska:

  • Se ohjaa tietojen saatavuutta
  • Muokkaa koodia vaatimusten perusteella
  • Auttaa meitä saavuttamaan löysä pariskunta
  • Saavuttaa sovelluksemme yksinkertaisuuden
  • Sen avulla voit myös muuttaa koodin osaa häiritsemättä muita ohjelmassa olevia toimintoja tai koodia

Tarkastellaan nyt pientä esimerkkiä, joka kuvaa kapseloinnin tarvetta.

luokka Opiskelija {int id Merkkijono nimi} julkinen luokka Demo {julkinen staattinen void main (Merkkijono [] argumentit) {Opiskelija s = uusi Opiskelija () s.id = 0 s.nimi = 's' nimi = null}}

Yllä olevassa esimerkissä se sisältää kaksi esiintymämuuttujaa pääsyn modifioijana. Joten mikä tahansa saman paketin luokka voi määrittää ja muuttaa näiden muuttujien arvoja luomalla kyseisen luokan objektin. Siksi meillä ei ole hallintaa Student-luokkaan muuttujina tallennettujen arvojen suhteen. Tämän ongelman ratkaisemiseksi kapseloimme opiskelijaluokan.

php print_r merkkijonoon

Joten nämä olivat muutamia viitteitä, jotka kuvaavat kapseloinnin tarvetta. Katsotaan nyt kapseloinnin joitain etuja.

Kapseloinnin edut

    • Tietojen piilottaminen: Täällä käyttäjällä ei ole aavistustakaan luokan sisäisestä toteutuksesta. Jopa käyttäjä ei tiedä kuinka luokka tallentaa arvot muuttujiin. Hän tietää vain, että välitämme arvot setterimenetelmälle ja muuttujat alustetaan tällä arvolla.
    • Lisääntynyt joustavuus: Tässä voimme tehdä luokan muuttujista vain luku- tai kirjoitusvaatimukset vaatimuksestamme riippuen. Jos haluat tehdä muuttujista vain luku -olosuhteet, meidän on jätettävä pois setterimenetelmät, kuten setName (),setAge() jne. tai jos haluamme tehdä muuttujista vain kirjoitettavia, meidän on jätettävä get-menetelmät, kuten getName (), getAge () jne., yllä olevasta ohjelmasta.
    • Uudelleenkäytettävyys: Se parantaa myös uudelleenkäytettävyyttä ja on helppo muuttaa uusilla vaatimuksilla.

Nyt kun olemme ymmärtäneet kapseloinnin perusteet, sukelkaamme artikkelin viimeiseen aiheeseen ja ymmärrämme kapselointia yksityiskohtaisesti reaaliaikaisen esimerkin avulla.

Reaaliaikainen esimerkki kapseloinnista

Tarkastellaan televisioesimerkkiä ja ymmärretään, kuinka sisäiset toteutustiedot piilotetaan ulkopuoliselta luokalta.Pohjimmiltaan tässä esimerkissä piilotamme sisäisen koodidatan eli piirejä ulkomaailmasta kannen takana. Nyt sisällä , tämä voidaan saavuttaa pääsynmuokkaajien avulla. Pääsyn muokkaajat asettavat luokan pääsyn tai tason, konstruktorimuuttujat jne. Kuten alla olevasta koodista näet, olen käyttänyt yksityistä pääsyn muokkaajaa rajoittamaan luokan käyttöoikeustasoa. Yksityisiksi ilmoitettuihin muuttujiin pääsee vain Televisio-luokassa.

julkisen luokan televisio {yksityinen kaksinkertainen leveys yksityinen kaksinkertainen korkeus yksityinen kaksinkertainen näyttökoko yksityinen int maxVolume print int-tilavuus yksityinen looginen teho julkinen televisio (kaksinkertainen leveys, kaksinkertainen korkeus, kaksinkertainen näytön koko) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int reductionVolume () {if (0volume) volume ++ return volume}} luokan testi {public static void main (String args []) {Televisio t = uusi televisio (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () televisio. // Heittää virheen, koska muuttuja on yksityinen eikä sitä voi käyttää luokan ulkopuolella}}

Yllä olevassa esimerkissä olen ilmoittanut kaikki muuttujat yksityisiksi ja menetelmät, rakentajat ja luokka julkisiksi. Täällä rakentajia, menetelmiä voidaan käyttää luokan ulkopuolella. Kun luonesineTelevisio-luokassa, se voi käyttää luokassa olevia menetelmiä ja konstruktoreita, kun taas yksityisen pääsyn muokkaimella ilmoitetut muuttujat ovat piilossa. Siksi, kun yrität käyttää leveyden muuttuja yllä olevassa esimerkissä se heittäävirhe. Näin sisäiset toteutustiedot piilotetaan muilta luokilta. Näin kapselointi saavutetaan Javassa.

Tämä tuo meidät tämän artikkelin loppuun, joka koskee ”Java-kapselointia”. Toivottavasti pidit siitä informatiivisena ja auttoi lisäämään tietosi arvoa. Jos haluat oppia lisää Java: sta, voit viitata

Nyt kun olet ymmärtänyt 'mikä on Java-kapselointi', tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssi on suunniteltu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä. Kurssi on suunniteltu antamaan sinulle etumatka Java-ohjelmointiin ja kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän 'Encapsulation in Java' -blogin kommenttiosassa, niin otamme sinuun yhteyttä mahdollisimman pian.