際際滷

際際滷Share a Scribd company logo
LAPORAN PRATIKUM IV 
PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK 
ENCAPSULATION 
Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek 
Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom 
Asisten Praktikum: 
Jevri Tri Ardiansyah 
Robi Wahyudi 
Oleh: 
Gisra Rahmadhita 
130533608259 
S1 PTI 2013 Offering B 
UNIVERSITAS NEGERI MALANG 
FAKULTAS TEKNIK 
JURUSAN TEKNIK ELEKTRO 
S1 PENDIDIKAN TEKNIK INFORMATIKA 
OKTOBER, 2014
Encapsulation 
A. TUJUAN 
1. Mahasiswa mampu memahami dan menggunakan konsep Encapsulation dalam 
pemrograman java. 
2. Mendefinisikan method assessor dan mutator 
3. Menerapkan konsep penyembunyian data 
4. Menerapkan enkapsulasi dalam pemrograman berbasis objek 
B. DASAR TEORI 
1. Encapsulation(Enkapsulasi) 
Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari 
suatu class.Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat 
mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya 
metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap 
objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat 
berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung 
kepada representasi dalam objek tersebut. 
Berikut ini keuntungan dari prinsip encapsulation : 
 Bersifat independen. Suatu modul yang terenkapsulasi dengan baik akan bersifat 
independen dari yang lain. Sehingga dapat digunakan pada bagian manapun dari 
program. 
 Bersifat transparan. Jika Anda melakukan modifikasi pada suatu modul, maka 
perubahan tersebut akan dirasakan oleh semua bagian yang menggunakan modul 
tersebut. 
 Menghindari dari efek yang diluar perencanaan. Modul yang terenkapsulasi dengan 
baik hanya akan berinteraksi dengan bagian program melalui variable input dan 
output yang telah didefinisikan sebelumnya. Sehingga dapat mengurangi 
kemungkinan bug.
Dua hal yang mendasar dalam enkapsulasi, yakni : 
a. Information Hiding 
Adalah proses yang menyembunyikan informasi dari suatu class sehingga 
class tersebut tidak dapat diakses dari luar. Yaitu dengan memberikan akses 
kontrol private ketika mendeklarasikan atribut atau method. 
b. Interface to Acces data 
Adalah cara melalukan perubahan terhadap atribut yang di information 
hiding yaitu dengan membuat suatu interface berupa method untuk 
menginisialisasi atau merubah nilai dari suatu atribut tersebut. 
2. Mutator dan Accessor method 
a. Accessor Methods 
Digunakan untuk membaca nilai variabel pada class, baik berupa instance 
maupun static. 
b. Mutator Methods 
Digunakan untuk mengubah atau memberi nilai variable pada class, baik 
berupa instance maupun static. 
C. LATIHAN 
1. Latihan 1 
Bus 
- penumpang : int 
- maxPenumpang : 
int 
+ cetak() 
a. Script class Bus.java 
public class Bus { 
public int penumpang; 
public int maxPenumpang; 
public void cetak(){ 
System.out.println("Penumpang Bus sekarang adalah 
"+penumpang); 
System.out.println("Penumpang maksimum seharusnya 
adalah "+maxPenumpang); 
} 
}
b. Script class UjiBus.java 
public class UjiBus { 
public static void main(String[] args){ 
//membuat objek busMini dari kelas Bus 
Bus busMini =new Bus(); 
//memasukkan nilai jumlah penumpang dan penumpang maksimal 
ke dalam 
//objek busMini 
busMini.penumpang =5; 
busMini.maxPenumpang =15; 
//memanggil method cetak pada kelas Bus 
busMini.cetak(); 
//menambahkan penumpang pada busMini 
busMini.penumpang = busMini.penumpang +5; 
//memanggil method cetak pada kelas Bus 
busMini.cetak(); 
//mengurangi jumlah penumpang pada busMini 
busMini.penumpang = busMini.penumpang -2; 
busMini.cetak(); 
//menambahkan jumlah penumpang pada busMini 
busMini.penumpang = busMini.penumpang +8; 
busMini.cetak(); 
} 
} 
c. Output program hasil kompilasi 
d. Perhatikan jumlah penumpang Bus terakhir dengan jumlah 
penumpang maksimum. Mengapa bisa demikian? 
Pada program menampilkan penumpang yang overload karena pada 
penjumlahan penumpang tidak ada kondisi untuk membatasi jumlah 
penumpang. Karena dari hasil penjumlahan statement kedua ialah 8. Dan 
nilai 8 dijumlahkan 8 maka akan menghasilkan nilai 16, karena pada 
statement ke 4 berisi penumpang sekarang dijumlahkan 8 nilainya. Hal 
inilah yang mengakibatkan bus overload. 
e. Deskripsi Program 
Dalam program terjadi kelebihan nilai pada variabel penumpang karena 
tidak adanya metode untuk membatasi kelas lain (UjiBus) untuk mengelola 
variabel penumpang sehingga dapat mengubah nilai sembarangan pada
atribut penumpang pada kelas Bus. Selain itu, karena tipe variabel tersebut 
public, sehingga dapat diakses oleh kelas lain. 
2. Latihan 2 
Bus 
- penumpang : int 
- maxPenumpang : int 
+ Bus(maxPenumpang : int) 
+ addPenumpang(penumpang : int) 
+ cetak() 
a. Script class Bus.java 
public class Bus { 
Private int penumpang; 
Private int maxPenumpang; 
//konstruksi kelas Bus 
public Bus(int maxPenumpang){ 
this.maxPenumpang = maxPenumpang; 
penumpang =0; 
} 
//method mutator untuk menambahkan penumpang 
public void addPenumpang(int penumpang){ 
int temp; 
temp =this.penumpang+penumpang; 
if(temp >= maxPenumpang){ 
System.out.println("Penumpang melebihi kuota"); 
}else{ 
this.penumpang = temp; 
} 
} 
Public void cetak(){ 
System.out.println("Penumpang Bus sekarang adalah 
"+penumpang); 
System.out.println("Penumpang maksimum seharusnya adalah 
"+maxPenumpang); 
} 
} 
b. Output Program (diakses dari UjiBus)
c. Beri Penjelasan point b! 
Saat kelas UjiBus dijalankan, maka akan terdapat beberapa error. Karena 
variable penumpang dan maxPenumpang di kelas Bus telah dirubah 
menjadi private, maka kelas UjiBus tidak dapat secara langsung merubah 
nilai dari variable private tersebut. Maka dari itu diperlukan method 
mutator pada kelas Bus untuk dapat mengakses variabel yang diprivate 
(method addPenumpang) sekaligus memberikan kondisi agar tidak terjadi 
overload penumpang. 
d. Script Class UjiBus.java 
public class UjiBus { 
public static void main (String[] args){ 
//membuat objek busBesar dari class Bus 
Bus busBesar =new Bus(40); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.addPenumpang(15);//menambahkan 15 penumpang 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.addPenumpang(5); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.addPenumpang(26);//menambahkan 26 penumpang 
busBesar.cetak(); 
} 
} 
e. Output Program dari class yang sudah dirubah 
f. Deskripsi dan Kesimpulan 
Pada program diatas kleas UjiBus akan memanggil kelas Bus, 
kelas tersebut akan memanggil method yang diperlukan. Karena pada 
kelas Bus terdapat variabel bertipe private maka untuk mengaksesnya 
harus memakai method baru bertipe asesor/mutator sehingga variabel 
tersebut dapat diakses. Dan nilai atributnya dapat kita rubah pada kelas 
lain (UjiBus). 
Jadi metode enkapsulasi, suatu attribute dalam kelas akan 
disembunyikan (private) sehingga tidak dapat langsung diakses oleh kelas 
lain. Untuk mengakses atau merubah nilai attribute tersebut, dibutuhkan 
sebuah method baik assessor maupun mutator.
3. Latihan 3 
a. Tambahkan method getPenumpang pada class Bus. Tambahkan 
aturan untuk mengakses data penumpang baru ke dalam method 
getPenumpang. Aturan yang ditambahkan memuat kode 
akses(password). Jika password benar, maka data penumpang yang 
baru ditambahkan dan ditampilkan, jika password salah, maka ada 
peringatan bahwa password salah. 
Bus 
- penumpang : int 
- maxPenumpang : int 
- penumpangBaru : int 
+ Bus(maxPenumpang : int) 
+ addPenumpang(penumpang : int) 
+ getPenumpang(password : int) : int 
+ cetak() 
b. Script class Bus 
public class Bus { 
private int penumpang; 
private int maxPenumpang; 
private int penumpangBaru; 
//konstruksi kelas Bus 
public Bus(int maxPenumpang){ 
this.maxPenumpang = maxPenumpang; 
penumpang =0; 
} 
//method mutator untuk menambahkan penumpang 
public void addPenumpang(int penumpang){ 
int temp; 
temp =this.penumpang+penumpang; 
if(temp >= maxPenumpang){ 
System.out.println("Penumpang 
melebihi kuota"); 
}else{ 
this.penumpang = temp; 
} 
} 
//minta password 
public void getPenumpang(int password){ 
if (password==123){ 
System.out.println("nPassword Benar"); 
addPenumpang(15); 
} 
else{ 
System.out.println("nPassword Salah!!!"); 
} 
}
public void cetak(){ 
System.out.println("Penumpang Bus sekarang adalah 
"+penumpang); 
System.out.println("Penumpang maksimum seharusnya 
adalah "+maxPenumpang); 
} 
} 
c. Buat class UjiBus untuk menguji methot getPenumpang tersebut. 
public class UjiBus { 
public static void main (String[] args){ 
int password; 
//membuat objek busBesar dari class Bus 
Bus busBesar =new Bus(40); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.getPenumpang(123); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.getPenumpang(121); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.getPenumpang(123); 
busBesar.cetak(); 
} 
} 
d. Output (hasil) Program 
e. Deskripsi Program 
Program diatas berguna untuk memproteksi penambahan penumpang pada 
kelas Bus, namun dengan fitur proteksi berupa password. Jika password 
yang dimasukkan benar maka akan menambahkan jumlah penumpang, 
namun jika salah jumlah penumpang akan tetap sama (tanpa ada 
penjumalahan). Hal ini dikarenakan pada method getPenumpang terdapat 
autentikasi berupa parameter password. Jika passwordnya benar (123), 
maka method tersebut akan memanggil method addPenumpang yang
berfungsi menambahkan nilai variabel penumpang. Sehingga jumlah 
penumpang bertambah 
D. TUGAS PRAKTIKUM 
A. Bus 
- penumpang : double 
- maxPenumpang : double 
- counter : double 
- penumpngBaru : double 
+ Bus(maxPenumpang : double) 
+ addPenumpang(penumpang : 
double) 
+ getPenumpang(password : int) : 
double 
+ getAverage() : double 
+ cetak() 
Dari hasil program latihan 3, tambahkan method getAverage() untuk menghitung 
rata-rata berat penumpang yang ditambahkan ! 
a. Script class Bus 
public class Bus { 
private double penumpang; 
private double maxPenumpang; 
private double penumpangBaru; 
private double counter; 
//konstruksi kelas Bus 
public Bus(double maxPenumpang){ 
this.maxPenumpang = maxPenumpang; 
penumpang =0; 
} 
//method mutator untuk menambahkan penumpang 
public void addPenumpang(double penumpang){ 
double temp; 
temp =this.penumpang+penumpang; 
if(temp >= maxPenumpang){ 
System.out.println("Penumpang 
melebihi kuota"); 
}else{ 
this.penumpang = temp; 
counter++; 
} 
} 
//mdoublea password 
public void getPenumpang(double password){ 
if (password==123){ 
System.out.println("nPassword Benar"); 
addPenumpang(15);
} 
else{ 
System.out.println("nPassword Salah!!!"); 
} 
} 
public double getAverage(){ 
return penumpang/counter; 
} 
public void cetak(){ 
System.out.println("Penumpang Bus sekarang adalah 
"+penumpang); 
System.out.println("Penumpang maksimum seharusnya 
adalah "+maxPenumpang); 
} 
} 
b. Buat class UjiBus untuk menguji methot getPenumpang tersebut. 
public class UjiBus { 
public static void main (String[] args){ 
int password; 
//membuat objek busBesar dari class Bus 
Bus busBesar =new Bus(40); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.getPenumpang(123); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.getPenumpang(121); 
busBesar.cetak(); 
//penambahan penumpang 
busBesar.getPenumpang(123); 
busBesar.cetak(); 
System.out.println("Rata-rata Penumpang : 
"+busBesar.getAverage()); 
} 
} 
c. Output (hasil) Program 
d. Deskripsi Program
Pada program diatas, ialah hasil dari penambahan method getAverage() 
pada kelas Bus. Dimana kelas method tersebut akan mencari nilai rata-rata 
penumpang yang naik ke Bus yang didapatkan dari jumlah total 
penumpang bus dibagi dengan counter (jumlah berhenti) 
E. TUGAS RUMAH 
1. Buatlah sebuah class Bola dengan property jari-jari dan method setjarijari(), 
showDiameter(),showLuasPermukaan(), dan showVolume(). Gunakan double 
untuk presisi variable jari-jari dan gunakan library math class untuk 
menggunakan constanta Math.PI. 
Selanjutnya buatlah file testnya dengan urutan langkah, membuat variable 
Jarijari, menciptakan objek Bola, memanggil method showDiameter(), 
showLuasPermukaan(), dan showVolume(). Selanjutnya memanipulasi objek 
yang telah dibuat dengan memanggil method setJarijari() dengan menggunakan 
variable Jarijari yang telah dibuat. Tampilkan lagi hasilnya dengan 
menggunakan method showDiameter(), showLuasPermukaan(), dan 
showVolume(). (Jangan lupa untuk menggunakan konsep enkapsulasi) 
i. Script class Bola.java 
import java.lang.Math; 
public class Bola{ 
private double jarijari; 
public Bola(double jarijari){ 
this.jarijari=jarijari; 
} 
public void setJarijari(double jarijari){ 
this.jarijari=jarijari; 
} 
public void showDiameter(){ 
System.out.println("Diameter Bola : 
"+2*jarijari); 
} 
public void showLuasPermukaan(){ 
System.out.println("Luas Permukaan Bola : 
"+(4/3*Math.PI*Math.pow(jarijari,3))); 
} 
public void showVolume(){ 
System.out.println("Volume Bola : 
"+(4*Math.PI*Math.pow(jarijari,2))); 
} 
}
ii. Script class TestBola.java 
public class MainBola{ 
public static void main(String[]args){ 
double Jarijari=14; 
Bola objekbola=new Bola(7); 
objekbola.showDiameter(); 
objekbola.showLuasPermukaan(); 
objekbola.showVolume(); 
System.out.println("nn"); 
objekbola.setJarijari(Jarijari); //manipulasi 
denganvariabel jari-jari yang dibuat 
objekbola.showDiameter(); 
objekbola.showLuasPermukaan(); 
objekbola.showVolume(); 
} 
} 
iii. Output (hasil) Program 
iv. Deskripsi program 
Program diatas ialah implementasi konsep enkapsulasi pada perhitungan luas 
dan volume bola. Dimana kelas MainBola akan memanggil method 
ShowDiameter untuk menampilkan nilai diameter dari bola, selanjutnya program 
akan memanggil method LuasPermukaan dan ShowVolume untuk menampilkan 
nilai luas permukaan dan volumenya. Setelah itu oleh kelas MainBola nilai jari-jari 
diubah menjadi 14 (pada syntax objekbola.setJarijari(Jarijari);) 
sehingga nilai luas dan volumenya berubah karena nilai variabelnya diganti. 
Konstanta Math P.I digunakan untuk memudahkan operasi matematika seperti 
pangkat (pow) pada program tersebut sehingga memudahkan programmer untuk 
melakukan operasi matematik 
2. Tugas Rumah 2 
Buatlah program sendiri menggunakan konsep enkapsulasi dengan tema 
bidang percetakan! Susunan pengerjaan kotak encapsulasi, program, hasil 
output program dan berikan penjelasan singkat!
a. Script Percetakan.java 
public class Percetakan{ 
private int biaya; 
public Percetakan(int biaya){ 
this.biaya=biaya; 
} 
public int getBiayaFC(){ 
return this.biaya; 
} 
public int getBiayaP(){ 
return (this.biaya+50); 
} 
public int getBiayaPW(){ 
return (this.biaya+150); 
} 
public void setBiaya(int biaya,int password){ 
if (password==123) 
{ 
this.biaya=biaya; 
System.out.println("Penggantian harga dasar 
SUKSESnnn"); 
System.out.println("Harga Saat Ini : Rp "+biaya); 
} 
else { 
System.out.println("Password Salah!! Silahkan 
Ulanginnn"); 
} 
} 
/*public int Fotocopy(int jumlah){ 
int total=jumlah*biaya*8/10; 
return total; 
} 
public int Print(int jumlah){ 
int total=jumlah*biaya*9/10; 
return total; 
} 
public int Warna(int jumlah){ 
int total=jumlah*biaya*29/30; 
return total;*/ 
} 
b. Script TestPercetakan.java 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
public class TestPercetakan { 
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; 
} 
public static void main(String[]args){ 
int menu=0; 
int banyak; 
int pass; 
int harga; 
Percetakan cetakku =new Percetakan(100); //harga dasar 
100 rupiah 
while(menu!=4){ 
System.out.print("nn======= Percetakan Cantika 
========n"+ 
"1. Hitung Biaya Printn"+ 
"2. Hitung Biaya Fotocopyn"+ 
"3. Ganti Harga Dasarn"+ 
"4. Keluarn"+ 
"Pilih Menu : "); 
menu = Integer.parseInt(bacaInputan()); 
if(menu ==1){ 
System.out.println("Hitung Biaya Print"); 
System.out.print("Masukkan jumlah halaman yang 
dicetak :"); 
banyak = Integer.parseInt(bacaInputan()); 
System.out.println("Harga total pencetakan 
"+banyak+" halaman adalah : Rp. "+banyak*cetakku.getBiayaP()); 
} 
else if(menu ==2){ 
System.out.println("Hitung Biaya Fotocopy"); 
System.out.print("Masukkan jumlah halaman yang 
dicopy :"); 
banyak = Integer.parseInt(bacaInputan()); 
System.out.println("Harga total Foto Copy 
"+banyak+" halaman adalah : Rp. "+banyak*cetakku.getBiayaFC()); 
} 
else if(menu ==3){ 
System.out.println("Ganti Harga Dasar"); 
System.out.println("Harga Sebelumnya : Rp 
"+cetakku.getBiayaFC()); 
System.out.print("Masukkan Password : "); 
pass = Integer.parseInt(bacaInputan()); 
System.out.print("Masukkan Harga Baru : "); 
harga = Integer.parseInt(bacaInputan()); 
cetakku.setBiaya(harga, pass); 
} 
if(menu ==4){ 
} 
else{ 
System.out.println("nnMenu yang dimaksud tidak 
tersedia"); 
}
} 
}} 
c. Output (hasil) program
d. Deskripsi 
Di dalam program ini untuk menghitung harga yang harus dibayarkan oleh 
konsumen dari percetakan cantika. Harga dasar dari foto copy ialah 100 rupiah 
yang dilihat pada parameter method Percetakan pada inisialisasi kelas 
Percetakan. Kemudian user dapat memilih menu 1-4 dimana jika memilih 
menu 1 maka akan menghitung biaya print dengan harga Rp. 150,- (harga 
default) dan harga 100 setiap foto copy perlembarnya karena disetting oleh 
kelas Percetakan harga print ialah harga dasar (foto kopi) ditambahkan Rp. 
50,-. 
Pada proses penggantian harga dasar user diminta memasukkan password, jika 
password benar maka dapat mengubah harga dasar sesuai keinginannya karena 
pada kelas TestPercetakan memakai method mutator 
(cetakku.setBiaya(harga, pass);) untuk mengubah harga dasar sehingga 
ketika harga dasar berubah, harga fotokopi dan print berubah pula sesuai yang 
disetting (harga print ialah harga dasar ditambahkan Rp. 50,-) 
F. KESIMPULAN 
 Enkapsulasi merupakan metode pengkapsulan yang digunakan untuk melindungi 
data pada satu class, dalam hal ini dengan cara mmenggunakan atribut private pada 
variabel. 
 Untuk mengakses variabel private dalam suatu class, kita harus melalui method 
public 
 Class yang mengakses class yang sudah terenkapsulasi diberikan wewenang untuk 
mengakses atribut  atribut bertipe public saja. 
 Dua hal yang mendasar dalam enkapsulasi, yakni : 
 Information Hiding adalah proses yang menyembunyikan informasi dari 
suatu classsehingga class tersebut tidak dapat diakses dari luar. 
 Interface to Acces data adalah cara melalukan perubahan terhadap atribut 
yang di information hiding 
 Accessor Methods, digunakan untuk membaca nilai variabel pada class, baik 
berupa instance maupun static. 
 Mutator Methods, digunakan untuk mengubah atau memberi nilai variable pada 
class, baik berupa instance maupun static.
G. DAFTAR PUSTAKA 
 Modul IV EncapsulationPraktikum Pemrograman Berbasis Objek. Pendidikan 
Teknik Informatika  Teknik Elektro  Universitas Negeri Malang  2014.

More Related Content

Laporan PBO Modul 4

  • 1. LAPORAN PRATIKUM IV PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK ENCAPSULATION Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom Asisten Praktikum: Jevri Tri Ardiansyah Robi Wahyudi Oleh: Gisra Rahmadhita 130533608259 S1 PTI 2013 Offering B UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO S1 PENDIDIKAN TEKNIK INFORMATIKA OKTOBER, 2014
  • 2. Encapsulation A. TUJUAN 1. Mahasiswa mampu memahami dan menggunakan konsep Encapsulation dalam pemrograman java. 2. Mendefinisikan method assessor dan mutator 3. Menerapkan konsep penyembunyian data 4. Menerapkan enkapsulasi dalam pemrograman berbasis objek B. DASAR TEORI 1. Encapsulation(Enkapsulasi) Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class.Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut. Berikut ini keuntungan dari prinsip encapsulation : Bersifat independen. Suatu modul yang terenkapsulasi dengan baik akan bersifat independen dari yang lain. Sehingga dapat digunakan pada bagian manapun dari program. Bersifat transparan. Jika Anda melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan oleh semua bagian yang menggunakan modul tersebut. Menghindari dari efek yang diluar perencanaan. Modul yang terenkapsulasi dengan baik hanya akan berinteraksi dengan bagian program melalui variable input dan output yang telah didefinisikan sebelumnya. Sehingga dapat mengurangi kemungkinan bug.
  • 3. Dua hal yang mendasar dalam enkapsulasi, yakni : a. Information Hiding Adalah proses yang menyembunyikan informasi dari suatu class sehingga class tersebut tidak dapat diakses dari luar. Yaitu dengan memberikan akses kontrol private ketika mendeklarasikan atribut atau method. b. Interface to Acces data Adalah cara melalukan perubahan terhadap atribut yang di information hiding yaitu dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut. 2. Mutator dan Accessor method a. Accessor Methods Digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. b. Mutator Methods Digunakan untuk mengubah atau memberi nilai variable pada class, baik berupa instance maupun static. C. LATIHAN 1. Latihan 1 Bus - penumpang : int - maxPenumpang : int + cetak() a. Script class Bus.java public class Bus { public int penumpang; public int maxPenumpang; public void cetak(){ System.out.println("Penumpang Bus sekarang adalah "+penumpang); System.out.println("Penumpang maksimum seharusnya adalah "+maxPenumpang); } }
  • 4. b. Script class UjiBus.java public class UjiBus { public static void main(String[] args){ //membuat objek busMini dari kelas Bus Bus busMini =new Bus(); //memasukkan nilai jumlah penumpang dan penumpang maksimal ke dalam //objek busMini busMini.penumpang =5; busMini.maxPenumpang =15; //memanggil method cetak pada kelas Bus busMini.cetak(); //menambahkan penumpang pada busMini busMini.penumpang = busMini.penumpang +5; //memanggil method cetak pada kelas Bus busMini.cetak(); //mengurangi jumlah penumpang pada busMini busMini.penumpang = busMini.penumpang -2; busMini.cetak(); //menambahkan jumlah penumpang pada busMini busMini.penumpang = busMini.penumpang +8; busMini.cetak(); } } c. Output program hasil kompilasi d. Perhatikan jumlah penumpang Bus terakhir dengan jumlah penumpang maksimum. Mengapa bisa demikian? Pada program menampilkan penumpang yang overload karena pada penjumlahan penumpang tidak ada kondisi untuk membatasi jumlah penumpang. Karena dari hasil penjumlahan statement kedua ialah 8. Dan nilai 8 dijumlahkan 8 maka akan menghasilkan nilai 16, karena pada statement ke 4 berisi penumpang sekarang dijumlahkan 8 nilainya. Hal inilah yang mengakibatkan bus overload. e. Deskripsi Program Dalam program terjadi kelebihan nilai pada variabel penumpang karena tidak adanya metode untuk membatasi kelas lain (UjiBus) untuk mengelola variabel penumpang sehingga dapat mengubah nilai sembarangan pada
  • 5. atribut penumpang pada kelas Bus. Selain itu, karena tipe variabel tersebut public, sehingga dapat diakses oleh kelas lain. 2. Latihan 2 Bus - penumpang : int - maxPenumpang : int + Bus(maxPenumpang : int) + addPenumpang(penumpang : int) + cetak() a. Script class Bus.java public class Bus { Private int penumpang; Private int maxPenumpang; //konstruksi kelas Bus public Bus(int maxPenumpang){ this.maxPenumpang = maxPenumpang; penumpang =0; } //method mutator untuk menambahkan penumpang public void addPenumpang(int penumpang){ int temp; temp =this.penumpang+penumpang; if(temp >= maxPenumpang){ System.out.println("Penumpang melebihi kuota"); }else{ this.penumpang = temp; } } Public void cetak(){ System.out.println("Penumpang Bus sekarang adalah "+penumpang); System.out.println("Penumpang maksimum seharusnya adalah "+maxPenumpang); } } b. Output Program (diakses dari UjiBus)
  • 6. c. Beri Penjelasan point b! Saat kelas UjiBus dijalankan, maka akan terdapat beberapa error. Karena variable penumpang dan maxPenumpang di kelas Bus telah dirubah menjadi private, maka kelas UjiBus tidak dapat secara langsung merubah nilai dari variable private tersebut. Maka dari itu diperlukan method mutator pada kelas Bus untuk dapat mengakses variabel yang diprivate (method addPenumpang) sekaligus memberikan kondisi agar tidak terjadi overload penumpang. d. Script Class UjiBus.java public class UjiBus { public static void main (String[] args){ //membuat objek busBesar dari class Bus Bus busBesar =new Bus(40); busBesar.cetak(); //penambahan penumpang busBesar.addPenumpang(15);//menambahkan 15 penumpang busBesar.cetak(); //penambahan penumpang busBesar.addPenumpang(5); busBesar.cetak(); //penambahan penumpang busBesar.addPenumpang(26);//menambahkan 26 penumpang busBesar.cetak(); } } e. Output Program dari class yang sudah dirubah f. Deskripsi dan Kesimpulan Pada program diatas kleas UjiBus akan memanggil kelas Bus, kelas tersebut akan memanggil method yang diperlukan. Karena pada kelas Bus terdapat variabel bertipe private maka untuk mengaksesnya harus memakai method baru bertipe asesor/mutator sehingga variabel tersebut dapat diakses. Dan nilai atributnya dapat kita rubah pada kelas lain (UjiBus). Jadi metode enkapsulasi, suatu attribute dalam kelas akan disembunyikan (private) sehingga tidak dapat langsung diakses oleh kelas lain. Untuk mengakses atau merubah nilai attribute tersebut, dibutuhkan sebuah method baik assessor maupun mutator.
  • 7. 3. Latihan 3 a. Tambahkan method getPenumpang pada class Bus. Tambahkan aturan untuk mengakses data penumpang baru ke dalam method getPenumpang. Aturan yang ditambahkan memuat kode akses(password). Jika password benar, maka data penumpang yang baru ditambahkan dan ditampilkan, jika password salah, maka ada peringatan bahwa password salah. Bus - penumpang : int - maxPenumpang : int - penumpangBaru : int + Bus(maxPenumpang : int) + addPenumpang(penumpang : int) + getPenumpang(password : int) : int + cetak() b. Script class Bus public class Bus { private int penumpang; private int maxPenumpang; private int penumpangBaru; //konstruksi kelas Bus public Bus(int maxPenumpang){ this.maxPenumpang = maxPenumpang; penumpang =0; } //method mutator untuk menambahkan penumpang public void addPenumpang(int penumpang){ int temp; temp =this.penumpang+penumpang; if(temp >= maxPenumpang){ System.out.println("Penumpang melebihi kuota"); }else{ this.penumpang = temp; } } //minta password public void getPenumpang(int password){ if (password==123){ System.out.println("nPassword Benar"); addPenumpang(15); } else{ System.out.println("nPassword Salah!!!"); } }
  • 8. public void cetak(){ System.out.println("Penumpang Bus sekarang adalah "+penumpang); System.out.println("Penumpang maksimum seharusnya adalah "+maxPenumpang); } } c. Buat class UjiBus untuk menguji methot getPenumpang tersebut. public class UjiBus { public static void main (String[] args){ int password; //membuat objek busBesar dari class Bus Bus busBesar =new Bus(40); busBesar.cetak(); //penambahan penumpang busBesar.getPenumpang(123); busBesar.cetak(); //penambahan penumpang busBesar.getPenumpang(121); busBesar.cetak(); //penambahan penumpang busBesar.getPenumpang(123); busBesar.cetak(); } } d. Output (hasil) Program e. Deskripsi Program Program diatas berguna untuk memproteksi penambahan penumpang pada kelas Bus, namun dengan fitur proteksi berupa password. Jika password yang dimasukkan benar maka akan menambahkan jumlah penumpang, namun jika salah jumlah penumpang akan tetap sama (tanpa ada penjumalahan). Hal ini dikarenakan pada method getPenumpang terdapat autentikasi berupa parameter password. Jika passwordnya benar (123), maka method tersebut akan memanggil method addPenumpang yang
  • 9. berfungsi menambahkan nilai variabel penumpang. Sehingga jumlah penumpang bertambah D. TUGAS PRAKTIKUM A. Bus - penumpang : double - maxPenumpang : double - counter : double - penumpngBaru : double + Bus(maxPenumpang : double) + addPenumpang(penumpang : double) + getPenumpang(password : int) : double + getAverage() : double + cetak() Dari hasil program latihan 3, tambahkan method getAverage() untuk menghitung rata-rata berat penumpang yang ditambahkan ! a. Script class Bus public class Bus { private double penumpang; private double maxPenumpang; private double penumpangBaru; private double counter; //konstruksi kelas Bus public Bus(double maxPenumpang){ this.maxPenumpang = maxPenumpang; penumpang =0; } //method mutator untuk menambahkan penumpang public void addPenumpang(double penumpang){ double temp; temp =this.penumpang+penumpang; if(temp >= maxPenumpang){ System.out.println("Penumpang melebihi kuota"); }else{ this.penumpang = temp; counter++; } } //mdoublea password public void getPenumpang(double password){ if (password==123){ System.out.println("nPassword Benar"); addPenumpang(15);
  • 10. } else{ System.out.println("nPassword Salah!!!"); } } public double getAverage(){ return penumpang/counter; } public void cetak(){ System.out.println("Penumpang Bus sekarang adalah "+penumpang); System.out.println("Penumpang maksimum seharusnya adalah "+maxPenumpang); } } b. Buat class UjiBus untuk menguji methot getPenumpang tersebut. public class UjiBus { public static void main (String[] args){ int password; //membuat objek busBesar dari class Bus Bus busBesar =new Bus(40); busBesar.cetak(); //penambahan penumpang busBesar.getPenumpang(123); busBesar.cetak(); //penambahan penumpang busBesar.getPenumpang(121); busBesar.cetak(); //penambahan penumpang busBesar.getPenumpang(123); busBesar.cetak(); System.out.println("Rata-rata Penumpang : "+busBesar.getAverage()); } } c. Output (hasil) Program d. Deskripsi Program
  • 11. Pada program diatas, ialah hasil dari penambahan method getAverage() pada kelas Bus. Dimana kelas method tersebut akan mencari nilai rata-rata penumpang yang naik ke Bus yang didapatkan dari jumlah total penumpang bus dibagi dengan counter (jumlah berhenti) E. TUGAS RUMAH 1. Buatlah sebuah class Bola dengan property jari-jari dan method setjarijari(), showDiameter(),showLuasPermukaan(), dan showVolume(). Gunakan double untuk presisi variable jari-jari dan gunakan library math class untuk menggunakan constanta Math.PI. Selanjutnya buatlah file testnya dengan urutan langkah, membuat variable Jarijari, menciptakan objek Bola, memanggil method showDiameter(), showLuasPermukaan(), dan showVolume(). Selanjutnya memanipulasi objek yang telah dibuat dengan memanggil method setJarijari() dengan menggunakan variable Jarijari yang telah dibuat. Tampilkan lagi hasilnya dengan menggunakan method showDiameter(), showLuasPermukaan(), dan showVolume(). (Jangan lupa untuk menggunakan konsep enkapsulasi) i. Script class Bola.java import java.lang.Math; public class Bola{ private double jarijari; public Bola(double jarijari){ this.jarijari=jarijari; } public void setJarijari(double jarijari){ this.jarijari=jarijari; } public void showDiameter(){ System.out.println("Diameter Bola : "+2*jarijari); } public void showLuasPermukaan(){ System.out.println("Luas Permukaan Bola : "+(4/3*Math.PI*Math.pow(jarijari,3))); } public void showVolume(){ System.out.println("Volume Bola : "+(4*Math.PI*Math.pow(jarijari,2))); } }
  • 12. ii. Script class TestBola.java public class MainBola{ public static void main(String[]args){ double Jarijari=14; Bola objekbola=new Bola(7); objekbola.showDiameter(); objekbola.showLuasPermukaan(); objekbola.showVolume(); System.out.println("nn"); objekbola.setJarijari(Jarijari); //manipulasi denganvariabel jari-jari yang dibuat objekbola.showDiameter(); objekbola.showLuasPermukaan(); objekbola.showVolume(); } } iii. Output (hasil) Program iv. Deskripsi program Program diatas ialah implementasi konsep enkapsulasi pada perhitungan luas dan volume bola. Dimana kelas MainBola akan memanggil method ShowDiameter untuk menampilkan nilai diameter dari bola, selanjutnya program akan memanggil method LuasPermukaan dan ShowVolume untuk menampilkan nilai luas permukaan dan volumenya. Setelah itu oleh kelas MainBola nilai jari-jari diubah menjadi 14 (pada syntax objekbola.setJarijari(Jarijari);) sehingga nilai luas dan volumenya berubah karena nilai variabelnya diganti. Konstanta Math P.I digunakan untuk memudahkan operasi matematika seperti pangkat (pow) pada program tersebut sehingga memudahkan programmer untuk melakukan operasi matematik 2. Tugas Rumah 2 Buatlah program sendiri menggunakan konsep enkapsulasi dengan tema bidang percetakan! Susunan pengerjaan kotak encapsulasi, program, hasil output program dan berikan penjelasan singkat!
  • 13. a. Script Percetakan.java public class Percetakan{ private int biaya; public Percetakan(int biaya){ this.biaya=biaya; } public int getBiayaFC(){ return this.biaya; } public int getBiayaP(){ return (this.biaya+50); } public int getBiayaPW(){ return (this.biaya+150); } public void setBiaya(int biaya,int password){ if (password==123) { this.biaya=biaya; System.out.println("Penggantian harga dasar SUKSESnnn"); System.out.println("Harga Saat Ini : Rp "+biaya); } else { System.out.println("Password Salah!! Silahkan Ulanginnn"); } } /*public int Fotocopy(int jumlah){ int total=jumlah*biaya*8/10; return total; } public int Print(int jumlah){ int total=jumlah*biaya*9/10; return total; } public int Warna(int jumlah){ int total=jumlah*biaya*29/30; return total;*/ } b. Script TestPercetakan.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class TestPercetakan { public static String bacaInputan(){ String baca ="";
  • 14. InputStreamReader input =new InputStreamReader(System.in); BufferedReader buf =new BufferedReader(input); try{ baca = buf.readLine(); }catch(IOException e){ System.out.println("Error!"); } return baca; } public static void main(String[]args){ int menu=0; int banyak; int pass; int harga; Percetakan cetakku =new Percetakan(100); //harga dasar 100 rupiah while(menu!=4){ System.out.print("nn======= Percetakan Cantika ========n"+ "1. Hitung Biaya Printn"+ "2. Hitung Biaya Fotocopyn"+ "3. Ganti Harga Dasarn"+ "4. Keluarn"+ "Pilih Menu : "); menu = Integer.parseInt(bacaInputan()); if(menu ==1){ System.out.println("Hitung Biaya Print"); System.out.print("Masukkan jumlah halaman yang dicetak :"); banyak = Integer.parseInt(bacaInputan()); System.out.println("Harga total pencetakan "+banyak+" halaman adalah : Rp. "+banyak*cetakku.getBiayaP()); } else if(menu ==2){ System.out.println("Hitung Biaya Fotocopy"); System.out.print("Masukkan jumlah halaman yang dicopy :"); banyak = Integer.parseInt(bacaInputan()); System.out.println("Harga total Foto Copy "+banyak+" halaman adalah : Rp. "+banyak*cetakku.getBiayaFC()); } else if(menu ==3){ System.out.println("Ganti Harga Dasar"); System.out.println("Harga Sebelumnya : Rp "+cetakku.getBiayaFC()); System.out.print("Masukkan Password : "); pass = Integer.parseInt(bacaInputan()); System.out.print("Masukkan Harga Baru : "); harga = Integer.parseInt(bacaInputan()); cetakku.setBiaya(harga, pass); } if(menu ==4){ } else{ System.out.println("nnMenu yang dimaksud tidak tersedia"); }
  • 15. } }} c. Output (hasil) program
  • 16. d. Deskripsi Di dalam program ini untuk menghitung harga yang harus dibayarkan oleh konsumen dari percetakan cantika. Harga dasar dari foto copy ialah 100 rupiah yang dilihat pada parameter method Percetakan pada inisialisasi kelas Percetakan. Kemudian user dapat memilih menu 1-4 dimana jika memilih menu 1 maka akan menghitung biaya print dengan harga Rp. 150,- (harga default) dan harga 100 setiap foto copy perlembarnya karena disetting oleh kelas Percetakan harga print ialah harga dasar (foto kopi) ditambahkan Rp. 50,-. Pada proses penggantian harga dasar user diminta memasukkan password, jika password benar maka dapat mengubah harga dasar sesuai keinginannya karena pada kelas TestPercetakan memakai method mutator (cetakku.setBiaya(harga, pass);) untuk mengubah harga dasar sehingga ketika harga dasar berubah, harga fotokopi dan print berubah pula sesuai yang disetting (harga print ialah harga dasar ditambahkan Rp. 50,-) F. KESIMPULAN Enkapsulasi merupakan metode pengkapsulan yang digunakan untuk melindungi data pada satu class, dalam hal ini dengan cara mmenggunakan atribut private pada variabel. Untuk mengakses variabel private dalam suatu class, kita harus melalui method public Class yang mengakses class yang sudah terenkapsulasi diberikan wewenang untuk mengakses atribut atribut bertipe public saja. Dua hal yang mendasar dalam enkapsulasi, yakni : Information Hiding adalah proses yang menyembunyikan informasi dari suatu classsehingga class tersebut tidak dapat diakses dari luar. Interface to Acces data adalah cara melalukan perubahan terhadap atribut yang di information hiding Accessor Methods, digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Mutator Methods, digunakan untuk mengubah atau memberi nilai variable pada class, baik berupa instance maupun static.
  • 17. G. DAFTAR PUSTAKA Modul IV EncapsulationPraktikum Pemrograman Berbasis Objek. Pendidikan Teknik Informatika Teknik Elektro Universitas Negeri Malang 2014.