JavaRush /Java Blog /Random-TK /Java-da enccapsulation prinsipleri

Java-da enccapsulation prinsipleri

Toparda çap edildi
Salam! Şu günki leksiýa encapsulýasiýa bagyşlanar we derrew mysallar bilen başlarys :) Öňüňizde tanyş gazlandyrylan maşyn. Size bir soragym bar: bu nähili işleýär? Jikme-jik jogap bermäge synanyşyň: aýna nireden gelýär, içindäki temperatura nädip saklanýar, buz nirede saklanýar, maşyn haýsy sirop goşmalydygyna düşünýär we ş.m. Bu soraglara jogap ýok bolsa gerek. Dogrusy, belki hemmeler beýle maşynlary ulanan däldirler, häzirki döwürde beýle meşhur däl. Başga bir mysal bermäge synanyşalyň. Her gün köp gezek ulanýandygyňyzy bilýän bir zat. Aý, meniň pikirim bar! Google gözleg motorynyňEnkapsulýasiýa ýörelgeleri - 2 nähili işleýändigini aýdyň . Girizen sözleriňize esaslanyp maglumat nädip gözleýär? Näme üçin bu netijeler beýlekiler däl-de, ýokarda? Google-dan her gün ulanýan bolsaňyzam, belki bilmersiňiz. Emma bu möhüm däl. Galyberse-de, muny bilmek hökman däl. Gözleg motoryna nädip işleýändigi barada pikir etmän soraglary girizip bilersiňiz. Soda satyş enjamyndan nähili işleýändigini bilmän satyn alyp bilersiňiz. Içki ýanýan hereketlendirijiniň işine göz aýlamazdan we fizikany düýbünden bilmän, hatda mekdep derejesinde hem sürüp bilersiňiz. Bularyň hemmesi obýekte gönükdirilen programmirlemegiň esasy ýörelgeleriniň biri - encapsulýasiýa sebäpli mümkindir . Bu mowzukda dürli makalalary okaýarkaňyz, programmirlemekde iki umumy düşünjäniň - encapsulýasiýa we gizlenmäniň bardygyna göz ýetiren bolsaňyz gerek . “Enkapsulýasiýa” sözi bilen awtorlar bir zady ýa-da başga bir zady aňladýar (bolşy ýaly). Siziň doly düşünmegiňiz üçin iki termini hem bozarys. Programmirlemekde “ encapsulation ” sözüniň asyl manysy, maglumatlaryň we bu maglumatlar bilen bir paketde işlemegiň usullarynyň utgaşmasydyr (“kapsula”). Java-da synp kapsulalar bukjasy hökmünde çykyş edýär . Bir synpda maglumatlar (synp meýdanlary) we bu maglumatlar bilen işlemek usullary bar. Bu size düşnükli ýaly görünýär, ýöne beýleki programmirleme düşünjelerinde hemme zat başgaça işleýär. Mysal üçin, funksional programmirlemekde maglumatlar ondaky amallardan düýpgöter bölünýär. OOP-da (obýekte gönükdirilen programmirleme) programmalar kapsula synplaryndan durýar, olar hem onuň bilen işlemek üçin maglumatlar we funksiýalar. Indi gizlenmek hakda gürleşeliň . Nädip işleýändigine we işleriniň nämä esaslanýandygyna düşünmän her dürli çylşyrymly mehanizmleri ulanýarys? Bu ýönekeý: döredijiler ýönekeý we ulanyjy üçin amatly interfeýs hödürledilerEnkapsulýasiýa ýörelgeleri - 3. Gazlandyrylan maşynda interfeýs paneldäki düwmelerdir. Bir düwmä basyp, aýnanyň sesini saýlaýarsyňyz. Ikinjisini basyp, siropy saýlaýarsyňyz. Üçünjisi buz goşmak üçin jogapkärdir. Bu siziň etmeli zadyňyz. Maşynyň içerde näderejede dizaýn edilendigi möhüm däl. Esasy zat, soda almak üçin ulanyjynyň üç düwmä basmagy üçin döredilen . Maşyn bilenem edil şonuň ýaly. Içinde näme bolup geçýändigi möhüm däl. Esasy zat, sag pedaly basanyňyzda awtoulag öňe gidýär we çep pedaly basanyňyzda haýallaýar . Gizlenmegiň düýp manysy şu. Programmanyň ähli “içerki taraplary” ulanyjydan gizlenendir. Onuň üçin bu maglumatlar artykmaç we zerur däl. Ulanyja içerki proses däl-de, ahyrky netijä mätäç. Mysal hökmünde synpa seredeliň Auto:
public class Auto {

