CodeGym /Java Blog /Acak /Enkapsulasi di Jawa
John Squirrels
Level 41
San Francisco

Enkapsulasi di Jawa

Dipublikasikan di grup Acak
Hai! Kita akan mengabdikan pelajaran hari ini untuk Enkapsulasi di Jawa dan mulai dengan contoh langsung dari gerbang :) Di sini Anda memiliki mesin pengeluaran soda biasa . Saya punya satu pertanyaan untuk Anda: bagaimana cara kerjanya? Coba berikan jawaban terperinci: Dari mana soda itu berasal? Bagaimana suhu internal dipertahankan? Di mana es disimpan? Bagaimana mesin mengetahui sirup mana yang harus ditambahkan? Anda mungkin tidak memiliki jawaban untuk pertanyaan-pertanyaan ini. Oke, mungkin tidak semua orang menggunakan mesin ini. Mereka tidak begitu populer saat ini. Mari kita coba contoh lain. Sesuatu yang pasti Anda gunakan berkali-kali setiap hari. Aku punya ide! Prinsip enkapsulasi - 2Katakan padaku bagaimana mesin pencari Googlebekerja. Bagaimana tepatnya cara mencari informasi tentang kata yang Anda masukkan? Mengapa hasil ini di atas dan bukan yang lain? Meskipun Anda menggunakan Google setiap hari, Anda mungkin tidak tahu. Tapi itu tidak masalah. Lagi pula, itu bukan sesuatu yang perlu Anda ketahui. Anda dapat menggunakan mesin pencari tanpa memikirkan cara kerjanya. Anda dapat membeli soda dari mesin tanpa mengetahui cara pembuatannya. Anda dapat mengendarai mobil tanpa mempelajari cara kerja mesin pembakaran internal dan bahkan tanpa mengetahui fisika sekolah menengah. Ini semua dimungkinkan berkat salah satu prinsip utama pemrograman berorientasi objek: enkapsulasi. Saat membaca berbagai artikel tentang topik tersebut, Anda pasti menemukan dua konsep pemrograman yang tersebar luas: enkapsulasi dan penyembunyian informasi. Ternyata, orang yang berbeda memahami kata ' enkapsulasi' berarti hal yang berbeda. Kami akan menguraikan kedua istilah tersebut sehingga Anda memiliki pemahaman yang lengkap. Dalam pemrograman, arti asli darienkapsulasi menggabungkan data dan metode untuk bekerja dengan data itu dalam satu paket ("kapsul"). Di Java, paket enkapsulasi adalah class . Kelas berisi data (bidang) dan metode untuk bekerja dengan data tersebut. Prinsip enkapsulasi - 3Ini mungkin tampak jelas bagi Anda, tetapi semuanya diatur secara berbeda dalam paradigma pemrograman lain. Misalnya, dalam pemrograman fungsional, data dipisahkan secara ketat dari operasi data. Dalam pemrograman berorientasi objek (OOP), program terdiri dari kapsul (kelas) yang terdiri dari data dan fungsi untuk bekerja dengan data.

Sekarang mari kita bicara tentang penyembunyian informasi

Bagaimana kita menggunakan semua jenis mekanisme rumit tanpa memahami bagaimana mereka dibangun atau bagaimana cara kerjanya? Sederhana: pembuatnya menyediakan antarmuka yang sederhana dan nyaman. Pada mesin soda, antarmukanya adalah tombol-tombol di panel depan. Satu tombol memungkinkan Anda memilih ukuran cangkir. Anda memilih sirup dengan tombol kedua. Sepertiga bertanggung jawab untuk menambahkan es. Dan hanya itu yang perlu Anda lakukan. Tidak masalah seperti apa mesin itu di dalam. Yang penting itu dirancang agar pengguna mendapatkan soda dengan menekan tiga tombol. Hal yang sama berlaku untuk mobil. Tidak peduli apa yang terjadi di dalam. Yang penting saat Anda menekan pedal kanan mobil bergerak maju, dan saat Anda menekan pedal kiri mobil melambat. Inilah inti dari penyembunyian informasi. Semua program' 'jeroan' disembunyikan dari pengguna. Informasi tersebut berlebihan atau tidak perlu bagi pengguna. Pengguna membutuhkan hasil akhir, bukan proses internal. Sebagai contoh, mari kita lihat diKelas 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();
   }
}
Beginilah implementasinya disembunyikan dalam program Java. Sama seperti dalam kehidupan nyata: pengguna diberikan antarmuka (metode). Dalam sebuah program, jika Anda membutuhkan mobil untuk melakukan suatu tindakan, Anda cukup memanggil metode yang diinginkan. Apa yang terjadi di dalam metode ini berlebihan. Yang penting semuanya berjalan sebagaimana mestinya. Di sini kita telah berbicara tentang penyembunyian implementasi. Java juga memiliki penyembunyian data. Kami menulis tentang itu di pelajaran tentang getter dan setter, tetapi pengingat tidak ada salahnya. Misalnya, kami memiliki 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 pelajaran sebelumnya apa masalahnya dengan kelas ini? Jika tidak, mari kita ingat. Masalahnya adalah datanya (bidang) terbuka untuk semua orang. Pemrogram lain dapat dengan mudah membuat kucing tanpa nama dengan berat 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 ini, Anda dapat dengan hati-hati melacak apakah salah satu kolega Anda membuat objek dengan status tidak valid, tetapi akan jauh lebih baik untuk menghilangkan bahkan kemungkinan membuat objek tidak valid ini. Prinsip enkapsulasi - 4Kami mencapai penyembunyian data dengan bantuan:
  1. pengubah akses ( privat, dilindungi, default paket );
  2. getter dan setter.
Kami menggunakannya untuk memeriksa apakah seseorang mencoba memberi kucing itu usia negatif. Seperti yang kami katakan sebelumnya, penulis berbagai artikel tentang enkapsulasi sebenarnya mengacu pada enkapsulasi (menggabungkan data dan metode) atau penyembunyian informasi, atau keduanya. Java memiliki kedua mekanisme tersebut (belum tentu demikian dalam bahasa OOP lainnya), jadi opsi terakhir adalah yang paling tepat.

Enkapsulasi memberi kita beberapa keuntungan penting:

  1. Memantau status objek yang benar. Kami memberikan contoh di atas: berkat penyetel dan pengubah pribadi , kami telah mengamankan program kami melawan kucing dengan bobot 0.

  2. Antarmuka yang ramah pengguna. Kami hanya meninggalkan metode yang diekspos ke pengguna. Pengguna hanya perlu memanggil mereka untuk mendapatkan hasil. Dan tidak perlu mempelajari detail cara kerjanya.

  3. Perubahan kode tidak memengaruhi pengguna. Kami membuat semua perubahan di dalam metode. Ini tidak memengaruhi pengguna: mereka menulis vehicle.gas() untuk menerapkan gas, dan itulah yang akan terus mereka lakukan. Fakta bahwa kita mengubah sesuatu di dalam metode gas() tetap tidak terlihat: seperti sebelumnya, mereka hanya mendapatkan hasil yang diinginkan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION