Lompat ke konten Lompat ke sidebar Lompat ke footer

Enkapsulasi Java dan Fungsinya

Enkapsulasi didefinisikan sebagai pembungkusan data dalam satu buah unit. Enkapsulasi adalah mekanisme yang mengikat code program dan data yang dimanipulasi secara bersamaan pada bahasa pemrograman Java. 


Sebelum mempelajari materi tentang Enkapsulasi Java dan Fungsinya, terlebih dahulu pelajari materi tentang: Cara Menciptakan Objek Java dan Fungsinya, Cara Bertukar Objek Java dan Fungsinya, dan Menerima Turunan Program Java Menggunakan Inheritance.

Enkapsulasi adalah salah satu konsep utama dalam paradigma pemrograman berorientasi objek (OOP) yang memungkinkan penggabungan data dan metode yang beroperasi pada data ke dalam sebuah unit tunggal yang disebut objek. Dalam konteks bahasa pemrograman Java, enkapsulasi membantu dalam membentuk struktur yang lebih terorganisir, aman, dan mudah dimengerti. Artikel ini akan membahas konsep enkapsulasi dalam Java dan fungsinya.

Pengertian Enkapsulasi Java

Enkapsulasi adalah suatu mekanisme di mana atribut (data) dan metode (fungsi) yang bekerja pada data dikemas bersama dalam suatu unit yang disebut objek. Dengan menggunakan enkapsulasi, objek dapat menyembunyikan detail implementasinya dan hanya mengekspos fungsionalitas yang dibutuhkan oleh dunia luar.

Dalam Java, enkapsulasi diimplementasikan menggunakan modifier akses (public, private, protected) dan penyediaan metode akses (getter dan setter) untuk mengendalikan akses ke atribut objek.

Cara lain untuk berpikir mengenai enkapsulasi adalah upaya untuk melindungi atau sebagai perisai proteksi yang mencegah data untuk diakses oleh pihak luar.
  • Secara teknis enkapsulasi menyembunyikan data atau variabel dari class lain dan hanya dapat diakses oleh anggota fungsi dari class itu sendiri yang telah dideklarasikan.
  • Pada enkapsulasi, data dalam class tersembunyi dari class lainnya, yang juga dikenal dengan istilah data-hiding.
  • Enkapsulasi dapat dilakukan dengan cara pendeklarasian semua variabel dalam class sebagai private dan menuliskan method public pada class untuk mengatur dan mendapatkan nilai dari variabel yang tersimpan secara private tersebut.

Contoh:

// Program java untuk

// mendemonstrasikan

// enkapsulasi.

public class Encapsulate

{

// Deklarasi variabel private

 

// Hanya dapat diakses oleh

// public method dari class.

private String idName;

private int idRoll;

private int idAge;

 

// Method get age untuk

// mengakses variabel private

// idAge.

public int getAge()

{return idAge;}

 

// Method get name untuk

// mengakses variabel private

// idName.

public String getName()

{return idName;}

 

// Method get roll untuk

// mengakses variabel private

// isRoll.

public int getRoll()

{return idRoll;}

 

// Method set age untuk

// mengakses variabel private

// idAge.

public void setAge( int newAge)

{idAge = newAge;}

 

// Method set name untuk

// mengakses variabel private

// idName.

public void setName(String newName)

{idName = newName;}

 

// Method set foll untuk

// mengakses variabel private

// idRoll.

public void setRoll( int newRoll)

{idRoll = newRoll;}

}


Pada program sebelumnya class EncaplulateDemo dienkapsulasi sebagai variabel yang dideklarasikan private. Method getAge(), getName(), getRoll() diatur sebagai tipe public, method ini digunakan untuk mengakses variabel yang telah dienkapsulasi. Method setter seperti setName(), setAge(), setRoll() juga dideklrasikan sebagai public dan digunakan untuk mengatur nilai dari variabel.

Contoh: Program yang digunakan untuk mengakses variabel dari class EncapsulateDemo diperlihatkan sebagai berikut.

public class TestEncapsulation

 

public static void main (String[] args)

{

Encapsulate obj = new Encapsulate();

 

/* atur nilai dari variabel */

obj.setName("Sulaiman");

obj.setAge(19);

obj.setRoll(51);

  

/* menampilkan nilai dari variabel */

System.out.println("ID Nama: " 

+ obj.getName());

System.out.println("ID Usia: " 

+ obj.getAge());

System.out.println("ID Roll: " 

+ obj.getRoll());

  

// Mengakses nilai secara

// langsung ke variabel adalah

// tidak mungkin dalam

// enkapsulasi.

 

/* System.out.println("ID Roll: " + obj.idName); */  

}

 

}

Output:
ID Nama: Sulaiman
ID Usia: 19
ID Roll: 51

Baca Juga:
Pengendalian Akses: Dengan mendeklarasikan atribut sebagai private, enkapsulasi memastikan bahwa data hanya dapat diakses dan dimodifikasi oleh metode yang terkait dalam kelas tersebut. Ini membantu dalam mengendalikan akses ke data dan mencegah perubahan yang tidak diinginkan.

Contoh:

public class Mobil {

private String merek;


public String getMerek() 

{return merek;}


public void setMerek(String merek

{this.merek = merek;}

}


Pemeliharaan Kode: Enkapsulasi membantu dalam pemeliharaan kode dengan menyembunyikan detail implementasi dari dunia luar. Jika ada perubahan dalam implementasi kelas (seperti perubahan jenis data atribut), hanya metode akses yang perlu diperbarui, dan kode pengguna yang menggunakan kelas tersebut tetap utuh.

Contoh:

public class PenggunaMobil {

public static void 

main(String[] args

{

Mobil mobil = new Mobil();

mobil.setMerek("Toyota");


// Pengguna tidak perlu

// mengetahui detail

// implementasi

System.out.println("Merek Mobil: " 

+ mobil.getMerek());}}


Pencegahan Perubahan Langsung: Enkapsulasi membantu dalam mencegah perubahan langsung terhadap atribut objek dari luar kelas. Dengan menggunakan metode akses (getter dan setter), pengembang dapat menetapkan aturan dan validasi untuk memastikan nilai yang diset atau dibaca sesuai dengan kebutuhan.

Contoh:

public class Mahasiswa {

private int usia;

public int getUsia() 

{return usia;}


public void setUsia(int usia

{

if (usia > 0

{this.usia = usia;} 

else 

{System.out.println("Usia harus lebih dari 0.");}

}}


Meningkatkan Keamanan: Dengan menjadikan atribut private dan hanya menyediakan metode akses yang sesuai, enkapsulasi meningkatkan tingkat keamanan. Ini mengurangi kemungkinan perubahan yang tidak diinginkan atau akses yang tidak sah ke data objek.

Contoh:

public class RekeningBank {

private double saldo;

// Metode akses yang

// memvalidasi setiap

// transaksi


public void setSaldo

(double saldo

{

if (saldo >= 0

{this.saldo = saldo;} 

else 

{

System.out.println("Saldo tidak valid.");}

}


public double getSaldo() 

{return saldo;}

}


Penerapan enkapsulasi di Java melibatkan beberapa langkah, termasuk:
  • Menjadikan atribut private.
  • Menyediakan metode akses (getter) untuk membaca nilai atribut.
  • Menyediakan metode mutator (setter) untuk mengubah nilai atribut, dengan menerapkan validasi jika diperlukan.

Contoh:

public class ContohEnkapsulasi 

{private int data;


// Metode akses untuk

// membaca nilai atribut


public int getData() 

{return data;}


// Metode mutator untuk

// mengubah nilai atribut

public void setData(int newData

{

if (newData > 0

{data = newData;} 

else 

{System.out.println("Data harus lebih dari 0.");}

}}


Keunggulan dari enkapsulasi:
  • Data tersembunyi (data hiding): pengguna tidak mengetahui implementasi dasar dari class. Tidak mungkin bagi user untuk melihat nilai dari data yang disimpan pada variabel dalam class. Hal yang diketahui oleh user adalah nilai telah diatur melalui setter method dan variabel telah diinisialisasi dengan nilai tertentu.
  • Meningkatkan fleksibilitas: programmer dapat membuat variabel dari class sebagai read-only atau write-only tergantung pada kebutuhan. Jika variabel dibuat dalam bentuk read-only maka method setter seperti setName(), setAge(), dan lain sebagainya harus dihilangkan. Pada contoh program sebelumnya jika ingin membuat program yang hanya bersifat write-only maka method getName(), getAge(), dan lain sebagainya harus dihilangkan.
  • Reusability: enkapsulasi juga meningkatkan reusability dan kemudahan perubahan menggunakan new requirement.
  • Kemudahan pengujian kode program: enkapsulasi kode memudahkan proses pengetesan program untuk unit-unit programnya masing-masing.

Kesimpulan:

Enkapsulasi adalah konsep kunci dalam OOP yang membawa manfaat seperti pengendalian akses, pemeliharaan kode, pencegahan perubahan langsung, dan peningkatan keamanan. Dengan menerapkan enkapsulasi, pengembang dapat menciptakan kelas dan objek yang lebih terstruktur, mudah dimengerti, dan lebih aman dalam penggunaannya. Oleh karena itu, enkapsulasi merupakan bagian penting dalam desain dan pengembangan aplikasi Java yang baik.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Ferry Bangsawan, Findhi Afifatul Latifah, Ibnu Adrianto, Icha Sabrina Milenia Khansa, dan Inggit Herfilia Prativi Edianti.

22 komentar untuk "Enkapsulasi Java dan Fungsinya"

  1. Apa yang dimaksud dengan konsep pembungkungan secara sederhana, pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Enkapsulasi pada Java merupakan suatu mekanisme pembungkus data atau variabel dan kode program, yang bekerja pada level data atau method secara bersama-sama sebagai satu kesatuan. Dalam enkapsulasi, class variabel akan disembunyikan dari class lainnya, dan hanya dapat diakses melalui method class yang digunakan saat ini.

      Hapus
  2. Apa manfaat atau keunggulan dari mekanisme enkapsulasi secara umum pada bahasa pemrograman atau Java?

    BalasHapus
    Balasan
    1. 1. Enkapsulasi melindungi object dari akses yang tidak diinginkan oleh klien.
      2. Enkapsulasi memungkinkan akses ke level tertentu tanpa mengungkapkan detail atau kompleks dari dalam level tersebut.
      3. Mengurangi human error.
      4. Menyerderhanakan pemeriharaan aplikasi atau program.
      5. Membuat aplikasi yang dibuat menjadi lebih mudah untuk dipahami.

      Hapus
  3. Apakah enkapsulasi dan data hiding atau penyembunyian data adalah dua konsep yang sama?

    BalasHapus
    Balasan
    1. Enkapsulasi adalah suatu konsep atau mekanisme untuk melakukan pembungkusan data guna menyembunyikan komplesitas data yang terdapat didalamnya. Makna menyembunyikan data pada enkapsulasi adalah berfokus pada pembatasan akses atau izin penggunaan data yang terdapat didalam kapsul tersebut. Sedangkan data hiding atau penyembunyian data adalah suatu konsep yang selalu bersifat private atau tidak dapat diakses oleh pihak manapun diluar dari otoritas yang ditentukan.

      Jawabannya adalah berbeda.

      Hapus
    2. Ibarat kapsul pada obat yang digunakan untuk mebungkus isi obat yang berbentuk bubuk, yang digunakan sebagai perlindungan begitu pula pada konsep enkapsulasi pada program Java.

      Sedangkan hiding atau hidden, atau menyembunyikan tujuannya berbeda dengan melindungi, karena lebih pada menyimpanan supaya data tersebut tidak terlihat.

      Hapus
  4. Saya cuma ingin tahu, apa yang akan terjadi jika kita mengubah tipe private menjadi tipe public?

    Disi saya juga bicara tentang data hiding, jika tipe nya juga diubah menjadi public, dan kode programnya dijakankan maka maksud dari tipe private itu apa?

    public class Encap {

    private int age;
    public String name;

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public static void main(String[] args) {
    Encap e1 = new Encap();
    //e1.setName("Rohit");
    e1.name="Rohit";
    e1.setAge(25);
    System.out.println(e1.name + " " + e1.age);
    }
    }

    BalasHapus
    Balasan
    1. Coba mabil contoh pada password filed. Pada aplikasi realtime, password tidak pernah dibuat dalam tipe plain teks atau teks biaya (yang terlihat). Kita mungkin mendapatkan password dari form input sebagai teks biaya atau plain teks, namun setelah masuk ke class bean, maka kata tersebut akan dimanipulasi dan diberikan akses getter hanya ke password yang terenkripsi saja. Secara sederhana, diperlihatkan seperti contoh kode program berikut:

      private String password;

      private void setPassword(String password){
      this.password=encryptPassword(password);
      }

      private String getPassword(){
      return password;
      }

      Disini tidak diperlihatkan akses ke password, yang telah disetting dari form login masukkan oleh user.

      Kebanyakan user tidak menggukan 'logic business' pada setter dan getter dalam aplikasi, karena hal ini dapat memberikan kebingungan.

      Tetapi sebelum data tersebut disimpan ke bean itu sendiri, maka akan dilakukan validasi form telebih dahulu, guna memastikan enkapsulasi data tela tercapai dengan benar.

      Hapus
    2. Tipe private tidak akan memberikan izin untuk akses langsung ke variabel dari fungsi main(), yang artinya user tidak dapat mengakses melalui System.out.println("Usia Ayah =" obj.age) seperti yang ditetapkan. Dimana hal ini bukanlah cara yang tepat untuk mengakses object tersebut. Sebaliknya, untuk dapat mengakses object tersebut dapat dilakukan dengan menggunakan getter.

      Hapus
  5. Abstraksi atau abstract adalah cara yang dapat digunakan untuk melakukan komunikasi data secara umum pada Java. Semakin tinggi tingkat abstraksi pada program, maka akan semakin umum jadinya program tersebut. Inilah sebabnya mengapa tingkat abstraksi yang tepat diperlukan antar object pada Java. Disinilah class abstrak pada Java berperan dalam membantu program dengan prose abstraksi. Interface umumnya bersifat lebih abstract daripada implement-nya. Inilah alasan kenapa dua komponen interface yang saling berkomunikasi lebih mudah dilakukan pengubah dan perluasan.

    Sedangkan disisi lain makna enkapsulasi pada Java memberikan pengertian tentang penyembunyian detail internal. Kenapa demikian? Karena hal tersebut memungkinkan user untuk melakukan perubahan internal oleh suatu objet tanpa memengaruhi klien external. Misal, jika sebuah object dari luar tidak dapat mengetahui bagaimana cara kerja sebuah kendaraan atau mobil dapat berjalan, maka mekanik tidak dapat melakukan perubahan pada kecepatannya. tetapi jika dapat diketahui cara kerjanya secara eksternal, maka otomatis dapat dilakukan perubahan pada kecepatan mobil tersebut oleh mekanik manapun, dan bisa jadi yang melakukan perubahan kecepatan tersebut adalah 'oknum' yang tidak bertanggung jawab yang dapat membahayakan keselamatan seorang penumpang, oleh karena itulah tidak setiap bagian kerja mobil dapat diketahui secara langsung oleh seorang mekanik, dimana konsep ini adalah sama seperti konsep enkapsulasi pada Java.

    BalasHapus
  6. Tak kira enkapsulasi pada Java itu adalah data-binding, sedangakan abstraksi pada Java adalah data-hiding.

    BalasHapus
  7. 1.Apa yang dimaksud dengan konsep enkapsulasi!Jelaskan!

    2.Apa tujuan dari penerapan konsep enkapsulasi!Jelaskan!

    3.Mengapa kelas yang kita buat harus diatur mana yang boleh dan tidak boleh diakses oleh kelas lain!

    4.Sebutkan dan Jelaskan empat jenis access modifier yang disediakan oleh Java!

    5.Tulis contoh kode program yang menggunakan keempat access modifier pada soal nomer 4!

    6.Kapan variabel atau method kita atur sebagai private atau public! Jelaskan?

    Kak tolong batu jawab semoga aja balas nya cepat hari ini soalnya harus dikumpulkan hari ini kak🥺🙏

    BalasHapus
    Balasan
    1. Jawab:
      1. konsep enkapsulasi = konsep pengkapsulan, atau penguncian, atau pembatasan terhadap akses kode program yang dibuat.

      2. Tujuan dari konsep enkapsulasi adalah untuk membatasi akses terhadap kode program oleh pihak lain yang tidak memiliki kepentingan untuk mengakses kode program tersebut.

      3. Supaya manajemen kode programnya baik, dan menghindari akses yang tidak perlu dari pihak lain yang tidak berkepentingan.

      4. skip, cari sendiri...

      5. skip,, cari sendiri... contohnya banyak di google.

      6. Ketika method kode program hanya terbatas pada beberapa pihak, maka method tersebut dapat diatur dalam tipe private, sedangkan jika method kode program dapat diakses oleh method apapun secara umum maka dapat diatur dalam tipi public.

      Hapus
    2. Saya tebak, kamu berangkat kuliahnya pasti naik UFO kan? trus pas kuliahnya wajib berdasi kan?

      Hapus
    3. wkwkwkwkkkk... tempat kuliahnya orang-orang berdasi

      Hapus
  8. 1.Apakah yang dimaksud dengan konsep inheritas pada PBO!

    2.Apakah yang dimaksud dengan superkelas dan subkelas!

    3.Buatlah diagram superkelas dan subkelas dari kelas mobil, kelas sepeda motor dan kelas kendaraan!

    4.Buatlah deklarasi pada soal nomor 3 agar terihat konsep inheritasi!

    5.Apa medifier yang digunakan agar data dan variabel superkelas dapat diakses oleh subkelas!

    6.Apa syarat untuk menerapkan konsep inheritas!

    7.Apa yang harus diperhatikan untuk bisa mengakses variabel dan method yang dimiliki superkelas!

    8.Apa kelebihan konsep inheritas! Jawab dengan penjelasan yang ringkas dan tepat!

    Kak mohon maaf jika mengganggu waktunya,tolong bantu jawab dong kak ini mau dikumpulin nanti pagi kak😭🙏

    BalasHapus
    Balasan
    1. no 1. mungkin yang dimaksud adalah inheritance bukan inheritas, inheritance itu adalah 'konsep pewarisan sifat' yang terdapat pada paradigma pemrograman berorientasi objek. pewarisan sifat pada dasarnya cuma pemaknaan sederhanaan dari konsep akses kode program yang terdapat pada suatu class, oleh class program lainnya, baik dalam satu file atau dari file lain yang berbeda.

      Hapus
    2. no 2. Kelas yang mewariskan sifatnya ke class lain disebut superclass (juga kelas dasar atau kelas induk), sedangkan turunannya disebut subclass.

      Hapus
    3. 6. syarat menerapkan konsep inheritance adalah, adanya object-object yang memiliki ciri khas tertentu yang dapat diwariskan ke class lain, atau dapat diakses oleh class lain secara terbatas, atau melalui prosedur tertentu.

      Hapus
    4. no 7. acces modifier-nya apa, posisinya classnya dimana, object apa saja yang terdapat dalam superclass tersebut, dan lain sebagainya.

      Hapus
    5. no 8. dapat memperingkat atau mengefisienkan proses penulisan kode program.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -