laporan 4 pbo

Upload: aprilian-dwi-saputro

Post on 08-Oct-2015

270 views

Category:

Documents


6 download

DESCRIPTION

Laporan 4 PBO

TRANSCRIPT

LAPORAN 4PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi ObjekYang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom

Asisten Praktikum :M. Angga GumilangJevri T. Ardiansah

Oleh :Aprilian Dwi Saputro130533608278S1 PTI 2013 Offering A

UNIVERSITAS NEGERI MALANGFAKULTAS TEKNIKJURUSAN TEKNIK ELEKTROS1 PENDIDIKAN TEKNIK INFORMATIKAOktober, 2014A. Tujuan

Mahasiswa mampu memahamai dan menggunakan konsep Encapsulation dalam pemrograman java.

B. Dasar Teori ENCAPSULATIONPengertian dasar dari encapsulation adalah penyembunyian data dengan membungkus seluruh member dari class tersebut sehingga nilainya tidak dapat diubah menjadi apa yang tidak diinginkan atau menyelipkan sebuah proses bisnis didalamnya. Pengertian lainnya adalah sebuah proses dalam menyatukan data yang kita kelola menjadi sebuah kelompok tertentu dimana pembentukannya terjadi secara abstrak.Ecapsulation yaitu merupakan sebuah proses pengelompokan property & method serta memberikan hak akses kepada property & method yang menyebabkan property hanya dapat diakses melalui method accessor dan tidak dapat di rubah tanpa melalui prosedur yang seharusnya yang diatur pada method mutator.Di dalam OOP encapsulation berbentuk class yang terdiri dari property & method yang mempunyai hak akses tertentu terhadap environment/lingkungannya, yang biasa disebut Acces Modifier. Encapsulation biasa dilambangkan dengan penggunaan accessor dan mutator atau disebut juga dengan metode get dan set. Dinamakan accessor (get) karena metode ini hanya mengambil tanpa mengubah state dari member tersebut, dan dinamakan mutator (set) karena metode ini juga mengubah state dari member tersebut. Method-method ini dideklarasikan sebagai public, sedangkan variable dideklarasikan sebagai private. 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.

Accessor dan Mutator a. Accessor Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses data private. Dalam hal ini kita gunakan accessor methods. Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get. Method ini juga mempunyai sebuah return value. Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama, alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa. Jadi, Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static.

b. MutatorBagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam class, baik itu berupa instance maupun static. Method semacam ini disebut dengan mutator methods. Jadi, Mutator Methods di gunakan untuk mengubah atau memberi nilai variable pada class, baik berupa instance maupun static.

Latihan 1 Syntax :Bus.javapublic 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); }}

UjiBus.javapublic 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();}}

Output :Penjelasan :Pada program ini, akan menampilkan jumlah penumpang bus, pada program ini ada 4 sesi, dimana untuk sesi ke-1 penumpang di isi dengan 5, kemudian sesi ke-2 penumpang di jumlahkan 5 dari jumlah penumpang sebelumnya (sesi ke-1) sehingga menampilkan jumah penumpang 10, kemudian untuk sesi ke-3 jumlah penumpang di jumlahkan sebanyak -2 dari jumlah penumpang pada sesi sebelumnya, sehingga menghasilkan jumlah 8 penumpang, setelah itu untuk sesi yang terakhir yaitu sesi ke-4 dimana pada sesi ini akan menjumlahkan jumlah penumpang sebelumnya sebanyak 8 penumpang sehingga jumlah penumpang akhirnya adalah 16. Dan kenapa jumlah penumpang melebihi jumlah maksimun penumpang dan tidak ada pemberitahuan/peringatan bahwa penumpang sudah penuh ? hal ini di sebabkan pada syntax Bus busMini = new Bus(); pada class UjiBus.java tidak di deklarasikan jumlah maksimumnya, dan tidak ada penambahan fungsi IF pada sehingga tidak ada pemberitahuan program terkait jumlah maksimum penumpang.

Latihan 2 Syntax :Bus2.javapublic class Bus2{ private int penumpang; private int maxPenumpang; //konstruktor 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 maks seharusnya : "+maxPenumpang); }}

UjiBus2.javapublic 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(); }}

Output :Penjelasan : Pada program ini, akan menmpilkan jumlah penumpang bus dengan jumlah maksimal penumpang 40, dan program ini terdapat 3 sesi memasukkan pada sesi ke-1 program akan menambahkan jumlah penumpang sebanyak 15, karena pada sesi ke-1 jumlah penumpang belom melebihi jumlah maksimal (40 penumpang) maka dilanjutkan pada sesi selanjutnya, pada sesi ke-2 program akan menambahkan jumlah penumpang sebanyak 5 penumpang pada jumlah penumpang sebelumnya (15 penumpang) karena belum belebihi jumlah penumpang (40 penumpang) maka sesi selanjutnya di jalankan, pada sesi ke-3 jumlah penumpang sebelumnya akan di jumlahkan dengan 26, karena ketika di jumlahkan dan hasilnya melebihi jumlah penumpang yang sudah ditetapkan, maka proses tidak di jalankan, sehingga jumlah penumpang tetap 20 penumpang. Pada program ini, sebenarnya sama dengan Latihan 1, hanya saja pada Latihan 2 di tambahkan fungsi operasi kondisi dan pendeklarasian jumlah maksimum penumpang.

Latihan 3Syntax :Bus3.javapublic class Bus3{private int penumpang;private int maxPenumpang;private int penumpangBaru;private int password;

//konstruktor kelas Bus public 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(temp>=maxPenumpang){ System.out.println("penumpang melebihi kuota");} else{ this.penumpang=temp;}}

//method untuk pengisian password public void getPenumpang(int penumpangBaru){ if(penumpangBaru==130533){ penumpangBaru=password; addPenumpang(5);} else{ System.out.println("Wrong Password...!!!\n");}}

public void cetak(){ System.out.println("Penumpang Bus sekarang adalah " + penumpang); System.out.println("Penumpang maksimum seharusnya adalah : " + maxPenumpang); }}

UjiBus3.javapublic class UjiBus3{public static void main (String[]args){

// membuat obyek bus besar dari kelas bus Bus3 busBesar= new Bus3(40); busBesar.cetak();

//menambahkan penumpang pada BusBesar System.out.println("---------------------------"); busBesar.getPenumpang(12363); busBesar.cetak();

//menambahkan penumpang pada BusBesar System.out.println("---------------------------"); busBesar.getPenumpang(130533); busBesar.cetak();

//menambahkan penumpang pada BusBesar System.out.println("---------------------------"); busBesar.getPenumpang(130533); busBesar.cetak();

//menambahkan penumpang pada BusBesar System.out.println("---------------------------"); busBesar.getPenumpang(02372); busBesar.cetak(); }}

Output :Penjelasan :Pada program ini, sebenarnya sama dengan latihan sebelumnya (Latihan 1 dan Latihan 2) hanya saja pada program ini ditambahkan fungsi kondisi untuk password, jika password benar maka, proses penambahan penumpang di jalankan, dan ketika password tidak sama/salah maka program tidak akan menambahkan penumpang.

Tugas PraktikumSyntax :Bus4.javapublic class Bus4{ private double penumpang; private double maxPenumpang; private int password; private double counter; //konstruktor kelas Bus public Bus4(double maxPenumpang){ this.maxPenumpang = maxPenumpang; penumpang = 0; counter = 0; } //untuk menambahkan penumpang public void addPenumpang(double penumpang){ double temp; temp = this.penumpang + penumpang; if (temp >= maxPenumpang){ System.out.println("Bus Sudah Penuh"); }else{ this.penumpang = temp; } } public void getPenumpang(int password, double penumpang){ int pass=8278; //deklarasi password if (pass==password) { this.penumpang=this.penumpang+penumpang; this.counter++; }else { System.out.println("_________________"); System.out.println("Wrong Password!!!"); System.out.println("_________________"); addPenumpang(0); } } public void getAverage() { double rata=this.penumpang/this.counter; System.out.println("Rata-rata penumpangnya adalah : "+rata); } public void cetak() { System.out.println("Penumpang Bus sekarang adalah : "+penumpang); System.out.println("Jumlah Maksimal Penumpang : "+ maxPenumpang); System.out.println("---------------------------------------------------"); }}

UjiBus4.javapublic class UjiBus4{public static void main(String[] args){

Bus4 busBesar = new Bus4(55); busBesar.cetak(); busBesar.addPenumpang(0); busBesar.getPenumpang(8276, 13); //memasukkan password dan jumlah penumpang busBesar.cetak(); busBesar.getPenumpang(2990, 9); //memasukkan password dan jumlah penumpang busBesar.cetak(); busBesar.getPenumpang(8278, 4); //memasukkan password dan jumlah penumpang busBesar.cetak(); busBesar.getPenumpang(8278, 8); //memasukkan password dan jumlah penumpang busBesar.cetak(); busBesar.getAverage(); }}

Output :Penjelasan :Pada program ini, sebenarnya sama seperti Latihan 3, hanya saja di tambah dengan fungsi Average (rata-rata) pada jumlah penumpang yang tersedia dan jumlah maksimum penumpang. Pada program ini jika password tidak benar/salah maka program tidak akan menambahkan jumlah penumpang, begitu juga sebaliknya. Karena, pada program ini yang benar hanya pada sesi ke-3 dan sesi ke-4 dengan nilai jumlah penumpang masing-masing ( 4 dan 8 penumpang) maka kedua jumlah penumpang tersebut di jumlahkan dan kemudian di rata-rata dengan jumlah maksimum penumpang (60 penumpang) sehingga menghasilkan hasil akhir 6,0.

Tugas Rumah 1Syntax :Tabung.javaimport java.io.*;import java.math.*; //fungsi operasi 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=21; } void settinggi(double tinggi) { this.tinggi=tinggi; } void setjarijari(double jarijari) { this.jarijari=jarijari; } void diameter() { System.out.println("______________________________________"); System.out.println("Diameter Tabung : "+this.jarijari*2); } void luaspermukaan() {System.out.println("Luas permukaan : "+((2*(Math.PI*jarijari*(jarijari+tinggi)))));} void volume() { System.out.println("Volume tabung : "+((Math.PI*jarijari*jarijari*tinggi))); System.out.println("______________________________________"); }}

UjiTabung.javapublic class UjiTabung { public static void main(String[] args) //method utama { Tabung Baru = new Tabung(); //membuat objek baru System.out.println("======================================"); System.out.println("Tabung Kecil"); Baru.diameter(); Baru.luaspermukaan(); Baru.volume(); System.out.println("\n======================================"); System.out.println("Tabung Besar"); Baru.setjarijari(28); Baru.settinggi(100); Baru.diameter(); Baru.luaspermukaan(); Baru.volume(); }}

Output :

Penjelasan :Pada program ini, akan menghitung Luas Permukaan Tabung dan Volume Tabung, pada Tabung Kecil akan mengambil variabel jari-jari dan tinggi pada class Tabung, yaitu jari-jari = 7 dan tinggi =21, kemudian untuk Tabung Besar, kita mengubah nilai variabel jari-jari dan tinggi pada class UjiTabung, dengan jari-jari=28 dan tinggi = 100. Dan untuk syntax menghitung Luas Permukaan Tabung 2*(Math.PI*jarijari*(jarijari+tinggi dan untuk rumus menghitung Volume Tabung adalah Math.PI*jarijari*jarijari*tinggi.

Tugas Rumah 2Syntax :PilihanPaket.javaimport java.io.*;class PilihanPaket{ private String jenis; public static String bacaInputan() { String baca = " "; InputStreamReader input = new InputStreamReader(System.in); BufferedReader buf = new BufferedReader(input); try //Blok yg dijalankan jika 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 == "Paket1") { harga = 76000; } else if(this.jenis == "Paket2") { harga = 94000; } else if(this.jenis == "PaketHemat") { harga = 32000; } return harga; }}

Pilihan.javaclass Pilihan extends PilihanPaket

{ private int jml_Paket; public void setjml_Paket(String Jenis, int jumlah) { this.jml_Paket = jumlah; this.setJenis(Jenis); } public int getjml_Paket() { return this.getJenis() * this.jml_Paket; }}

Menu.javaimport java.io.*;

class Menu extends Pilihan { 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 | IAN RESTO |"); System.out.println("\t | Kepuasan Anda, Kepuasan Kami |"); System.out.println("\t |_________________________________|"); System.out.println("\t | PILIHAN PAKET |"); System.out.println("\t | [1]. Paket 1 |"); System.out.println("\t | Rp. 76.000 |"); System.out.println("\t | [2]. Paket 2 |"); System.out.println("\t | Rp. 94.000 |"); System.out.println("\t | [3]. Paket Hemat |"); System.out.println("\t | Rp. 32.000 |"); System.out.println("\t __________________________________"); System.out.println("________________________________________"); System.out.print("Masukan Paket yang Dipilih: "); pil = Integer.parseInt( data.readLine() ); System.out.println("________________________________________"); System.out.print("Kuantitas: "); jumlah= Integer.parseInt( data.readLine() ); if (pil == 1) { hitung.setjml_Paket("Paket1", jumlah); } else if(pil == 2) { hitung.setjml_Paket("Paket2", jumlah); } else if(pil == 3) { hitung.setjml_Paket("PaketHemat", jumlah); } } catch (Exception e) { System.out.println(" Error"); } System.out.println("\n==========================++============"); System.out.println(" Jumlah yang Harus Dibayar : RP." +hitung.getjml_Paket() ); System.out.println("________________________________________"); System.out.println(" Thank You !!! "); System.out.println("________________________________________"); }}

Output :Penjelasan :Pada program ini, kita dapat menggetahui harga Paket makanan pada sebuah restoran dengan menentukan Paket dan Jumlah paket yang di beli/kuantitas. Untuk Paket 1 di hargai dengan Rp. 76.000, Paket 2 = Rp. 94.000, dan Paket Hemat = Rp. 32.000, pada program ini akan menanyakan Paket apa yang akan di pilih dan menanyakan berapa banyak Paket yang dibeli, contoh kita beli Paket Hemat dengan memilih no 3, kemudian program akan menyimpan harga Paket Hemat sesuai dengan yang sudah ditentukan, yaitu 32000 kemudian program akan menanyakan berapa banyak kuantitas/banyaknya barang yang dibeli, ketikka kita massukkan 2 maka, program akan mengkalikan (*) antara harga Paket Hemat dengan kuantitas yang dibeli sehingga, menghasilkan hasil akhir yaitu Rp. 64.000.

KESIMPULAN : 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. Sebuah mutator method biasanya di mulai dengan penulisan set. Private, tidak dapat diakses oleh kelas lain. Protected, hanya dapat diakes oleh kelas turunannya. Public, dapat diakses oleh semua kelas.

DAFTAR PUSTAKA : Tim dosen UM. 2014. Modul 4 Encapsulation Praktikum Pemrograman Berbasis Objek. http://tiniwekwek.wordpress.com/2013/04/08/encapsulation-pengertianimplementasi-c-java-c/ (Diakses pada tanggal 23 Oktober 2014, Pukul 22.15 WIB)

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&uact=8&ved=0CD8QFjAF&url=http%3A%2F%2Fazoel.files.wordpress.com%2F2010%2F03%2Faccessor_mutator.pdf&ei=AxxJVJSTO8-D8gXel4CIBg&usg=AFQjCNEda3dvZ6rx_gJ4lWG8_kAARcuNCg&sig2=qtOjw1AzKgd4cJSQTwgKCQ&bvm=bv.77880786,d.dGc(Diakses pada tanggai 23 Oktober 2014, Pukul 22.22 WIB)

NOTE :