laporan pbo modul 4

17
LAPORAN PRATIKUM IV PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK ENCAPSULATIONDisusun 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

Upload: gisra-rahmadhita

Post on 13-Jul-2015

249 views

Category:

Data & Analytics


13 download

TRANSCRIPT

Page 1: Laporan PBO Modul 4

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

Page 2: Laporan PBO Modul 4

“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.

Page 3: Laporan PBO Modul 4

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);

}

}

Page 4: Laporan PBO Modul 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

Page 5: Laporan PBO Modul 4

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)

Page 6: Laporan PBO Modul 4

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.

Page 7: Laporan PBO Modul 4

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!!!");

}

}

Page 8: Laporan PBO Modul 4

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

Page 9: Laporan PBO Modul 4

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);

Page 10: Laporan PBO Modul 4

}

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

Page 11: Laporan PBO Modul 4

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)));

}

}

Page 12: Laporan PBO Modul 4

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("\n\n");

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!

Page 13: Laporan PBO Modul 4

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

SUKSES\n\n\n");

System.out.println("Harga Saat Ini : Rp "+biaya);

}

else {

System.out.println("Password Salah!! Silahkan

Ulangi\n\n\n");

}

}

/*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 ="";

Page 14: Laporan PBO Modul 4

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("\n\n======= Percetakan Cantika

========\n"+

"1. Hitung Biaya Print\n"+

"2. Hitung Biaya Fotocopy\n"+

"3. Ganti Harga Dasar\n"+

"4. Keluar\n"+

"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("\n\nMenu yang dimaksud tidak

tersedia");

}

Page 15: Laporan PBO Modul 4

}

}}

c. Output (hasil) program

Page 16: Laporan PBO Modul 4

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.

Page 17: Laporan PBO Modul 4

G. DAFTAR PUSTAKA

Modul IV “Encapsulation”Praktikum Pemrograman Berbasis Objek. Pendidikan

Teknik Informatika — Teknik Elektro — Universitas Negeri Malang — 2014.