Top Banner

of 17

Modul 4 PBO Encapsulation

Oct 09, 2015

Download

Documents

Ezrafel Amadeuz

Laporan Praktikum Pemrograman Berorientasi Objek Enkapsulasi. Konsep dari pengkapsulan pada implementasi program Java
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

LAPORAN IVPRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berbasis Objek Yang Dibimbing oleh Heru Wahyu Herwanto, S.T., M.KOM

Asisten Praktikum:Mukh. Angga GumilangErma WidayantiWildan Setyo

Oleh:Amadeuz Ezrafel120533430965S1 PTI 2013 offering D

UNIVERSITAS NEGERI MALANGFAKULTAS TEKNIKJURUSAN TEKNIK ELEKTROS1 PENDIDIKAN TEKNIK INFORMATIKAOktober 2014

Modul Praktikum IVEncapsulation

A. TUJUAN 1. Mahasiswa mampu memahami Encapsulation dalam pemromgraman java.2. Mahasiswa mampu menggunakan konsep Encapsulation dalam pemromgraman java.

B. DASAR TEORIPembungkusan 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. ModularitasKode sumber dari sebuah objek dapat dikelola secara independen dari kode sumber objek yang lain.2. Information HidingKarena 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. privateprivate berarti pengaksesan suatu variable instan atau metode hanya dapat dilakukan di dalam kelas, tidak bisa dari luar kelas. protectedprotected 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 Method1. Accesor MethodAccessor 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.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 StringgetNama : 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 AccessorPenggunakan 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 AccessorPenggunaan 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 MethodMutator Method di gunakan untuk mengubah nilai variable pada class, baik berupa instance maupun static. Dan variabel tersebut biasanya berupa private. Biasanya mutatormethod di mulai dengan penulisan set.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 Ipublic 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 IIpublic class UjiBus{public static void main(String[] arg){//membuat objek busMini dari kelas BusBus busMini= new Bus();//memasukan nilai jumlah penumpang dan penumpang//maksimal ke dalam objek busMinibusMini.penumpang=5;busMini.maxPenumpang=15;//memanggil method cetak pada kelas BusbusMini.cetak();//menambahkan penumpang pada busMinibusMini.penumpang=busMini.penumpang+5;//memanggil method cetak pada kelas BusbusMini.cetak();//mengurangi jumlah penumpang pada busMinibusMini.penumpang=busMini.penumpang-2;busMini.cetak();//menambahkan jumlah penumpang pada busMinibusMini.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 IIpublic 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. PenjelasanPada 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. AnalisisPada 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 3a. Source Code 1import 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 Buspublic void Bus3 (int maxPenumpang){this.maxPenumpang = maxPenumpang;penumpang = 0;}//Method mutator untuk menambahkan penumpangpublic 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 getPenumpang (int password){System.out.println ("============================");System.out.print ("Masukkan password : ");password = Integer.parseInt(bacaInputan()); if (password == masuk){ System.out.println ("Penumpang yang di tambah adalah : "+penumpang);} else{System.out.println ("Error Password :P ");}}}

b. Source Code 2class 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 PRAKTIKUMSource Code

a. Source Code Iimport 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;}int pass;private double penumpang;private double maxPenumpang = 125;private double penumpangBaru;private double counter;private double berat;//konstruktor kelas Buspublic void bus (int maxPenumpang){this.maxPenumpang = maxPenumpang;penumpang = 0;}public void addPenumpang (int penumpang){double temp;temp = this.penumpang+penumpang;if (temp > maxPenumpang){System.out.println("==============================================");System.out.println (" Penumpang melebihi kuota");}else{this.penumpang = temp;counter = counter+1;}}public void getPenumpang (int password){System.out.println("Masukkan password ");System.out.print(" Masukkan password : ");pass=Integer.parseInt(bacaInputan()); 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 IIclass 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 RUMAH1. Tugas Rumah 1a. Source CodeKelas Tabungimport java.io.*;import java.math.*; //fungsi matematikaclass 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;}

private double jarijari;private double tinggi; Tabung() { this.jarijari=7;this.tinggi=14; } void settinggi(double tinggi){ this.tinggi=tinggi; } void setjarijari(double jarijari){ this.jarijari=jarijari; } void showdiameter(){System.out.println("_____________________________"); System.out.println("Diameter Tabung : "+this.jarijari*2); } void showluaspermukaan() {System.out.println("Luas permukaan: "+((2*(Math.PI*jarijari*(jarijari+tinggi)))));} void showvolume({ System.out.println("Volume tabung : "+((Math.PI*jarijari*jarijari*tinggi))); System.out.println("_____________________________"); }}

Kelas UjiTabungpublic 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 ProgramProgram 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 2a. Source CodeKelas PilihanBukuimport 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 Bayarclass 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 Persewaanimport 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 penulisanget. 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.

DAFTAR RUJUKAN_____.2014. Modul Praktikum 4 Encapsulation. Pendidikan Teknik Informatika.UM.Fikri, Rijalul, dkk.2005. Pemrograman Java. Yogyakarta: Andi OffsetRaharjo, Budi, dkk. 2010. Mudah Belajar Java edisi Revisi. Bandung: Informatika