SlideShare a Scribd company logo
Modul PBO – Teknokrat
61
ENKAPSULASI (ENCAPSULATION)
Tujuan
Praktikan dapat memahami dan menjelaskan konsep enkapsulasi dalam
pemrograman Java.
ENKAPSULASI
Enkapsulasi atau pembungkusan adalah suatu cara untuk menyembunyikan detail informasi dari
user (pengakses kelas) terhadap suatu obyek. Terdapat dua hal mendasar dari enkapsulasi, yaitu:
 Information hidding: penyembunyian detail dari atribut dan method pada suatu kelas.
 Interface untuk pengaksesan data: suatu method untuk mengambil, memberikan, atau
mengubah suatu nilai.
Pada pemrograman berorientasi obyek, kebutuhan akan enkapsulasi muncul karena adanya proses
sharing data antar method. Dengan adanya enkapsulasi, maka keamanan dari data dan method yang
ada didalamnya akan terjaga.
Enkapsulasi dapat dilakukan dengan terlebih dahulu memahami access modifier yang
mendefinisikan bagaimana suatu data atau method dapat diakses. Terdapat empat macam access
modifier pada PBO, yaitu:
 Private : hanya dapat diakses pada kelas itu sendiri
 Public : dapat diakses dari manapun
 Protected : hanya dapat diakses dari package (satu folder) dan subclass
(turunan)
 Default : tanpa modifier, hanya dapat diakses dari package dan kelas
itu sendiri
Dengan menggunakan enkapsulasi kita dapat membatasi akses langsung suatu kelas atau program
kecuali melalui method yang sudah diberikan. Berikut adalah contoh enkapsulasi:
Program 7-1
// MahasiswaTest.java
class Mahasiswa{
//deklarasi private attribute
private String nama;
private String nim;
private String alamat;
public Mahasiswa() {
}
MODUL
7
Modul PBO – Teknokrat
62
//Constructor dengan dua input parameter
public Mahasiswa(String nama, String nim) {
this.nama = nama;
this.nim = nim;
}
//Constructor dengan tiga input parameter
public Mahasiswa(String nama, String nim, String alamat) {
this.nama = nama;
this.nim = nim;
this.alamat = alamat;
}
//mengakses atribut alamat
public String getAlamat() {
return alamat;
}
//mengakses atribut nama
public String getNama() {
return nama;
}
//mengakses attribut nim
public String getNim() {
return nim;
}
//mengisi atribut alamat
public void setAlamat(String alamat) {
this.alamat = alamat;
}
}
public class MahasiswaTest{
public static void main(String[] args){
Mahasiswa objMhs;
String localNama, localNim;
objMhs=new Mahasiswa("Andriani","123456");
objMhs.setAlamat("Watugong 212 Malang");
localNama=objMhs.getNama();
localNim=objMhs.getNim();
}
}
Berdasarkan pada kode program di atas, perhatikan cara deklarasi atribut dan method-method yang
terdapat dalam kelas Mahasiswa. Sebenarnya akan lebih sederhana jika pada kelas Mahasiswa
atribut nama, nim, dan alamat dideklarasikan dengan access modifier public, sehingga tidak perlu
membuat method-method khusus (setAlamat, getAlamat, getNim, getNama) untuk mengaksesnya.
Demikian pula pada kelas MahasiswaTest, mengambil dan mengubah isi data objek Mahasiswa akan
lebih sederhana. Berikut contoh jika kelas Mahasiswa di atas diubah access modifier atributnya:
class Mahasiswa{
//deklarasi private attribute
private String nama;
private String nim;
Modul PBO – Teknokrat
63
private String alamat;
...
}
public class MahasiswaTest{
public static void main(String[] args){
Mahasiswa objMhs;
String localNama, localNim;
objMhs=new Mahasiswa("Andriani","123456");
objMhs.alamat = "Watugong 212 Malang";
localNama=objMhs.nama;
localNim=objMhs.nim;
}
}
Saat membuat object objMhs yang bisa dianggap sebagai proses “membuat seorang mahasiswa”,
maka data nama dan nim tidak boleh diubah selama mahasiswa tersebut ada sehingga kita harus
membuat data nama dan nim sebagai data read only.
Jika data-data ini dibuat tidak readonly yang dapat memberikan peluang akses penuh, maka
kemungkinan akan terdapat masalah tersendiri. Dengan demikian kita perlu melindungi data nama
dan nim dari perubahan-perubahan dari luar class, sehingga perlu diberikan modifier private. Kita
akan buktikan pada kasuskasus berikutnya.
Method getNama, getNim, dan getAlamat disebut sebagi accesor method karena method tersebut
memberikan kembalian nilai data yang sederhana. Sedangkan setAlamat disebut sebagai mutator
method karena digunakan untuk memberikan suatu nilai yang sederhana.
Langkah-langkah di atas selanjutnya dapat kita gunakan untuk menerapkan sifat encapsulation atau
information hiding. Jadi pada dasarnya encapsulation dapat kita lakukan dengan:
 Mendeklarasikan data atau attribut dengan modifier private
 Memberikan accessor method (getter) untuk mengakses data dari atribut private
 Memberikan mutator method (setter) untuk memberikan nilai ke suatu data dari atribut
private.
Keuntungan menerapkan enkapsulasi adalah:
 Bersifat independen
Suatu modul yang terencapsulasi dengan baik akan bersifat independen dari modul yang
lainnya sehingga dapat digunakan pada bagian manapun dari program. Ia tidak akan terikat
pada bagian tertentu dari program.
 Bersifat transparan
Bila melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan juga
oleh bagian program yang menggunakan modul tersebut.
 Menghindari efek diluar perencanaan
Modul yang terencapsulasi dengan baik hanya akan berinteraksi dengan bagian program
lainnya melalui variable-variabel input/output yang telah didefinisikan sebelunnya. Dengan
demikian, akan mereduksi kemungkinan adanya hasil imbas pemrosesan yang di luar
perencanaan semula.
 Melindungi listing program
Modul PBO – Teknokrat
64
Saat program didistribusikan pada khalayak, untuk melindungi listing program. Anda dapat
menerapkan prinsip enkapsulasi. Di sini pengguna hanya dapat menggunakan program
melalui variable input atau output yang didefinisikan tanpa disertai bagimana proses yang
terjadi di dalam modul tersebut.
KEYWORD THIS
Keyword this adalah objek yang langsung digunakan tanpa didahului proses instansiasi. Penggunaan
keyword ini yaitu bila ada attribute (non static) dari suatu kelas akan digunakan method yang berada
dalam kelas yang sama, namun nama attribute tersebut dan nama parameter yang dilewatkan pada
method tersebut SAMA.
Keyword ini dapat digunakan secara implisit maupun eksplisit. Berikut contoh penggunaan yang
eksplisit:
Program 7-2
// RectangleToy.java
public class RectangleToy {
private double width, height;
public void setRectangle(double width, double height) {
this.width = width;
this.height = height;
}
}
Pemanggilan attribute yang eksplisit, biasa digunakan untuk mengatasi panamaan yang sama. Pada
contoh ini parameter di method setRectangle menggunakan nama yang sama dengan attribute di
kelas RectangleToy.
Berikut contoh pemanggilan implisit:
Program 7-3
// RectangleToy2.java
public class RectangleToy2 {
private double width, height;
public void setRectangle(double new width, double new height) {
width = new width;
height = new height;
}
}
PANDUAN MENDESAIN KELAS
Berikut adalah beberapa panduan dalam mendesain kelas (melakukan enkapsulasi):
1. Selalu gunakan modifier private untuk data atau attribut. Selain menerapkan sifat
encapsulation, langkah ini akan memberikan keuntungan antara lain:
 Desain yang lebih modular
 Perubahan representasi class tidak terlalu berpengaruh pada class tersebut
 Lebih mudah mendeteksi kesalahan
