SlideShare a Scribd company logo
1 of 6
Download to read offline
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() {
}
7
BAB
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

What's hot

[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek
[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek
[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objekrizki adam kurniawan
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAri Septiawan
 
Pengertian dan Representasi Graph
Pengertian dan Representasi GraphPengertian dan Representasi Graph
Pengertian dan Representasi GraphZaldy Eka Putra
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar PemprogramanMateri sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar PemprogramanReskidtc
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Rakhmat Dedi Gunawan
 
Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sqlLela Warni
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010eddie Ismantoe
 
Logika dan Pembuktian
Logika dan PembuktianLogika dan Pembuktian
Logika dan PembuktianFahrul Usman
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)zachrison htg
 
Metode numerik persamaan non linier
Metode numerik persamaan non linierMetode numerik persamaan non linier
Metode numerik persamaan non linierIzhan Nassuha
 
Pertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekPertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekI Putu Arya Dharmaadi
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktoprizki adam kurniawan
 
Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi PengetahuanSherly Uda
 

What's hot (20)

Fungsi (function)
Fungsi (function)Fungsi (function)
Fungsi (function)
 
[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek
[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek
[PBO] Pertemuan 3 - Package, enkapsulasi & instansiasi objek
 
Modul praktikum-pemrograman java dgn netbeans
Modul praktikum-pemrograman java dgn netbeansModul praktikum-pemrograman java dgn netbeans
Modul praktikum-pemrograman java dgn netbeans
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
 
Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)
 
Pengertian dan Representasi Graph
Pengertian dan Representasi GraphPengertian dan Representasi Graph
Pengertian dan Representasi Graph
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Materi 6. perulangan
Materi 6. perulanganMateri 6. perulangan
Materi 6. perulangan
 
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar PemprogramanMateri sorting(pengurutan)-Dasar-Dasar Pemprograman
Materi sorting(pengurutan)-Dasar-Dasar Pemprograman
 
[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)
 
[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance
 
Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sql
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Logika dan Pembuktian
Logika dan PembuktianLogika dan Pembuktian
Logika dan Pembuktian
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
 
Metode numerik persamaan non linier
Metode numerik persamaan non linierMetode numerik persamaan non linier
Metode numerik persamaan non linier
 
Pertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekPertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objek
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi Pengetahuan
 

Similar to Modul PBO Bab-07 - Enkapsulasi (Encapsulation)

JENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdfJENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdfJurnal IT
 
Pengenalan Java
Pengenalan JavaPengenalan Java
Pengenalan JavaLaili Aidi
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritancerahmantoyuri
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriIndividual Consultants
 
Jeni intro1-bab10-membuat class sendiri
Jeni intro1-bab10-membuat class sendiriJeni intro1-bab10-membuat class sendiri
Jeni intro1-bab10-membuat class sendiriKristanto Wijaya
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriIndividual Consultants
 
Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Rudi Hartono
 
Object Oriented Programming Concept
Object Oriented Programming Concept Object Oriented Programming Concept
Object Oriented Programming Concept EsterLumba
 
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Asnita Meydelia C K
 
10. konsep enkapsulasi
10. konsep enkapsulasi10. konsep enkapsulasi
10. konsep enkapsulasiSaprudin Eskom
 
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJurnal IT
 
516206149-Solid-Principle-Dan-Design-Pattern.pptx
516206149-Solid-Principle-Dan-Design-Pattern.pptx516206149-Solid-Principle-Dan-Design-Pattern.pptx
516206149-Solid-Principle-Dan-Design-Pattern.pptxAdityaSuryani1
 

Similar to Modul PBO Bab-07 - Enkapsulasi (Encapsulation) (20)

Bahan ajar pertemuan 2
Bahan ajar pertemuan 2Bahan ajar pertemuan 2
Bahan ajar pertemuan 2
 
31322 2 class & object
31322 2 class & object31322 2 class & object
31322 2 class & object
 
JENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdfJENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdf
 
13216 3 enkapsulasi
13216 3 enkapsulasi13216 3 enkapsulasi
13216 3 enkapsulasi
 
28431 3 enkapsulasi
28431 3 enkapsulasi28431 3 enkapsulasi
28431 3 enkapsulasi
 
P5 depandi enda
P5 depandi endaP5 depandi enda
P5 depandi enda
 
Pengenalan Java
Pengenalan JavaPengenalan Java
Pengenalan Java
 
P9 enkapsulasi
P9 enkapsulasiP9 enkapsulasi
P9 enkapsulasi
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritance
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
 
Jeni intro1-bab10-membuat class sendiri
Jeni intro1-bab10-membuat class sendiriJeni intro1-bab10-membuat class sendiri
Jeni intro1-bab10-membuat class sendiri
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
 
Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Basic Java Application - Sesi 5
Basic Java Application - Sesi 5
 
9150 8 interface
9150 8  interface9150 8  interface
9150 8 interface
 
Object Oriented Programming Concept
Object Oriented Programming Concept Object Oriented Programming Concept
Object Oriented Programming Concept
 
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
 
10. konsep enkapsulasi
10. konsep enkapsulasi10. konsep enkapsulasi
10. konsep enkapsulasi
 
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
 
5475 1 review konsep pbo
5475 1 review konsep pbo5475 1 review konsep pbo
5475 1 review konsep pbo
 
516206149-Solid-Principle-Dan-Design-Pattern.pptx
516206149-Solid-Principle-Dan-Design-Pattern.pptx516206149-Solid-Principle-Dan-Design-Pattern.pptx
516206149-Solid-Principle-Dan-Design-Pattern.pptx
 

More from Rakhmat Dedi Gunawan

Modul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & DeploymentModul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & DeploymentRakhmat Dedi Gunawan
 
Modul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingModul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingRakhmat Dedi Gunawan
 
Modul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasModul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasRakhmat Dedi Gunawan
 
Modul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolModul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolRakhmat Dedi Gunawan
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaRakhmat Dedi Gunawan
 
Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)Rakhmat Dedi Gunawan
 
Chapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruChapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruRakhmat Dedi Gunawan
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiRakhmat Dedi Gunawan
 

More from Rakhmat Dedi Gunawan (19)

Modul PBO Bab-00 - Daftar Isi
Modul PBO Bab-00 - Daftar IsiModul PBO Bab-00 - Daftar Isi
Modul PBO Bab-00 - Daftar Isi
 
Modul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & DeploymentModul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & Deployment
 
Modul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBCModul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBC
 
Modul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingModul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception Handling
 
Modul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUIModul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUI
 
Modul PBO Bab-09 - Swing
Modul PBO Bab-09 - SwingModul PBO Bab-09 - Swing
Modul PBO Bab-09 - Swing
 
Modul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasModul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar Kelas
 
Modul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & ObjekModul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & Objek
 
Modul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolModul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur Kontrol
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan Java
 
Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)
 
Chapter 01 - Pembuatan Database
Chapter 01 - Pembuatan DatabaseChapter 01 - Pembuatan Database
Chapter 01 - Pembuatan Database
 
Chapter 03 - Form Master
Chapter 03 - Form MasterChapter 03 - Form Master
Chapter 03 - Form Master
 
Chapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruChapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek Baru
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report Kwitansi
 
T04-Stored Procedure
T04-Stored ProcedureT04-Stored Procedure
T04-Stored Procedure
 
T05-Trigger
T05-TriggerT05-Trigger
T05-Trigger
 
T02-Join & View
T02-Join & ViewT02-Join & View
T02-Join & View
 
Teori pbd - erd_studi_kasus (1)
Teori pbd - erd_studi_kasus (1)Teori pbd - erd_studi_kasus (1)
Teori pbd - erd_studi_kasus (1)
 

Modul PBO Bab-07 - Enkapsulasi (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() { } 7 BAB
  • 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()); } }