1
BAB III ENKAPSULASI
A. TUJUAN PEMBELAJARAN
Setelah mempelajari Bab ini, diharapkan mahasiswa mengenal dan mempraktikkan bagaimana enkapsulasi diterapkan dalam kasus-kasus pemrograman pada java.
B. URAIAN MATERI 1. Enkapsulasi
Merupakan sebuah proses penggabungan attribut dan method ke dalam sebuah kelas. Biasanya atribut dan methoddideskrpsikan secara terpisah pada pemrograman prosedural. Selain itu enkapasulasi juga dihubungkan dengan pemberian hak akses pada kelas ataupun angota dari sebuah kelas (atribut dan method).
Contoh:
Atribut dan method dibungkus pada satu kelas yaitu kelas Kucing.
Enkapsulasi membuat atribut dan method menjadi lebih terorganisir dan jelas kepemilikannya. Atribut berupa “BeratBadan” dan “Ras” dan method berupa “bersuara()”, “jeniskelamin()”, dan “makan()”; adalah milik kelas kucing.
Contoh Penerapan Enkapsulasi dan Instansiasi Objek
Persegi + sisi: double
+ hitungKeliling():double + hitung Luas ():double
2
Terdapat 3 cara dalam pengaksesan variabel:
a. Variabel Lokal dideklarasikan di dalam method atau blok.
Contoh:
b. Variabel Instance Merupakan variabel yang dideklarasikan dalam kelas atau secara global, namun di luar method atau blok.
Contoh:
public class VariabelLokal {
public void tambahBarang(){ //method //Deklarasi variabel lokal
int jumlahBarang = 0;
jumlahBarang = jumlahBarang + 1;
System.out.println ("Jumlah barang setelah ditambah:
" + jumlahBarang);
}
public static void main (String [] args){
VariabelLokal Barang = new VariabelLokal();
Barang.tambahBarang();
} }
public class Persegi { public double sisi;
public double hitungKeliling (){
return 4 * sisi;
}
public double hitungLuas(){
return sisi * sisi;
}
public static void main (String []args){
Persegi persegi = new Persegi();
persegi.sisi=5;
System.out.println("Keliling persegi: " + persegi.hitungKeliling());
System.out.println("Luas persegi: " + persegi.hitungLuas());
} }
3
c. Variabel Kelas/Static dideklarasikan dengan kata kunci “static”, dan dapat di akses langsung di luar kelas yang mendeklarasikannya tanpa harus kelas tersebut diinstansiasi terlebih dahulu.
Contoh:
Buatlah sebuah class bernama VariabelStatic
Buatlah class baru sebagai main class:
public class MainStatic {
//Nama_Universitas sebagai konstanta
public static final String Nama_Universitas = "UHAMKA";
public static void main (String[] args){
VariabelStatic.jumlahMahasiswa = 1000;
System.out.println (Nama_Universitas + " memiliki mahasiswa "+ VariabelStatic.jumlahMahasiswa);
} }
public class VariabelStatic {
//variabel jumlahMahasiswa dideklarasikan sebagai statik public static int jumlahMahasiswa;
}
public class VariabelInstance { //Deklarasi variabel instance int jumlahBarang = 10;
public void getJumlahBarang(){//method
System.out.println ("Jumlah barang: "+ jumlahBarang);
}
public void tambahBarang(){
jumlahBarang = jumlahBarang + 1;
System.out.println ("Jumlah barang stelah ditambah: " + jumlahBarang);
}
public static void main (String [] args){
VariabelInstance Barang = new VariabelInstance();
Barang.getJumlahBarang();
Barang.tambahBarang();
Barang.getJumlahBarang();
} }
4
Jenis -jenis hak akses modifiers yang biasa digunakan di Java, yaitu:
a. Public Digunakan apabila atribut atau method ingin bisa diakses di kelas yang lain (bukan kelas pemilik atribut dan method tersebut).
Pada class diagram menggunakan simbol (+)
b. Private Digunakan apabila atribut atau method hanya ingin diakses pada kelas pemilik. Pada class diagram menggunakan simbol (-) c. Protected Digunakan pada konsep pewarisan. Pewarisan variabel
maupun method hanya berlaku untuk kelas turunannya dan tidak dapat digunakan pada kelas lain. Pada class diagram menggunakan simbol (#).
d. Default hanya kelas dalam paket dapat mengakses variable dan metode kelas
Hak akses yang biasa digunakan pada atribut adalah private dan untuk mengakses nilai dari kelas lain biasanya disediakan geter dan setter.
Getter dan Setter
Untuk membuat atribut yang memiliki hak akses private menjadi accessible di kelas selain kelas pemilik, terdapat konsep yang memungkinkan hal tersebut, yaitu Getter dan setter. Merupakan 2 buah method yang dibuat untuk masing-masing atribut agar kelas lain bisa melakukan modifikasi dan pengakasesan nilai yang ada pada suatu atribut.
Getter dan Setter memiliki hak akses public sehingga bisa diakses oleh kelas lain.
Getter merupakan method yang dibuat untuk mengambil atau mengembalikan nilai sebuah atribut kepada pemanggilnya, sedangkan setter merupakan method yang dibuat untuk memodifikasi nilai dari suatu atribut berdasarkan nilai yang dikirim oleh pemanggilnya menggunakan parameter input.
5 Format Getter dan Setter
Kata kunci this yang terdapat pada Setter digunakan kunci membedakan antara atrinut internal kelas dengan nama parameter input apabila keduanya bernama sama. This mengacu pada nama atribut internal kelas.
This digunakan untuk mengakses instance variable yang dibiaskan oleh parameter.
Contoh:
PersegiPanjang - panjang: double - lebar: double
+ hitungKeliling():double + hitung Luas ():double
Pada class PersegiPanjang // Format Getter
public <tipe_data_atribut> getNamaAtribut(){
return <nama_atribut>;
}
//Format Setter
public void setNamaAtribut (<parameter_input_atribut>){
this.<nama_atribut> = <parameter_input_atribut>;
}
Perhatikan atribut !!
Hak akses bersifat private
6
Atribut class PersegiPanjang akan diakses oleh class lain yaitu class TesterGetterSetter.
Method toString
Method ini digunakan untuk mengirim representasi object kedalam string.
Method toString() merupakan method yang berada pada class Object, sehingga semua object dari semua class pada Java yang menggunakan method toString() melakukan proses override.
public class TesterGetterSetter {
public static void main (String []args){
PersegiPanjang persegipanjang = new PersegiPanjang();
persegipanjang.setPanjang(7);
persegipanjang.setLebar (5);
System.out.println("Panjang persegipanjang: " + persegipanjang.getPanjang());
System.out.println("Lebar persegipanjang: " + persegipanjang.getLebar());
System.out.println("Keliling persegipanjang: " + persegipanjang.hitungKeliling());
System.out.println("Luas persegipanjang: " + persegipanjang.hitungLuas());
} }
public class PersegiPanjang { private double panjang;
private double lebar;
public double getPanjang(){
return panjang;
}
public void setPanjang(double panjang){
this.panjang = panjang;
}
public double getLebar(){
return lebar;
}
public void setLebar(double lebar){
this.lebar= lebar;
}
public double hitungKeliling(){
return (2*panjang + 2*lebar);
}
public double hitungLuas(){
return panjang * lebar;
} }
7 Contoh:
C. TINDAK LANJUT
Setelah mempelajari materi di atas, untuk mendalamai materi yang berkaitan dengan Enkapsulasi pada Pemrograman Berorientasi Objek silahkan gunakan buku yang berjudul “Pemrograman Berorientasi Objek menggunakan java” karangan Adam Mukharil bachtiar dan Firman Nizammudin Fakhrul. Kalian juga bisa kunjungi dan tonton video terkait materi tersebut pada url berikut:
https://www.youtube.com/watch?v=IrwDHewOYOc. Silahkan mencari referensi lain dari materi ini dari sumber-sumber lain baik sumber cetak maupun searching di internet.
D. LATIHAN (ESSAY)
1. Buatlah program untuk menampilkan bentuk air bergantung terhadap suhu (t-temperature) dengan ketentuan sbb:
t < 0 Berbentuk es atau beku t = 0 berbentuk ransisi es dan cair 0 < t < 100 berbentuk cair
t = 100 berbentuk transisi cair dan gas t > 100 berbentuk gas atau uap
Buatlah dengan nama class BentukAir. Gunakan constructor serta class Mahasiswa {
String nama, nim, jurusan;
@Override
public String toString (){
return "Nama saya " + nama + ", dengan nim "
+ nim + " jurusan " + jurusan ; }
public Mahasiswa(String nama, String nim, String jurusan) {
this.nama = nama;
this.nim = nim;
this.jurusan = jurusan;
} }
public class toString {
public static void main (String []args){
Mahasiswa data = new Mahasiswa ("Rani", "111215",
"TI");
System.out.println (data);
} }
8 method toString.
Output:
2. //lengkapi program berikut //NilaiMHS.java
import java.io.*;
public class NilaiMHS { private double uas, uts;
private int password;
public static String bacainputan() { String baca= " ";
InputStreamReader input = new InputStreamReader (System.in);
BufferedReader buf = new BufferedReader (input);
try {
baca = buf.readLine();
}catch ( IOException e ){
System.out.println("Error!");
}
return baca;
}
. . . //lengkapi public void cetak() {
. . . //lengkapi
}
public void getNilai(){
System.out.print("Masukkan password: ");
password=Integer.parseInt(bacainputan());
if (password== 123) { . . . //lengkapi cetak();
} else {
System.out.println("Password salah ");
} } }
9 // DemoNilaiMhs.java
public class DemoNilaiMhs {
public static void main(String[]args){
NilaiMHS nilai = new NilaiMHS(6.5,7.9);
. . .//lengkapi }
}
Output:
E. RANGKUMAN
Enkapsulasi merupakan suatu cara pembungkusan data dan method yang menyusun suatu kelas sehingga kelas dapat dipandang sebagai suatu modul dan cara bagaimana menyembunyikan informasi detail dari suatu class (information hiding). Terdapat 3 jenis pengaksesan variabel: variabel lokal, variabel instance, variabel kelas/static. Hak akses modifiers: public, private, protected. Atribut memiliki hak akses private dan akan digunakan pada kelas lain, maka wajib membuat getter atau setter, sesuai kebutuhan.
F. LATIHAN (PILIHAN GANDA)
1. Dibawah ini yang termasuk ke dalam akses modifier adalah adalah a. lokal
b. public c. instance d. static e. return
2. Variabel yang dideklarasikan dalam kelas atau secara global, namun di luar method atau blok, disebut dengan variabel?
a. lokal b. public c. instance d. static e. return
10 Perhatikan code dibawah ini !
3. Berdasarkan code di atas yang termasuk ke dalam variabel instance adalah
a. hobi = “membaca”;
b. int seri = 8;
c. latihan.novel();
d. variabel latihan = new variabel ();
e. public static String hobi;
4. Manakah format deklarasi setter yang benar?
a. public <tipe_data_atribut> setNamaAtribut(){
return <nama_atribut>;
}
b. public void
setNamaAtribut(<parameter_input_atribut>) {
this.<nama_atribut> = <parameter_input_atribut>;
}
c. public setNamaAtribut(<tipe_data_atribut>){
return <nama_atribut>;
}
d. public void setNamaAtribut () {
this.<nama_atribut> = <parameter_input_atribut>;
}
e. public setNamaAtribut(){
return <nama_atribut>;
}
5. Kata kunci yang digunakan mengakses instance variable yang dibiaskan oleh parameter adalah
a. static
11 b. void
c. get d. this e. set