JavaRush /Java Blog /Random-ID /Prinsip Enkapsulasi di Java

Prinsip Enkapsulasi di Java

Dipublikasikan di grup Random-ID
Halo! Kuliah hari ini akan dikhususkan untuk enkapsulasi dan kami akan segera memulainya dengan contoh :) Di depan Anda adalah mesin soda yang sudah tidak asing lagi. Saya punya satu pertanyaan untuk Anda: bagaimana cara kerjanya? Coba jawab secara detail: dari mana gelas itu berasal, bagaimana suhu di dalamnya dijaga, di mana es disimpan, bagaimana mesin memahami sirup apa yang harus ditambahkan, dll. Kemungkinan besar Anda tidak memiliki jawaban atas pertanyaan-pertanyaan ini. Yah, mungkin tidak semua orang menggunakan mesin seperti itu; mesin tersebut tidak begitu populer saat ini. Mari kita coba memberikan contoh lain. Sesuatu yang Anda tahu Anda gunakan berkali-kali setiap hari. Oh, aku punya ide! Prinsip Enkapsulasi - 2 Beri tahu kami cara kerja mesin pencari Google . Bagaimana sebenarnya cara mencari informasi berdasarkan kata yang Anda masukkan? Mengapa hasil ini berada di urutan teratas dan bukan hasil lainnya? Meskipun Anda menggunakan Google setiap hari, Anda mungkin tidak mengetahuinya. Tapi itu tidak penting. Lagi pula, Anda tidak perlu mengetahui hal ini. Anda dapat memasukkan kueri ke dalam mesin pencari tanpa memikirkan cara kerjanya. Anda dapat membeli soda dari mesin penjual otomatis tanpa mengetahui cara kerjanya. Anda dapat mengendarai mobil tanpa mempelajari cara kerja mesin pembakaran internal, dan tanpa mengetahui fisika sama sekali, bahkan di tingkat sekolah. Semua ini dimungkinkan berkat salah satu prinsip utama pemrograman berorientasi objek - enkapsulasi . Saat membaca berbagai artikel tentang topik ini, Anda mungkin menemukan fakta bahwa ada dua konsep umum dalam pemrograman - enkapsulasi dan penyembunyian . Dan dengan kata "enkapsulasi" yang penulis maksudkan adalah satu atau lain hal (seperti yang terjadi). Kami akan menguraikan kedua istilah tersebut sehingga Anda memiliki pemahaman yang lengkap. Arti asli dari kata “ enkapsulasi ” dalam pemrograman adalah kombinasi data dan metode kerja dengan data tersebut dalam satu paket (“kapsul”). Di Jawa, kelas bertindak sebagai paket kapsul . Kelas berisi data (bidang kelas) dan metode untuk bekerja dengan data ini. Prinsip Enkapsulasi - 3 Ini tampak jelas bagi Anda, tetapi dalam konsep pemrograman lain, semuanya bekerja secara berbeda. Misalnya, dalam pemrograman fungsional, data dipisahkan secara ketat dari operasi di dalamnya. Dalam OOP (pemrograman berorientasi objek), program terdiri dari kelas kapsul, yang merupakan data dan fungsi untuk bekerja dengannya. Sekarang mari kita bicara tentang bersembunyi . Bagaimana kita bisa menggunakan segala macam mekanisme yang rumit tanpa memahami cara kerjanya dan apa dasar kerjanya? Sederhana saja: pembuatnya telah menyediakan antarmuka yang sederhana dan ramah pengguna. Pada mesin soda, antarmukanya berupa tombol-tombol pada panel. Dengan menekan satu tombol, Anda memilih volume kaca. Dengan menekan yang kedua, Anda memilih sirup. Yang ketiga bertanggung jawab untuk menambahkan es. Dan hanya itu yang harus Anda lakukan. Tidak masalah bagaimana tepatnya mesin itu dirancang di dalamnya. Yang penting didesain sedemikian rupa sehingga untuk mendapatkan soda, pengguna perlu menekan tiga tombol . Sama halnya dengan mobil. Tidak peduli apa yang terjadi di dalam dirinya. Yang penting ketika Anda menekan pedal kanan, mobil akan maju, dan ketika Anda menekan pedal kiri, mobil melambat . Inilah inti dari penyembunyian. Semua “bagian dalam” program disembunyikan dari pengguna. Baginya, informasi ini tidak berguna dan tidak perlu. Pengguna membutuhkan hasil akhir, bukan proses internal. Mari kita lihat kelasnya sebagai contoh 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();
   }
}
Seperti inilah implementasi penyembunyian dalam program Java. Semuanya seperti dalam kehidupan nyata: pengguna diberikan antarmuka (metode). Jika dia membutuhkan mobil dalam program untuk melakukan suatu tindakan, dia hanya perlu memanggil metode yang diinginkan. Dan apa yang terjadi di dalam metode ini adalah informasi yang tidak perlu, yang utama adalah semuanya berjalan sebagaimana mestinya. Di sini kita berbicara tentang menyembunyikan implementasinya . Selain itu, Java juga memiliki penyembunyian data . Kami menulis tentang hal ini dalam kuliah tentang getter dan setter , tetapi tidak ada salahnya untuk mengingatkan Anda. Misalnya, kita mempunyai 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 Anda ingat dari kuliah terakhir apa permasalahan kelas ini? Jika belum, mari kita ingat. Masalahnya adalah data (bidang) miliknya terbuka untuk semua orang, dan programmer lain dapat dengan mudah membuat kucing tanpa nama dalam program dengan bobot 0 dan usia -1000 tahun:
public static void main(String[] args) {

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

}
Dalam situasi seperti ini, Anda dapat memonitor dengan cermat apakah salah satu kolega Anda membuat objek dengan keadaan yang salah, namun akan lebih baik untuk mengecualikan kemungkinan membuat “objek yang salah” tersebut. Prinsip Enkapsulasi - 4 Mereka membantu kami menyembunyikan data:
  1. pengubah akses ( private , protected , package default );
  2. getter dan setter.
Di sana kita dapat, misalnya, memeriksa apakah seseorang mencoba memberikan angka negatif pada kucing sesuai umurnya. Seperti yang kami katakan sebelumnya, penulis berbagai artikel tentang enkapsulasi berarti enkapsulasi (menggabungkan data dan metode), atau menyembunyikan, atau keduanya. Java memiliki kedua mekanisme tersebut (hal ini belum tentu terjadi pada bahasa OOP lainnya), jadi opsi terakhir adalah yang paling tepat. Menggunakan enkapsulasi memberi kita beberapa keuntungan penting:
  1. Memantau keadaan objek yang benar. Ada contohnya di atas: berkat penyetel dan pengubah pribadi, kami melindungi program kami dari kucing dengan bobot 0.

  2. Keramahan pengguna karena antarmuka. Kami hanya menyisakan metode “luar” untuk akses pengguna. Yang perlu dia lakukan hanyalah menelepon mereka untuk mendapatkan hasilnya, dan dia tidak perlu mempelajari detail pekerjaan mereka sama sekali.

  3. Perubahan kode tidak mempengaruhi pengguna. Kami membuat semua perubahan di dalam metode. Ini tidak akan mempengaruhi pengguna: dia menulis auto.gas() untuk bahan bakar mobil, jadi dia akan menulisnya. Dan fakta bahwa kita mengubah sesuatu dalam pengoperasian metode gas() akan tetap tidak terlihat olehnya: dia, seperti sebelumnya, hanya akan menerima hasil yang diinginkan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION