0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
1K tayangan
Modul 4 PBO Encapsulation
Laporan ini membahas praktikum keempat tentang encapsulation pada pemrograman berbasis objek. Terdapat penjelasan teori mengenai encapsulation yang meliputi pengertian, manfaat, dan penentu hak akses. Dilanjutkan dengan latihan-latihan koding yang bertujuan mempraktikkan konsep encapsulation dengan cara menyembunyikan atribut dan membatasi aksesnya.
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
1K tayangan
Modul 4 PBO Encapsulation
Laporan ini membahas praktikum keempat tentang encapsulation pada pemrograman berbasis objek. Terdapat penjelasan teori mengenai encapsulation yang meliputi pengertian, manfaat, dan penentu hak akses. Dilanjutkan dengan latihan-latihan koding yang bertujuan mempraktikkan konsep encapsulation dengan cara menyembunyikan atribut dan membatasi aksesnya.
Oleh: Amadeuz Ezrafel 120533430965 S1 PTI 2013 offering D
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO S1 PENDIDIKAN TEKNIK INFORMATIKA Oktober 2014
Modul Praktikum IV Encapsulation
A. TUJUAN 1. Mahasiswa mampu memahami Encapsulation dalam pemromgraman java. 2. Mahasiswa mampu menggunakan konsep Encapsulation dalam pemromgraman java.
B. DASAR TEORI Pembungkusan variable dan method dalam sebuah objek dalam bagian yang terlindungi inilah yang disebut dengan enkapsulasi. Jadi, enkapsulasi dapat diartikan sebagai bungkusan (wrapper) pelindung program dan data yang sedang diolah. Pembungkusan ini mendefinisikan perilaku dan melindungi program dan data yang sedang diolah agar tidak diakses sembarangan oleh program lain. Manfaat dari proses enkapsulasi adalah: 1. Modularitas Kode sumber dari sebuah objek dapat dikelola secara independen dari kode sumber objek yang lain. 2. Information Hiding Karena ketika dapat menentukan hak akses sebuah variable/method dari objek, dengan demikian kita bisa menyembunyikan informasi yang tidak perlu diketahui objek lain.
Dalam melakukan pembungkusan kode dan data di dalam java terdapat penentu hak akses yang harus diperhatikan. Penentu akses - public Public berarti pengaksesan suatu variable instan atau metode dapat dilakukan dari luar kelas. - private private berarti pengaksesan suatu variable instan atau metode hanya dapat dilakukan di dalam kelas, tidak bisa dari luar kelas. - protected protected berguna untuk mengatur agar suatu variable instan atau metode yang terdapat pada sebuah kelas dapat diakses pada kelas itu sendiri dan sub kelas.
Berikut merupakan keuntungan menerapkan prinsip enkapsulasi: a. Bersifat independen. Suatu modul yang terenkapsulasi dengan baik akan bersifat independen dari modul lainnya sehingga dapat digunakan pada bagian manapun dari program. Ia tidak akan terikat bada bagian tertentu dari program. b. Bersifat transparan. Bila melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan juga oleh bagian pogram yang menggunakan modul tersebut. c. Menghindari efek yang diluar perencanaan. Modul yang terenkapsulasi dengan baik hanya akan berinteraksi dengan bagian program lainnya melalui variable-variabel input/output yang telah didefinisikan sebelumnya. Dengan demikian akan merduksi kemungkinan adanya hasil imbas pemrosesan yang di luar perencanaan semula.
Mutator dan Accesor Method 1. Accesor Method Accessor Method di gunakan untuk membaca nilai variable pada class, baik berupa instance maupun static. Method ini mempunyai return value, biasanya accessor method di mulai dengan penulisan get<nama instance Variable>.Sebagai contoh untuk membaca nama; public class AccessorMethod { private String nama; public String getNama () { return nama; }} Dimana : public : Sebagai access modifier nya, berarti bisa di akses dari luar object class. String : Tipe data return value dari method tersebut bertipe String getNama : Nama dari method tersebut. () : Method tidak memiliki parameter. return nama : Artinya akan ada pengembalian nilai dari nama instance variable ke pemanggilan method. return juga tidak hanya mengembalikan nilai dari nama instance variable saja, akan tetapi jika kita melalukan proses di dalam method tersebut kita bisa return hasil proses tersubut, sebagai contoh : public int getHasil(){ int result=0; result = 10+10; return result; } Get Accessor Penggunakan get{} pada property mirip dengan jika anda menggunaan method getValue() atau getter method pada java, get pasti mengembalikan nilai jadi dalam kalang get harus ada return valuenya. Set Accessor Penggunaan set{} pada property mirip dengan jika anda menggunakan setValue() atau setter method pada java, set digunakan untuk memberi nilai kedalam class variable. Pada C# jika anda memberi nilai pada property maka set{} otomatis dijalankan.
2. Mutator Method Mutator Method di gunakan untuk mengubah nilai variable pada class, baik berupa instance maupun static. Dan variabel tersebut biasanya berupa private. Biasanya mutator method di mulai dengan penulisan set<nama instance Variable>. Contoh pada mutator method : class Vehicle { static final boolean RUN = true; static final boolean STOP = false; ... private String vehicleName; ... public void setVehicleName(String pVehicleName) { vehicleName=pVehicleName; } }
C. LATIHAN Latihan 1
a. Source code I 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 adalah "+maxPenumpang); } }
b. Source code II public class UjiBus{ public static void main(String[] arg){ //membuat objek busMini dari kelas Bus Bus busMini= new Bus(); //memasukan 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
d. Perhatikan jumlah penumpang Bus terakhir dengan jumlah penumpang maksimum. Mengapa bisa demikian? Pada penumpang Bus terakhir jumlah penumpang 16 penumpang, hal ini melebihi jumlah maksimum dari penumpang yang berjumlah 15. Mengapa bisa demikian? Karena tidak adanya encapsulasi dalam program, sehingga nilai pada penjumlahan dari 8 + 8 tetap dihitung dan hasilnya menjadi melebihi batas maksimum penumpang yang seharusnya berjumlah 15 penumpang menjadi 16 penumpang.
Latihan 2
a. Source code I public class Bus2{ private int penumpang; private int maxPenumpang;
public Bus2(int maxPenumpang){ this.maxPenumpang=maxPenumpang; penumpang=0; }
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: "+penumpang); System.out.println("Penumpang max seharusnya: "+maxPenumpang); } }
b. Source Code II public class UjiBus2{ public static void main(String[] args){ Bus2 busBesar = new Bus2(40); busBesar.cetak();
busBesar.addPenumpang(15); busBesar.cetak();
busBesar.addPenumpang(5); busBesar.cetak();
busBesar.addPenumpang(26); busBesar.cetak(); } }
c. Output dari UjiBus2
d. Penjelasan Pada program diatas menampilkan isi penumpang bus dengan terlebih dahulu menambahkan isi penumpang melalui pemberian parameter bertipe integer terhadap busBesar.addPenumpang(parameter); sehingga akan ditampilkan penumpang sekarang dan seharusnya. Pada saat penumpang yang ditambahkan hasilnya melebihi kuota maka parameter yang diisikan tadi langsung ditolak aksesnya alias tidak dihitung masuk sehingga tampilan isinya default dari isi penumpang sebelumnya.
e. Analisis Pada latihan 1 tipe dari variable penumpang dan maxPenumpang bersifat public sehingga dapat diakses oleh siapa saja, sedangkan pada latihan 2 akses berupa private yang dimana hanya akses tertentu yang boleh memanipulasi data nya. Pada konsep latihan 1 belum menerapkan Encapsulasi, sedangkan pada latihan 2 sudah menerapkan konsep Encapsulasi / pengkapsulan. Pengkapsulan berguna untuk pembungkusan variable dan method dalam sebuah objek agar terlindungi dan tidak dapat diakses oleh sembarang program lain. Dalam program ini jumlah maksimum penumpang yaitu 40. Jika jumlah penumpang melebihi jumlah maksimum maka dinyatakan penumpang melebihi kuota.
Latihan 3 a. Source Code 1 import java.io.*;
class Bus3 { 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; }
int password; int masuk = 1234;
private int penumpang; private int maxPenumpang = 40;
private int penumpangBaru;
//Konstruktor class Bus public void Bus3 (int maxPenumpang) { this.maxPenumpang = maxPenumpang; penumpang = 0; } //Method mutator untuk menambahkan penumpang public void addPenumpang (int penumpang) { int temp; temp = this.penumpang + penumpang;
if (password == masuk) { System.out.println ("Penumpang yang di tambah adalah : "+penumpang); } else { System.out.println ("Error Password :P "); } }
}
b. Source Code 2 class UjiBus3 { public static void main (String[] args) { Bus3 baru = new Bus3(); baru.addPenumpang (15); baru.addPenumpang (5); baru.getPenumpang(20); } }
c. Output Program
Pada program diatas ditambahkan method getPenumpang unntuk menampilkan pengaksesan penambahan dari addPenumpang. Sehingga pada awal dijalankan ditampilkan pengisian password, jika password yang dimasukan benar maka eksekusi dari addPenumpang baru ditambahkan atau dijalankan, jika password yang dimasukan salah maka error dengan menggunakan pengkondisian if else.
D. TUGAS PRAKTIKUM Source Code
a. Source Code I import java.io.*; class Bus4 { 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; }
if (pass == 1234) { System.out.println("Penumpang yang di tambah adalah : "+penumpang); } else { System.out.println (" Password yang anda masukkan salah"); } }
public void getAverage(double berat) { double average; average=this.berat+berat; this.berat=average; System.out.println("=============================================="); System.out.println(" Berat penumpang : "+average); System.out.println(" Berat rata-rata penumpang : "+average/3); }
public void cetak (){ System.out.println (" Penumpang sekarang adalah : "+penumpang); System.out.println("Maksimum berat penumpang seharusnya : "+maxPenumpang); System.out.println(" =============================================="); } }
b. Source Code II class UjiBus4 { public static void main (String [] args) { Bus4 baru = new Bus4(); baru.cetak (); System.out.println (" Penambahan penumpang"); baru.addPenumpang (3); baru.cetak (); baru.getPenumpang(1); baru.getAverage(40); baru.getAverage(24); baru.getAverage(11); System.out.println("=============================================="); } }
c. Hasil Compilasi
Pada program di atas merupakan modifikasi dari latihan 3 yang ditambahkan method getAverage . Program ini untuk menghitung jumlah penambahan penumpang dan juga menghitung nilai rata-rata penumpang (average) dengan jumlah maksimal penumpang sebesar 125 penumpang. Berat rata-rata ini dibagi 3 karena jumlah penambahan selama 3 kali. Selain itu program ini menggunakan import java.io.*; yang digunakan untuk fungsi input ouput.
E. TUGAS RUMAH 1. Tugas Rumah 1 a. Source Code Kelas Tabung import java.io.*; import java.math.*; //fungsi matematika class Tabung { 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; }
Kelas UjiTabung public class UjiTabung //nama class { public static void main(String[] args) //method utama { Tabung Gas = new Tabung(); //membuat objek baru System.out.println("_____________________________"); System.out.println("Tabung Kecil"); Gas .showdiameter(); //memanggil method showdiameter Gas .showluaspermukaan(); //memanggil method showluaspermukaan Gas .showvolume(); //memanggil method showvolume System.out.println("_____________________________"); System.out.println("Tabung Besar"); Gas .setjarijari(24); Gas .settinggi(48); Gas .showdiameter(); //memanggil method showdiameter Gas .showluaspermukaan();//memanggil method showluaspermukaan Gas .showvolume();//memanggil method showvolume } }
b. Output Program
Deskripsi Program Program di atas meupakan program menghitung diameter, luas permukaan, volume tabung. Pada program ini juga menggunakan import java.math.*; yang merupakan fungsi untuk perhitungan matematika. Program dibuat dengan properti jarijari dan tinggi yang bertipe double dan bersifat private, lalu method setjarijari, settinggi, showdiameter, showluaspermukaan dan showvolume. Pada saat program dijalankan akan menghitung dengan rumusan dari inisialisasi constructor sehingga didapat tampilan hasil tabung yang kecil, lalu kemudian jari-jari dan tinggi dilakukan set terhadap jari jari dan tinggi yang ubah melalui parameter dalam class UjiTabung sehingga didapatkan hasil yang berbeda dari sebelumnya.
2. Tugas Rumah 2 a. Source Code Kelas PilihanBuku import java.io.*; class PilihanBuku { private String jenis; public static String bacaInputan() { String baca = " "; InputStreamReader input = new InputStreamReader(System.in); BufferedReader buf = new BufferedReader(input); try //Blok yang dijalankan kalau terjadi eksepsi { baca=buf.readLine();//membaca data dari objek stream } catch(IOException e) //Blok yang ditangkap sekiranya terjadi eksepsi { System.out.println(" Error!"); } return baca; }
public void setJenis (String jenis) { this.jenis = jenis; }
public int getJenis() { int harga = 0;
if (this.jenis == "MAPEL") { harga = 200; } else if(this.jenis == "KOMIK") { harga = 300; } else if(this.jenis == "ENSIKLOPEDI") { harga = 500; } return harga; } }
Kelas Bayar class Bayar extends PilihanBuku
{ private int jml_Buku; public void setjml_Buku(String Jenis, int jumlah) { this.jml_Buku = jumlah; this.setJenis(Jenis); } public int getjml_Buku() { return this.getJenis() * this.jml_Buku; } }
Kelas Persewaan import java.io.*;
class Persewaan extends Bayar { public static void main (String[] arg) { BufferedReader data = new BufferedReader (new InputStreamReader(System.in)); int pil = 0; int jumlah = 0; Bayar hitung = new Bayar(); try { System.out.println("\n\t ________________________"); System.out.println("\t | RENTAL BUKU 7x24Jam |"); System.out.println("\t | RAJIN BACA JAYA |"); System.out.println("\t ________________________"); System.out.println("\t | PILIHAN BUKU |"); System.out.println("\t | [1]. PELAJARAN |"); System.out.println("\t | Rp. 200 |"); System.out.println("\t | [2]. KOMIK |"); System.out.println("\t | Rp. 300 |"); System.out.println("\t | [3]. ENSIKLOPEDI |"); System.out.println("\t | Rp. 500 |"); System.out.println("\t ========================"); System.out.println("________________________________________"); System.out.print("Masukan pilihan buku: "); pil = Integer.parseInt( data.readLine() ); System.out.println(" ________________________________________"); System.out.print("Masukan jumlah buku: "); jumlah= Integer.parseInt( data.readLine() ); if (pil == 1) { hitung.setjml_Buku("MAPEL", jumlah); } else if(pil == 2) { hitung.setjml_Buku("KOMIK", jumlah); } else if(pil == 3) { hitung.setjml_Buku("ENSIKLOPEDI", jumlah); }
} catch (Exception e) { System.out.println(" Error"); } System.out.println(" ________________________________________"); System.out.println(" Jumlah Sewa Buku yang harus Anda bayar : " +hitung.getjml_Buku() ); System.out.println(" ________________________________________"); System.out.println(" Terimakasih,kembalikan tepat waktu!"); System.out.println(" ________________________________________"); } }
b. Output Program
Pada program di atas merupakan program persewaan. Mempunyai 3 class, yaitu class pertama sebagai parent class yaitu class PilihanBuku, class kedua class Bayar turunan dari class PilihanBuku, class 3 class turunan dari class Bayar yaitu class Persewaan. Setiap Buku pelajaran dihargai dengan 200 tiap sewa 1 buku, buku komik dihargai 300 dan ensiklopedi 500. Jumlah bayar sewa diperoleh dari jumlah buku di kali dengan harga jenis buku. Selain itu program di atas juga menggunakan Accesor dan Mutator method dengan get dan set yang terdapat pada kelas Bayar sebagai proses penghitungan pembayaran nantinya.
F. KESIMPULAN private, Tidak dapat diakses oleh kelas lain protected, hanya dapat diakes oleh kelas turunan public, dapat diakses oleh sembarang kelas. Encapsulation berguna untuk membungkusan variable dan method dalam sebuah objek agar terlindungi dan tidak dapat diakses oleh sembarang program lain. java.math.*; merupakan fungsi untuk perhitungan matematika. Stream adalah aliran data yang berupa aliran byte atau karakter, dari device input ke divice output pada saat program di eksekusi Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get<namaInstanceVariable>. Mutator Method di gunakan untuk mengubah nilai variable pada class, baik berupa instance maupun static. Dan variabel tersebut biasanya berupa private. Biasanya mutator method di mulai dengan penulisan set<nama instance Variable>.
DAFTAR RUJUKAN _____.2014. Modul Praktikum 4 Encapsulation. Pendidikan Teknik Informatika.UM. Fikri, Rijalul, dkk.2005. Pemrograman Java. Yogyakarta: Andi Offset Raharjo, Budi, dkk. 2010. Mudah Belajar Java edisi Revisi. Bandung: Informatika