   public void gas() {

       /*some complicated things are happening inside the car
       as a result of which it goes forward*/
   }

   public void brake() {

       /*some complicated things are happening inside the car
       as a result of which it slows down*/
   }

   public static void main(String[] args) {

       Auto auto = new Auto();

       // How everything looks to the user

       //pressed one pedal - went
       auto.gas();

       //pressed another pedal - braked
       auto.brake();
   }
}
Java programmasynda gizlenişiň görnüşi şu. Hemme zat hakyky durmuşdaky ýaly: ulanyja interfeýs (usullar) berilýär. Hereket etmek üçin programmada awtoulag gerek bolsa, diňe islenýän usula jaň etmeli. Bu usullaryň içinde bolup geçýän zatlar, gereksiz maglumatlar, esasy zat hemme zadyň bolmalysy ýaly işlemegi. Bu ýerde durmuşa geçirmegi gizlemek hakda gürleşdik . Mundan başga-da, Java-da maglumatlary gizlemek bar . Bu hakda alyjylar we sazlaýjylar hakda leksiýada ýazdyk , ýöne size ýatlatmak zyýany bolmaz. Mysal üçin, biziň synpymyz bar Cat:
public class Cat {

   public String name;
   public int age;
   public int weight;

   public Cat(String name, int age, int weight) {
       this.name = name;
       this.age = age;
       this.weight = weight;
   }

   public Cat() {
   }

   public void sayMeow() {
       System.out.println("Meow!");
   }


}
Belki, soňky leksiýadan bu synpyň meselesi näme? Notok bolsa, ýatda saklalyň. Mesele, maglumatlarynyň (meýdanlarynyň) hemmeler üçin açyk bolmagydyr we başga bir programmist 0 agramy we -1000 ýaş aralygyndaky programmada atsyz pişigi aňsatlyk bilen döredip biler:
public static void main(String[] args) {

   Cat cat = new Cat();
   cat.name = "";
   cat.age = -1000;
   cat.weight = 0;

}
Şeýle ýagdaýda kärdeşleriňiziň biriniň nädogry ýagdaýdaky obýektleri döredýändigine ýa-da ýokdugyna ýakyndan gözegçilik edip bilersiňiz, ýöne şeýle "nädogry zatlary" döretmek mümkinçiligini aradan aýyrmak has gowy bolardy. Enkapsulýasiýa ýörelgeleri - 4 Maglumatlary gizlemekde bize kömek edýärler:
  1. üýtgedijilere girmek ( şahsy , goralýan , paket deslapky );
  2. alyjylar we sazlaýjylar.
Mysal üçin, kimdir biriniň pişige ýaşy hökmünde negatiw san bellemäge synanyşýandygyny ýa-da ýokdugyny barlap bileris. Öň hem aýdyşymyz ýaly, encapsulation baradaky dürli makalalaryň awtorlary encapsulýasiýa (maglumatlary we usullary birleşdirmek) ýa-da gizlemek ýa-da ikisini hem aňladýar. Java-da iki mehanizm bar (beýleki OOP dillerinde beýle bolmaly däl), şonuň üçin iň soňky wariant iň dogry. Enkapsulýasiýa ulanmak bize birnäçe möhüm artykmaçlygy berýär:
  1. Obýektiň dogry ýagdaýyna gözegçilik etmek. Aboveokarda munuň mysallary bardy: sazlaýjynyň we şahsy üýtgedijiniň kömegi bilen programmamyzy 0 agramly pişiklerden goradyk.

  2. Interfeýs sebäpli ulanyjy-dostluk. Ulanyjylara girmek üçin diňe “daşarda” usullary goýýarys. Etmeli zady, netijäni almak üçin olary çagyrmak, işleriniň jikme-jikliklerine asla göz aýlamak zerurlygy ýok.

  3. Koduň üýtgemegi ulanyjylara täsir etmeýär. Usullaryň içindäki ähli üýtgeşmeleri edýäris. Bu ulanyja täsir etmez: awtoulagyň gazy üçin auto.gas () ýazdy, şonuň üçinem ýazar. Gaz () usulynyň ulanylyşynda bir zady üýtgedendigimiz, oňa görünmez: öňküsi ýaly islenýän netijäni alar.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION