pbo4

13

Click here to load reader

Upload: a-m-rousan-shafir

Post on 04-Aug-2015

45 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: pbo4

LAPORAN IVPRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

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

Oleh:

Bimo Tri Widodo

110533430629

S1 PTI 2011 offering E

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

S1 PENDIDIKAN TEKNIK INFORMATIKA

OKTOBER, 2012

Page 2: pbo4

ENCAPSULATION

A. Tujuan 1. Mahasiswa mampu memahamai dan menggunakan konsep Encapsulation dalam

pemrograman java.2. Penyembunyian implementasi (implementation hiding) mengacu perlindungan

implementasi internal objek.

B. Dasar TeoriPada tulisan kali ini saya akan menjelaskan tentang enkapsulasi(pengkapsulan) dalam

bahasa pemograman berbasis objek. bahasa pemograman yang saya gunakan adalah bahasa java yang sangat mengimplementasikan OOP(Object Oriented Programming). langsung saja kita mulai.Enkapsulasi merupakan proses pemaketan data bersama metode-metodenya. Manfaat utama dari enkapsulasi ini adalah meyembunyikan rincian-rincian implementasi dari pemakai. Bagian internal objek mempunyai ketampakan terbatas dibanding bagian eksternal objek. Penyusunan seperti ini menjaga bagian internal dari pengaksesan eksternal yang tidak diinginkan.Bagian eksternal objek sering disebut antarmuka objek karena berlaku sebagai antarmuka objek terhadap objek lain. Karena objek lain harus berkomunikasi dengan objek itu hanya melalui antarmuka maka bagian internal objek dapat dilindungi dari gangguan luar. Karena program luar tidak dapat mengakses implementasi internal objek, implementasi internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.Enkapsulasi menyediakan duan manfaat utama bagi pemograman, yaitu:

Penyembunyian Informasi

Penyembunyian implementasi (implementation hiding) mengacu perlindungan implementasi internal objek. Objek disusun dari antarmuka public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utama adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.

Modularitas (modularity)

Objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antar muka, maka kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistribusikan objek-objek di sistem.

Enkapsulasi pada Java dilakukan dengan pembentukan kelas-kelas, yaitu keyword class. Sedangkan penyembunyian informasi dilakukan dengan pengendalian terhadap pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default, private, protected, dan public. Penyembunyian informasi dilakukan dengan menerapkan kendali pengaksesan private atau protected pada elemen data.

Contoh Listing Program

import java.io.*;class belajar {public String x = "Enkapsulasi pada java";public String y = "by Rizanuary Fauzi";private String z = "Rahasia, weeee :p";}public class pintar{public static void main(String[] args){belajar panggil = new belajar();System.out.println("Panggil X : " + panggil.x);System.out.println("Panggil Y : " + panggil.y);

Page 3: pbo4

}}

Logika ProgramTipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dan y dapat diakses oleh class Belajar. Sedangkan variable z yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.

C. LatihanLatihan 1. 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 BusBus 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 BusbusMini.cetak();

//menambahkan penumpang pada busMinibusMini.penumpang = busMini.penumpang + 5;

//memanggil methjod 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();

}}

Output program di atas adalah

Page 4: pbo4

Perhatikan jumlah penumpang Bus terakhir dengan jumlah penumpang maksimum. Mengapa bisa demikian? Penumpang bus terakhir memiliki 16 penumpang yang seharusnya bus hanya dapat memuat 15 penumang saja, hal ini bisa terjadi karena belum adanya validasi pemasukkan max dari masukan penumpang itu sendiri, sehingga jumlah penumpang bisa lebih dari maximal seharusnya

Latihan 2. Bus.javapublic class Bus {

private int penumpang;private int maxPenumpang;

//konstruktor kelas Buspublic Bus(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 cetak() {System.out.println("Penumpang Bus sekarang adalah "+

penumpang);System.out.println("Penumpang maksimum seharusnya adalah "+

maxPenumpang);}

}

Output program di atas adalah

Page 5: pbo4

Terjadi error karena pada Bus.java yang baru terdapat konstruktor yang terdapat pembacaan nilai (accessor method) dan pada UjiBus.java pada pembuatan object baru tidak terdapat nilai untuk dibaca oleh konstructor pada Bus.java. Dan pada Bus.java deklarasi variabel yang awalnya public menjadi private, yang artinya pada awalnya variabel yang terdapat pada Bus.java bisa digunakan class lain karena public menjadi tidak dapat digunakan oleh class lain karena private, sehingga pada UjiBus.java variabel variabel yang awalnya terbaca menjadi tidak terbaca

New UjiBus.javapublic class UjiBus {

public static void main(String[] arg) {//membuat objek busBesar dari class BusBus busBesar = new Bus(40);busBesar.cetak();

//penambahan penumpangbusBesar.addPenumpang(15); //menambahkan 15 penumpangbusBesar.cetak();

//penambahan penumpangbusBesar.addPenumpang(5); //menambahkan 5 penumpangbusBesar.cetak();

//penambahan penumpangbusBesar.addPenumpang(26); //menambahkan 26 penumpangbusBesar.cetak();

}}

Output program di atas adalah

Page 6: pbo4

KesimpulanTipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat

dalam class Bus pada variable penumpang dan maxPenumpang, memungkinkan nilai dari variable penumpang dan maxPenumpang dapat diakses oleh class UjiBus. Sedangkan jika fungsi public diubah menjadi fungsi private maka penumpang dan maxPenumpang tidak dapat dipanggil didalam class UjiBus. Yang hal tersebut dapat menyembunyikan informasi dari suatu class sehingga class tersebut tidak dapat diakses dari luar

Latihan 3. New Bus.javapublic class Bus {

public int penumpang;public int maxPenumpang;

public Bus(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 getPenumpang(int password) {int pass = 182;if(pass==password) {

this.penumpang++;} else {

System.out.println("Password Salah");}

}

public void cetak() {System.out.println("Penumpang Bus sekarang adalah "+

penumpang);System.out.println("Penumpang maksimum seharusnya adalah "+

maxPenumpang);}

}

Page 7: pbo4

New UjiBus.javapublic class UjiBus {

public static void main(String[] arg) {//membuat objek busBesar dari class BusBus busBesar = new Bus(40);busBesar.cetak();

//penambahan penumpangbusBesar.addPenumpang(7);busBesar.getPenumpang(182);busBesar.cetak();

//penambahan penumpangbusBesar.getPenumpang(182);busBesar.cetak();

//penambahan penumpangbusBesar.getPenumpang(798);busBesar.cetak();

}}

Output program di atas adalah

D. Tugas PraktikumTugas Praktikum 1. Bus.javapublic class Bus {

public double penumpang;public double maxPenumpang;public double counter;

public Bus(double maxPenumpang) {this.maxPenumpang = maxPenumpang;penumpang = 0;counter = 0;

}

public void addPenumpang(double penumpang) {double temp;temp = this.penumpang+penumpang;if (temp >= maxPenumpang) {

System.out.println("Penumpang melebihi kuota");} else {

this.penumpang = temp;}

Page 8: pbo4

}

public void getPenumpang(int password, double penumpang) {int pass = 182;if(pass==password) {

this.penumpang=this.penumpang+penumpang;this.counter++;

} else {System.out.println("Password Salah");

}}

public void getAverage() {double hasil=this.penumpang/this.counter;System.out.println("Rata-rata penumpang : "+hasil);

}

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 busBesar dari class BusBus busBesar = new Bus(40);busBesar.cetak();

//penambahan penumpangbusBesar.addPenumpang(0);busBesar.getPenumpang(182,2);busBesar.cetak();

//penambahan penumpangbusBesar.getPenumpang(182,5);busBesar.cetak();

//penambahan penumpangbusBesar.getPenumpang(920,5);busBesar.cetak();busBesar.getAverage();

}}

Output program di atas adalah

Page 9: pbo4

PenjelasanUntuk mendapatkan rata-rata yaitu banyaknya penumpang dibagi dengan banyaknya bus itu berhenti (counter), namun jika pada setiap pemasukkan penumpang memasukkan password dengan salah maka para penumpang tidak akan masuk dan tidak bertambah counternya. Jika kita ilustrasikan outputan diatas, bus yang awalnya tidak berpenumpang, berhasil memasukkan penumpang bejumlah 2 orang (counter = 1), beberapa saat kemudian bus berhasil memasukkan kembali 5 orang (counter = 2), setelah itu bus akan memasukkan kembali penumpang, namun password yang dimasukkan salah sehingga jumlah penumpang dan counter tetap, sehingga rata-rata penumpang yang masuk didapat (2+5) / 2 = 3,5

E. Tugas RumahTugas Rumah 1. Bola.javapublic class Bola {

private double jariJari;

public void setJariJari(double jari) {this.jariJari = jari;

}public void showDiameter() {

double diameter = this.jariJari * 2;System.out.println("Diameter\t: "+ diameter);

}public void showLuasPermukaan() {

double luas = 4 * Math.PI * this.jariJari *this.jariJari;System.out.println("Luas Permukaan\t: "+ luas);

}public void showVolume() {

double volume = 4 / 3 * Math.PI * this.jariJari * this.jariJari * this.jariJari;

System.out.println("Volume\t\t: "+ volume);}

}

TestBola.javapublic class TestBola{

public static void main(String[] args) {double jari = 7;System.out.println("Jari - jari\t: "+jari);Bola boll = new Bola();boll.setJariJari(jari);boll.showDiameter();boll.showLuasPermukaan();boll.showVolume();

Page 10: pbo4

}}

Output program di atas adalah

Tugas Rumah 2. Percetakan.javapublic class Percetakan {

private int hargaPerWar;private int hargaPerHiPu;private int JLemWar;private int JLemHiPu;

public Percetakan(int hargaPerWar, int hargaPerHiPu) {this.hargaPerWar = hargaPerWar;this.hargaPerHiPu = hargaPerHiPu;

}

public void showJLemWar(int JLemWar) {this.JLemWar = JLemWar;System.out.println("Jumlah Lembar Berwarna :

"+this.JLemWar+"\t@lembar Rp."+hargaPerWar+",-");}

public void showJLemHiPu(int JLemHiPu) {this.JLemHiPu = JLemHiPu;System.out.println("Jumlah Lembar Hitam Putih : "+JLemHiPu+"\

t@lembar Rp."+hargaPerHiPu+",-");}

public void totalBayar() {int totalBayar = (JLemWar * hargaPerWar)+(JLemHiPu *

hargaPerHiPu);System.out.println("Total Bayar\t\t : Rp."+

totalBayar+",-");}

}TestPercetakan.javapublic class TestPercetakan{

public static void main(String[] args) {System.out.println("Percetakan");System.out.println("----------------");Percetakan per = new Percetakan(100,250);per.showJLemWar(25);per.showJLemHiPu(105);per.totalBayar();

}}

Page 11: pbo4

Output program di atas adalah

PenjelasanProgram diatas adalah program pembayaran pada tempat fotokopian dimana harga per-lembarnya dan jumlah lembar terdapat pada class TestPercetakan dan nilai harga dan jumlah lembar tersebut akan diproses untuk mendapatkan total bayar dengan menggunakan variable private yang terdapat pada class Percetakan.

F. Kesimpulan encapsulation adalah untuk menyembunyikan atau memproteksi suatu proses dari

kemungkinan interfensi atau penyalahgunaan dari luar system dan sekaligus menyederhanakan system itu sendiri

Dua hal yang mendasar dalam enkapsulasi, yakni : 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.

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.

G. Daftar Pustaka http://7seasons.wordpress.com/2010/10/14/encapsulation-dalam-java/ http://kadavi19.wordpress.com/2010/07/11/encapsulation-pada-java/ http://setyonugroho09.wordpress.com/2010/02/17/konsep-enkapsulasiencapsulation-

pada-object-oriented-programming-dengan-java/ http://suhhen.blogspot.com/2011/03/konsep-encapsulation-pada-java.html