Modul PBO – Teknokrat
65
2. Selalu buat nilai inisial (nilai awal) pada data. Inisialisasi data dapat dilakukan dengan
menggunakan constructor atau dengan memberikan nilai default.
3. Hindari penggunaan banyak tipe data pada sebuah class. Kumpulkan multiple tipe data
menjadi sebuah kelas. Misalkan jika pada class Mahasiswa terdapat:
private String jalan; private string kota; private string propinsi;
private string kodePos;
dapat diganti dengan sebuah class Alamat yang didalamnya terdapat data-data di atas.
4. Tidak semua data memerlukan setter dan getter. Untuk data yang hanya perlu di set satu
kali, cukup manfaatkan constructor.
5. Biasakan menggunakan standar penulisan yang sama pada setiap class. Manfaatkan
penulisan indent untuk menjaga kerapian code sehingga mempermudah trace kesalahan.
6. Buatlah class sesederhana mungkin, hindari membuat class yang kompleks.
7. Gunakan nama class dan method sesuai fungsinya. Ini akan mempermudah kita (dan tim)
dalam menggunakan class dan trace error. Ada saran untuk penulisan class dan method:
 Gunakan kata benda (Noun) untuk sebuah nama class: Mahasiswa, MataKuliah,
JadwalKuliah.
 Gunakan kata kerja (Verb) untuk method : getNama, hitungIPK, setNilai.
Modul PBO – Teknokrat
66
Lembar Kerja Praktikum: Modul 7
NPM: Asisten:
Nama: Nilai:
Kelas: Tanggal:
Soal
[Score: 100] Berdasarkan kode program di bawah ini, tentukanlah:
 Atribut dari Kelas Kapsul
 Method dari Kelas Kapsul
 Accessor Method dari Kelas Kapsul
 Mutator Method dari Kelas Kapsul
 Objek pada kelas Enkapsulasi
public class Kapsul{
private double panjang;
private double lebar;
private double tinggi;
public Kapsul(){
double panjang=0;
double lebar=0;
}
private double luas(double p, double l){ return p*l; }
public void setPanjang(double panjang){ this.panjang=panjang; }
public void setLebar(double lebar){ this.lebar=lebar; }
public double getPanjang(){ return panjang; }
public double getLebar(){ return lebar; }
public double getLuas(){ return luas(panjang, lebar); }
}
public class Enkapsulasi{
public static void main(String[]args){
Kapsul pp= new Kapsul();
pp.setPanjang(50);
pp.setLebar(100);
System.out.println("panjang: "+ pp.getPanjang());
System.out.println("lebar: "+pp.getLebar());
System.out.println("luasnya adalah: "+ pp.getLuas());
}
}

More Related Content

PDF
CRUD pada Android Studio menggunakan MySQL
PDF
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
PPTX
Pushdown Automata
PDF
Pertemuan 13 Graph
PPT
Algoritma - prosedur dan fungsi
PDF
[PBO] Pertemuan 2 - Method, String & array
DOCX
Laporan Praktikum Basis Data Modul III-Manipulasi Data
PPT
Algoritma brute force
CRUD pada Android Studio menggunakan MySQL
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Pushdown Automata
Pertemuan 13 Graph
Algoritma - prosedur dan fungsi
[PBO] Pertemuan 2 - Method, String & array
Laporan Praktikum Basis Data Modul III-Manipulasi Data
Algoritma brute force

What's hot (20)

PPT
Notasi prefix infix-postifx- expression tree
PDF
Data Mining - Naive Bayes
PDF
Kumpulan program-pascal
PPTX
PowerPoint - Set Instruksi dan Teknik Pengalamatan
DOCX
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
PDF
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
PDF
Modul Pemrograman Berorientasi Objek
PPT
PBO - Pert 7, Mengenal dan Memahami Konsep Array Pada Java
DOCX
Makalah Algoritma kruskal
DOCX
MAKALAH STACK (TUMPUKAN )
PDF
[PBO] Pertemuan 6 - Interface
PDF
Metode sugeno
PDF
Pertemuan 04 Teknik Pencarian (Search)
PDF
Laporan Praktikum Algoritma
PDF
Modul Membuat Tabel pada HTML
DOC
Bab 3 resolusi logika ta 2019
PPT
4. pengamanan sistem operasi
PPTX
Dts x dicoding #2 memulai pemrograman kotlin
PPT
Algoritma penjadwalan proses
Notasi prefix infix-postifx- expression tree
Data Mining - Naive Bayes
Kumpulan program-pascal
PowerPoint - Set Instruksi dan Teknik Pengalamatan
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Pemrograman Berorientasi Objek
PBO - Pert 7, Mengenal dan Memahami Konsep Array Pada Java
Makalah Algoritma kruskal
MAKALAH STACK (TUMPUKAN )
[PBO] Pertemuan 6 - Interface
Metode sugeno
Pertemuan 04 Teknik Pencarian (Search)
Laporan Praktikum Algoritma
Modul Membuat Tabel pada HTML
Bab 3 resolusi logika ta 2019
4. pengamanan sistem operasi
Dts x dicoding #2 memulai pemrograman kotlin
Algoritma penjadwalan proses
Ad

Similar to Modul pratikum pbo - ENCAPSULATION (20)

PPTX
10. konsep enkapsulasi
PPTX
Konsep Enkapsulasi NAZRI HAMDI (UAS).pptx
PPTX
03-Konsep Objet oriented programmingII.pptx
DOCX
Laporan praktikum Algoritma dan Pemrograman pertemuan 15
PPTX
PPTX
PDF
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
PPTX
Object Oriented Programming Concept
PPT
Lanjutan-Konsep-OOPLanjutan-Konsep-OOP.ppt
PDF
Modul PBO Bab-03 - Kelas & Objek
PPTX
8. konsep class, object dan method
PDF
P9 enkapsulasi
PDF
02. prak.-pemrograman-berorientasi-objek
PDF
Modul pratikum pbo - Class dan Object
PDF
Jeni Intro1 Bab10 Membuat Class Sendiri
PDF
Jeni Intro1 Bab10 Membuat Class Sendiri
PDF
Jeni intro1-bab10-membuat class sendiri
PPTX
Pertemuan7_Konsep Inheritance, Polymorphism, dan Encapsulation.pptx
PPT
Pert 4. class dan objek
PDF
2.other oop basic
10. konsep enkapsulasi
Konsep Enkapsulasi NAZRI HAMDI (UAS).pptx
03-Konsep Objet oriented programmingII.pptx
Laporan praktikum Algoritma dan Pemrograman pertemuan 15
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
Object Oriented Programming Concept
Lanjutan-Konsep-OOPLanjutan-Konsep-OOP.ppt
Modul PBO Bab-03 - Kelas & Objek
8. konsep class, object dan method
P9 enkapsulasi
02. prak.-pemrograman-berorientasi-objek
Modul pratikum pbo - Class dan Object
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni intro1-bab10-membuat class sendiri
Pertemuan7_Konsep Inheritance, Polymorphism, dan Encapsulation.pptx
Pert 4. class dan objek
2.other oop basic
Ad

More from rahmantoyuri (20)

PDF
new Chapter 10 - Report Kwitansi.pdf
PDF
new Chapter 9 - Coding Form Transaksi Penjualan.pdf
PDF
new Chapter 8 - Coding Form Master Pelanggan (Customer).pdf
PDF
new Chapter 7 - Coding Form Master Barang.pdf
PDF
new Chapter 6 - Kelas Koneksi dan Form Login.pdf
PDF
new Chapter 5 - Coding Form Menu Utama.pdf
PDF
new Chapter 4 - Form Transaksi.pdf
PDF
new Chapter 3 - Form Master.pdf
PDF
new Chapter 2 - New Project Visual Studio C#.pdf
PDF
new Chapter 1 - Membuat Database.pdf
PDF
Slide Ngajar E-Filing cover.pdf
PDF
e filing.pdf
PDF
ELECTRONIC FILING (E-FILING).pdf
PDF
Materi Kearsipan Manual.pdf
PPTX
PRAKTEK JOIN.pptx
PPTX
VIEW.pptx
PPTX
JOIN.pptx
PPTX
Fungsi Agregat.pptx
PPTX
SELECT.pptx
PPTX
Data Manipulation language (DML).pptx
new Chapter 10 - Report Kwitansi.pdf
new Chapter 9 - Coding Form Transaksi Penjualan.pdf
new Chapter 8 - Coding Form Master Pelanggan (Customer).pdf
new Chapter 7 - Coding Form Master Barang.pdf
new Chapter 6 - Kelas Koneksi dan Form Login.pdf
new Chapter 5 - Coding Form Menu Utama.pdf
new Chapter 4 - Form Transaksi.pdf
new Chapter 3 - Form Master.pdf
new Chapter 2 - New Project Visual Studio C#.pdf
new Chapter 1 - Membuat Database.pdf
Slide Ngajar E-Filing cover.pdf
e filing.pdf
ELECTRONIC FILING (E-FILING).pdf
Materi Kearsipan Manual.pdf
PRAKTEK JOIN.pptx
VIEW.pptx
JOIN.pptx
Fungsi Agregat.pptx
SELECT.pptx
Data Manipulation language (DML).pptx

Recently uploaded (20)

PPT
Kamera foto dan editing foto pengenalan fotografi
PPTX
MATERI NARKOBA RTS badan anti narkoba.pptx
PDF
Laporan On The Job TRaining PM KS Siti Hikmah.pdf
PPTX
Rancangan Aktualisasi Latsar CPNS Kementerian Agama 2025.pptx
PDF
Presentasi Aplikasi Persiapan ANBK 2025.pdf
DOCX
Modul Ajar Deep Learning PJOK Kelas 12 SMA Terbaru 2025
PPTX
Pancasila: fondasi peradaban dan kebudayaan berkelanjutan
PPTX
Manajemen Risiko dalam Kegiatan Kepramukaan.pptx
PPTX
KEBIJAKAN BIAS JATENG 2025.Boyolali.pptx
PPTX
Patuh_Terhadap_Norma_PPKn_Kelas_7 oke.pptx
PDF
lembar kerja LMS tugas pembelajaran mendalam
DOCX
Modul Ajar Deep Learning PKWU Rekayasa Kelas 12 SMA Terbaru 2025
DOCX
Modul Ajar Deep Learning Biologi Kelas 10 SMA Terbaru 2025
PPTX
oioioooooooooooooo Penanganan P3K.pptx
PDF
ANALISIS SOALAN BAHASA MELAYU SPM 2021-2024 (1).pdf
DOCX
Modul Ajar Deep Learning PJOK Kelas 10 SMA Terbaru 2025
PDF
LK Modul 3 - Menentukan Pengalaman Belajar Herpina Indah Permata Sari (2).pdf
PPTX
Saint Maximilian Kolbe, Polish friar, priest, missionary and martyr (indonesi...
PDF
PPT Yudisium Ceremony Agusus 2025 - new. pdf
PPTX
Materi-Geografi-Pendekatan-Konsep-dan-Prinsip-Geografi-Kelas-10.pptx
Kamera foto dan editing foto pengenalan fotografi
MATERI NARKOBA RTS badan anti narkoba.pptx
Laporan On The Job TRaining PM KS Siti Hikmah.pdf
Rancangan Aktualisasi Latsar CPNS Kementerian Agama 2025.pptx
Presentasi Aplikasi Persiapan ANBK 2025.pdf
Modul Ajar Deep Learning PJOK Kelas 12 SMA Terbaru 2025
Pancasila: fondasi peradaban dan kebudayaan berkelanjutan
Manajemen Risiko dalam Kegiatan Kepramukaan.pptx
KEBIJAKAN BIAS JATENG 2025.Boyolali.pptx
Patuh_Terhadap_Norma_PPKn_Kelas_7 oke.pptx
lembar kerja LMS tugas pembelajaran mendalam
Modul Ajar Deep Learning PKWU Rekayasa Kelas 12 SMA Terbaru 2025
Modul Ajar Deep Learning Biologi Kelas 10 SMA Terbaru 2025
oioioooooooooooooo Penanganan P3K.pptx
ANALISIS SOALAN BAHASA MELAYU SPM 2021-2024 (1).pdf
Modul Ajar Deep Learning PJOK Kelas 10 SMA Terbaru 2025
LK Modul 3 - Menentukan Pengalaman Belajar Herpina Indah Permata Sari (2).pdf
Saint Maximilian Kolbe, Polish friar, priest, missionary and martyr (indonesi...
PPT Yudisium Ceremony Agusus 2025 - new. pdf
Materi-Geografi-Pendekatan-Konsep-dan-Prinsip-Geografi-Kelas-10.pptx

Modul pratikum pbo - ENCAPSULATION

  • 1. Modul PBO – Teknokrat 61 ENKAPSULASI (ENCAPSULATION) Tujuan Praktikan dapat memahami dan menjelaskan konsep enkapsulasi dalam pemrograman Java. ENKAPSULASI Enkapsulasi atau pembungkusan adalah suatu cara untuk menyembunyikan detail informasi dari user (pengakses kelas) terhadap suatu obyek. Terdapat dua hal mendasar dari enkapsulasi, yaitu:  Information hidding: penyembunyian detail dari atribut dan method pada suatu kelas.  Interface untuk pengaksesan data: suatu method untuk mengambil, memberikan, atau mengubah suatu nilai. Pada pemrograman berorientasi obyek, kebutuhan akan enkapsulasi muncul karena adanya proses sharing data antar method. Dengan adanya enkapsulasi, maka keamanan dari data dan method yang ada didalamnya akan terjaga. Enkapsulasi dapat dilakukan dengan terlebih dahulu memahami access modifier yang mendefinisikan bagaimana suatu data atau method dapat diakses. Terdapat empat macam access modifier pada PBO, yaitu:  Private : hanya dapat diakses pada kelas itu sendiri  Public : dapat diakses dari manapun  Protected : hanya dapat diakses dari package (satu folder) dan subclass (turunan)  Default : tanpa modifier, hanya dapat diakses dari package dan kelas itu sendiri Dengan menggunakan enkapsulasi kita dapat membatasi akses langsung suatu kelas atau program kecuali melalui method yang sudah diberikan. Berikut adalah contoh enkapsulasi: Program 7-1 // MahasiswaTest.java class Mahasiswa{ //deklarasi private attribute private String nama; private String nim; private String alamat; public Mahasiswa() { } MODUL 7
  • 2. Modul PBO – Teknokrat 62 //Constructor dengan dua input parameter public Mahasiswa(String nama, String nim) { this.nama = nama; this.nim = nim; } //Constructor dengan tiga input parameter public Mahasiswa(String nama, String nim, String alamat) { this.nama = nama; this.nim = nim; this.alamat = alamat; } //mengakses atribut alamat public String getAlamat() { return alamat; } //mengakses atribut nama public String getNama() { return nama; } //mengakses attribut nim public String getNim() { return nim; } //mengisi atribut alamat public void setAlamat(String alamat) { this.alamat = alamat; } } public class MahasiswaTest{ public static void main(String[] args){ Mahasiswa objMhs; String localNama, localNim; objMhs=new Mahasiswa("Andriani","123456"); objMhs.setAlamat("Watugong 212 Malang"); localNama=objMhs.getNama(); localNim=objMhs.getNim(); } } Berdasarkan pada kode program di atas, perhatikan cara deklarasi atribut dan method-method yang terdapat dalam kelas Mahasiswa. Sebenarnya akan lebih sederhana jika pada kelas Mahasiswa atribut nama, nim, dan alamat dideklarasikan dengan access modifier public, sehingga tidak perlu membuat method-method khusus (setAlamat, getAlamat, getNim, getNama) untuk mengaksesnya. Demikian pula pada kelas MahasiswaTest, mengambil dan mengubah isi data objek Mahasiswa akan lebih sederhana. Berikut contoh jika kelas Mahasiswa di atas diubah access modifier atributnya: class Mahasiswa{ //deklarasi private attribute private String nama; private String nim;
  • 3. Modul PBO – Teknokrat 63 private String alamat; ... } public class MahasiswaTest{ public static void main(String[] args){ Mahasiswa objMhs; String localNama, localNim; objMhs=new Mahasiswa("Andriani","123456"); objMhs.alamat = "Watugong 212 Malang"; localNama=objMhs.nama; localNim=objMhs.nim; } } Saat membuat object objMhs yang bisa dianggap sebagai proses “membuat seorang mahasiswa”, maka data nama dan nim tidak boleh diubah selama mahasiswa tersebut ada sehingga kita harus membuat data nama dan nim sebagai data read only. Jika data-data ini dibuat tidak readonly yang dapat memberikan peluang akses penuh, maka kemungkinan akan terdapat masalah tersendiri. Dengan demikian kita perlu melindungi data nama dan nim dari perubahan-perubahan dari luar class, sehingga perlu diberikan modifier private. Kita akan buktikan pada kasuskasus berikutnya. Method getNama, getNim, dan getAlamat disebut sebagi accesor method karena method tersebut memberikan kembalian nilai data yang sederhana. Sedangkan setAlamat disebut sebagai mutator method karena digunakan untuk memberikan suatu nilai yang sederhana. Langkah-langkah di atas selanjutnya dapat kita gunakan untuk menerapkan sifat encapsulation atau information hiding. Jadi pada dasarnya encapsulation dapat kita lakukan dengan:  Mendeklarasikan data atau attribut dengan modifier private  Memberikan accessor method (getter) untuk mengakses data dari atribut private  Memberikan mutator method (setter) untuk memberikan nilai ke suatu data dari atribut private. Keuntungan menerapkan enkapsulasi adalah:  Bersifat independen Suatu modul yang terencapsulasi dengan baik akan bersifat independen dari modul yang lainnya sehingga dapat digunakan pada bagian manapun dari program. Ia tidak akan terikat pada bagian tertentu dari program.  Bersifat transparan Bila melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan juga oleh bagian program yang menggunakan modul tersebut.  Menghindari efek diluar perencanaan Modul yang terencapsulasi dengan baik hanya akan berinteraksi dengan bagian program lainnya melalui variable-variabel input/output yang telah didefinisikan sebelunnya. Dengan demikian, akan mereduksi kemungkinan adanya hasil imbas pemrosesan yang di luar perencanaan semula.  Melindungi listing program
  • 4. Modul PBO – Teknokrat 64 Saat program didistribusikan pada khalayak, untuk melindungi listing program. Anda dapat menerapkan prinsip enkapsulasi. Di sini pengguna hanya dapat menggunakan program melalui variable input atau output yang didefinisikan tanpa disertai bagimana proses yang terjadi di dalam modul tersebut. KEYWORD THIS Keyword this adalah objek yang langsung digunakan tanpa didahului proses instansiasi. Penggunaan keyword ini yaitu bila ada attribute (non static) dari suatu kelas akan digunakan method yang berada dalam kelas yang sama, namun nama attribute tersebut dan nama parameter yang dilewatkan pada method tersebut SAMA. Keyword ini dapat digunakan secara implisit maupun eksplisit. Berikut contoh penggunaan yang eksplisit: Program 7-2 // RectangleToy.java public class RectangleToy { private double width, height; public void setRectangle(double width, double height) { this.width = width; this.height = height; } } Pemanggilan attribute yang eksplisit, biasa digunakan untuk mengatasi panamaan yang sama. Pada contoh ini parameter di method setRectangle menggunakan nama yang sama dengan attribute di kelas RectangleToy. Berikut contoh pemanggilan implisit: Program 7-3 // RectangleToy2.java public class RectangleToy2 { private double width, height; public void setRectangle(double new width, double new height) { width = new width; height = new height; } } PANDUAN MENDESAIN KELAS Berikut adalah beberapa panduan dalam mendesain kelas (melakukan enkapsulasi): 1. Selalu gunakan modifier private untuk data atau attribut. Selain menerapkan sifat encapsulation, langkah ini akan memberikan keuntungan antara lain:  Desain yang lebih modular  Perubahan representasi class tidak terlalu berpengaruh pada class tersebut  Lebih mudah mendeteksi kesalahan
  • 5. Modul PBO – Teknokrat 65 2. Selalu buat nilai inisial (nilai awal) pada data. Inisialisasi data dapat dilakukan dengan menggunakan constructor atau dengan memberikan nilai default. 3. Hindari penggunaan banyak tipe data pada sebuah class. Kumpulkan multiple tipe data menjadi sebuah kelas. Misalkan jika pada class Mahasiswa terdapat: private String jalan; private string kota; private string propinsi; private string kodePos; dapat diganti dengan sebuah class Alamat yang didalamnya terdapat data-data di atas. 4. Tidak semua data memerlukan setter dan getter. Untuk data yang hanya perlu di set satu kali, cukup manfaatkan constructor. 5. Biasakan menggunakan standar penulisan yang sama pada setiap class. Manfaatkan penulisan indent untuk menjaga kerapian code sehingga mempermudah trace kesalahan. 6. Buatlah class sesederhana mungkin, hindari membuat class yang kompleks. 7. Gunakan nama class dan method sesuai fungsinya. Ini akan mempermudah kita (dan tim) dalam menggunakan class dan trace error. Ada saran untuk penulisan class dan method:  Gunakan kata benda (Noun) untuk sebuah nama class: Mahasiswa, MataKuliah, JadwalKuliah.  Gunakan kata kerja (Verb) untuk method : getNama, hitungIPK, setNilai.
  • 6. Modul PBO – Teknokrat 66 Lembar Kerja Praktikum: Modul 7 NPM: Asisten: Nama: Nilai: Kelas: Tanggal: Soal [Score: 100] Berdasarkan kode program di bawah ini, tentukanlah:  Atribut dari Kelas Kapsul  Method dari Kelas Kapsul  Accessor Method dari Kelas Kapsul  Mutator Method dari Kelas Kapsul  Objek pada kelas Enkapsulasi public class Kapsul{ private double panjang; private double lebar; private double tinggi; public Kapsul(){ double panjang=0; double lebar=0; } private double luas(double p, double l){ return p*l; } public void setPanjang(double panjang){ this.panjang=panjang; } public void setLebar(double lebar){ this.lebar=lebar; } public double getPanjang(){ return panjang; } public double getLebar(){ return lebar; } public double getLuas(){ return luas(panjang, lebar); } } public class Enkapsulasi{ public static void main(String[]args){ Kapsul pp= new Kapsul(); pp.setPanjang(50); pp.setLebar(100); System.out.println("panjang: "+ pp.getPanjang()); System.out.println("lebar: "+pp.getLebar()); System.out.println("luasnya adalah: "+ pp.getLuas()); } }