CodeGym /Blog Jawa /Acak /Enkapsulasi ing Jawa
John Squirrels
tingkat
San Francisco

Enkapsulasi ing Jawa

Diterbitake ing grup
Hi! Kita bakal nyawisake pelajaran dina iki kanggo Enkapsulasi ing Jawa lan diwiwiti kanthi conto langsung saka gapura:) Kene sampeyan duwe mesin dispensing soda biasa . Aku duwe pitakonan kanggo sampeyan: kepiye cara kerjane? Coba wenehi jawaban sing rinci: Saka ngendi asale soda? Kepiye cara njaga suhu internal? Ing ngendi es disimpen? Kepiye mesin ngerti sirup sing bakal ditambahake? Sampeyan mbokmenawa ora duwe jawaban kanggo pitakonan iki. Oke, bisa uga ora kabeh wong nggunakake mesin kasebut. Dheweke ora populer saiki. Coba conto liyane. Soko sing mesthi sampeyan gunakake kaping pirang-pirang saben dina. Oh, aku duwe ide! Prinsip enkapsulasi - 2Marang kula carane mesin telusur Googlenyambut gawe. Kepiye carane nggoleki informasi babagan tembung sing sampeyan lebokake? Apa asil kasebut ing ndhuwur lan ora liyane? Sanajan sampeyan nggunakake Google saben dina, sampeyan mbokmenawa ora ngerti. Nanging ora masalah. Sawise kabeh, iku ora soko sampeyan kudu ngerti. Sampeyan bisa nggunakake mesin telusur tanpa mikir babagan cara kerjane. Sampeyan bisa tuku soda saka mesin tanpa ngerti carane iku dibangun. Sampeyan bisa nyopir mobil tanpa mikir babagan cara kerja mesin pembakaran internal lan tanpa ngerti fisika sekolah menengah. Iki kabeh bisa amarga salah sawijining prinsip utama pemrograman berorientasi obyek: enkapsulasi. Nalika maca macem-macem artikel babagan topik kasebut, sampeyan kudu nemoni rong konsep pemrograman sing nyebar: enkapsulasi lan ndhelikake informasi. Nalika kedadeyan kasebut, wong liya ngerti tembung ' enkapsulasi' tegese beda. Kita bakal decipher istilah loro supaya sampeyan duwe pangerten lengkap. Ing pemrograman, makna asli sakaenkapsulasi yaiku nggabungake data lan cara kanggo nggarap data kasebut ing siji paket ("kapsul"). Ing Jawa, paket enkapsulasi yaiku kelas . Kelas kasebut ngemot data (bidang) lan metode kanggo nggarap data kasebut. Prinsip enkapsulasi - 3Iki bisa uga katon jelas kanggo sampeyan, nanging kabeh diatur kanthi beda ing paradigma pemrograman liyane. Contone, ing pemrograman fungsional, data dipisahake saka operasi data. Ing pemrograman berorientasi obyek (OOP), program kalebu kapsul (kelas) sing dumadi saka data lan fungsi kanggo nggarap data.

Saiki ayo ngomong babagan ndhelikake informasi

Kepiye cara nggunakake macem-macem mekanisme rumit tanpa ngerti kepiye cara dibangun utawa cara kerjane? Iku prasaja: pangripta nyedhiyakake antarmuka sing prasaja lan trep. Ing mesin soda, antarmuka minangka tombol ing panel ngarep. Siji tombol ngidini sampeyan milih ukuran cangkir. Sampeyan milih sirup kanthi tombol kapindho. Katelu tanggung jawab kanggo nambah es. Lan iku kabeh sing perlu kanggo nindakake. Ora Matter apa mesin katon ing njero. Sing penting yaiku dirancang supaya pangguna entuk soda kanthi mencet telung tombol. Bab sing padha ditrapake kanggo mobil. Ora ketompo apa sing ana ing njero. Sing penting nalika sampeyan menet pedal tengen mobil maju, lan nalika sampeyan menet pedal kiwa mobil slows mudhun. Iki minangka inti saka ndhelikake informasi. Kabeh program' s 'innards' didhelikake saka pangguna. Informasi kasebut ora perlu utawa ora perlu kanggo pangguna. Pangguna mbutuhake asil pungkasan, dudu proses internal. Kanggo conto, ayo goleki ingKelas Kendaraan :

public class Vehicle {

   public void gas() {

       /* Some complicated things happen inside a car.
       As a result, it moves forward */
   }

   public void brake() {

       /* Some complicated things happen inside a car.
       As a result, it slows down */
   }

   public static void main(String[] args) {

       Vehicle vehicle = new Vehicle();

       // How everything looks to the user

       // Press one pedal, the car moves
       vehicle.gas();

       // Press the other pedal, the car brakes
       vehicle.brake();
   }
}
Iki carane implementasine didhelikake ing program Jawa. Kaya ing urip nyata: pangguna diwenehake karo antarmuka (metode). Ing program, yen sampeyan butuh mobil kanggo nindakake tumindak, sampeyan mung nelpon cara sing dikarepake. Apa sing kedadeyan ing metode kasebut ora perlu. Sing penting kabeh bisa mlaku kaya sing dikarepake. Ing kene kita wis ngomong babagan ndhelikake implementasine. Jawa uga nduweni ndhelikake data. Kita nulis babagan iki ing pawulangan babagan getter lan setter, nanging pangeling ora bakal lara. Contone, kita duwe kelas 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!");
   }


}
Mungkin sampeyan kelingan saka pelajaran kepungkur apa masalah karo kelas iki? Yen ora, ayo kelingan. Masalahe yaiku data (kolom) mbukak kanggo kabeh wong. Programmer liyane bisa kanthi gampang nggawe kucing tanpa jeneng kanthi bobot 0 lan umur -1000 taun:

public static void main(String[] args) {

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

}
Ing kahanan iki, sampeyan bisa kanthi ati-ati nglacak apa salah siji saka kolega nggawe obyek karo negara ora bener, nanging iku bakal luwih apik kanggo ngilangi malah kamungkinan kanggo nggawe obyek ora bener. Prinsip enkapsulasi - 4Kita entuk ndhelikake data kanthi bantuan:
  1. akses modifiers ( pribadi, dilindhungi, paket standar );
  2. getters lan setter.
Kita digunakake kanggo mriksa yen ana wong sing nyoba menehi kucing umur negatif. Kaya sing wis dingerteni sadurunge, panulis macem-macem artikel babagan enkapsulasi sejatine nuduhake enkapsulasi (nggabungake data lan metode) utawa ndhelikake informasi, utawa loro-lorone. Jawa duwe loro mekanisme (iki ora kudu kasus ing basa OOP liyane), supaya pilihan pungkasan paling bener.

Encapsulation menehi sawetara kaluwihan penting:

  1. Ngawasi status obyek sing bener. Kita menehi conto ing ndhuwur: thanks kanggo setter lan modifier pribadi , kita wis ngamanake program kita marang kucing kanthi bobot 0.

  2. antarmuka pangguna-loropaken. Kita ninggalake mung cara kapapar pangguna. Pangguna mung kudu nelpon kanggo entuk asil. Lan ora perlu kanggo nliti rincian babagan cara kerjane.

  3. Owah-owahan kode ora mengaruhi pangguna. Kita nggawe kabeh owah-owahan ing cara. Iki ora mengaruhi kedhaftar: padha wrote vehicle.gas () kanggo aplikasi gas, lan apa padha bakal terus apa. Kasunyatan bilih kita ngganti soko nang gas () cara tetep siro: kaya sadurunge, padha mung njaluk asil sing dibutuhake.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION