Anda di halaman 1dari 23

LAPORAN MODUL III

PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK


“ENCAPSULATION”

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek


Dibimbing oleh Heru Wahyu Herwanto, S.T., M.Kom.

Oleh:
Ahmad Ramadhani 170533628573

S1 PTI ‘17 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
Oktober 2018
I. Tujuan Praktikum
1. Menerapkan konsep encapsulation.
2. Menyembunyikan data.
3. Mengakses data yang disembunyikan.
4. Menggunakan class JButton dan melakukan mekanisme event handling.

II. Dasar Teori


1. Konsep encapsulation.
Encapsulation atau enkapsulasi adalah cara untuk menyembunyikan
informasi detail dari suatu class. Ada dua jenis method yang digunakan dalam
enkapsulasi, yaitu mutator method dan accessor method. Mutator method
digunakan untuk mengubah atau memberi nilai variabel pada class, baik berupa
instance maupun static, sedangkan accessor method digunakan untuk membaca
nilai variabel pada class, baik berupa instance maupun static.
2. Penyembunyian data dan pengaksesan data.
Dua hal yang mendasar dalam enkapsulasi adalah adanya data yang
disembunyikan dan bagaimana cara untuk mengakses data tersebut. Information
hiding adalah proses menyembunyikan informasi dari suatu class sehingga
informasi tersebut tidak dapat diakses dari luar dengan cara memberikan
modifier “private” ketika mendeklarasikan attribute atau method. Interface to
access data adalah cara melakukan perubahan terhadap attribute yang telah
disembunyikan. Caranya yaitu dengan membuat interface berupa method untuk
menginisialisasi atau merubah nilai dari attribute tersebut.
3. Pengenalan class JButton.
Class JButton merupakan class dari package javax.swing yang digunakan
untuk membuat komponen berupa tombol berisi teks maupun icon. Bila ingin
membuat tombol interaktif yang icon–nya dapat berubah saat pointer mouse
diarahkan pada tombol tersebut, maka dapat diatur dengan menggunakan
method setRolloverIcon(iconObjectName).
4. Mekanisme event handling.
Package javax.swing dan package java.awt memang memiliki komponen
yang sifatnya berbeda terhadap platform yang digunakan, tetapi kedua package
ini memiliki mekanisme event handling yang sama. Dalam aplikasi berbasis
GUI, tentu banyak event yang dapat dilakukan sehingga membutuhkan bantuan
dari event listener dan event handler yang terdapat pada package java.awt.event.
Event adalah peristiwa yang distimulasi oleh user terhadap komponen GUI.
Event listener merupakan pendeteksi terjadinya event. Sedangkan event handler
merupakan blok yang akan memproses event agar memberikan aksi tertentu.
III. Tugas Latihan
1. Nama Program : Program tanpa penerapan encapsulation
Source Code :
class Bus1
{
//inialisasi variabel dengan modifier public
public int penumpang=5;
public int maxPenumpang=15;

public void cetak() //mencetak jumlah penumpang


{
System.out.println("Penumpang Bus Mini
sekarang adalah : "+penumpang);
System.out.println("Penumpang maksimal
seharusnya adalah : "+maxPenumpang);
}
}
public class UjiBus1 {

public static void main(String[] args) {


System.out.println("\n****** PENUMPANG BUS MINI
BLITAR RAYA*****");
Bus1 busMini = new Bus1(); //membuat objek
busMini dari class Bus1

System.out.println("\n\tJumlah Penumpang Awal");


busMini.cetak(); //mencetak jumlah penumpang awal

busMini.penumpang = busMini.penumpang + 7;
busMini.cetak(); //mencetak jumlah penumpang
setelah ditambah 7

busMini.penumpang = busMini.penumpang - 3;
System.out.println("\n\tJumlah Penumpang Setelah
Dikurang 3 ");
busMini.cetak(); //mencetak jumlah penumpang
setelah dikurangi 3
busMini.penumpang = busMini.penumpang + 9;
System.out.println("\n\tJumlah Penumpang Setelah
Ditambah 9");
busMini.cetak(); //mencetak jumlah penumpang
setelah ditambah 9
}
}

Hasil Program :

Penjelasan
:
Program diatas menjelaskan pembuatan program tanpa menggunakan
enscapsulation. Pada program diatas hanya dideklarasikan 1 method saja
untuk mencetak jumlah penumpang bus mini sekarang dan penumpang
maksimal. Pada method utama terdapat pembuatan objek busMini dari class
Bus1. Untuk melakukan penambahan dan pengurangan jumlah penumpang,
harus mendeklaraikan objek busMini.penumpang = busMini.penumpang
(+/- angka yang diinginkan). Sehingga data yang ditambahkan atau
dikurangkan akan diproses oleh perintah busMini.cetak();. Perintah
busMini.cetak() secara langsung mengakses method cetak pada class Bus1
untuk menampilkan output penambahan atau pengurangan jumlah
penumpang bus mini dan jumlah maksimal penumpang.
2. Nama Program : Program dengan penerapan encapsulation
Source Code :
class Bus2
{
//inialisasi variabel dengan modifier private
private int penumpang=0;
private int maxPenumpang=40; //menghitung jumlah
penumpang

public void addPenumpang(int


penumpang)//menghitung jumah penumpang
{
int add;
add=this.penumpang+penumpang;

if(add>maxPenumpang) //kondisi bila jumlah


penumpang melebihi batas
{
System.out.println("Penumpang Bus Besar
sekarang : "+add);
System.out.println("Penumpang Maksimal
seharusnya : "+maxPenumpang);
System.out.println("Jumlah penupang
melebihi batas.");
}
else
{
this.penumpang=add;
}
}
public void cetak() //mencetak jumlah penumpang
{
System.out.println("Penumpang Bus Besar
sekarang : "+penumpang);
System.out.println("Penumpang maksimal
seharusnya : "+maxPenumpang);
}
}
public class UjiBus2 {
public static void main(String[] args) {
System.out.println("\n***** PENUMPANG BUS
BESAR BLITAR RAYA *****");
Bus2 busBesar=new Bus2();
System.out.println("\\n\\tJumlah Penumpang
Awal");
busBesar.cetak();

System.out.println("\n\tJumlah Penumpang
Setelah ditambah 20");
busBesar.addPenumpang(20);
busBesar.cetak();

System.out.println("\n\tJumlah Penumpang
Setelah dikurang 3");
busBesar.addPenumpang(-3);
busBesar.cetak();

System.out.println("\n\tJumlah Penumpang
Setelah ditambah 17");
busBesar.addPenumpang(17);
busBesar.cetak();

System.out.println("\n\tJumlah Penumpang
Setelah ditambah 9");
busBesar.addPenumpang(9);
}
}
Hasil Program :

Penjelasan :
Program diatas menjelaskan tentang pembuatan program
menggunakan enscapsulation. Pada class Bus2 terdapat pendeklarasian
atribut penumpang dan maxPenumpang yang bertipe data integer dan
memiliki hak akses private yang mana kedua atribut tersebut hanya dapat
diakses di class Bus2 saja. Pada proses enscapsulation, harus membuat 2
method setiap 1 atribut. Pada program diatas , atribut penumpang diakses
pada 2 method yaitu method addPenumpang yang berfungsi untuk
perhitungan jumlah penumpang dan method cetak untuk menampilkan hasil
dari perhitungan jumlah penumpang. Sehingga pada method utama terdapat
2 perintah yaitu busBesar.addPenumpang() dan busBesar.cetak(). Agar
kedua perintah tersebut dapat diakses, maka harus mendeklarasikan objek
Bus2 busBesar=new Bus2(); terlebih dahulu. Perintah
busBesar.addPenumpang() digunakan untuk input jumlah penumpang.
Sehingga inputan tersebut langsung diproses oleh method addPenumpang.
Dan hasil proses di method addPenumpang akan ditampilkan melalui
perintah busBesar.cetak().
3. Nama Program : Menghitung Gaji Pegawai
Source Code :
class GajiPegawai
{
//deklarasi variabel dengan modifier private
private double gajiKotor, pajak, gajiBersih;
private double potongan=75000;
private String nama = "Surya";

public void setGaji(double gaji)//mengatur nilai


gajiKotor
{
gajiKotor=gaji;
}
public void hitungPajak()//menghitung nilai pajak
{
pajak=0.2*gajiKotor;
}
public void hitungGaji()//menghitung nilai
gajiBersih
{
gajiBersih=gajiKotor-pajak-potongan;
}
public String namaPegawai() //menampilkan nama
{
return nama;
}
public double getGajiKotor() //menampilkan
gajiKotor
{
return gajiKotor;
}
public double getPajak() //menampilkan nilai
pajak
{
return pajak;
}
public double getPotongan() //menampilkan nilai
potongan
{
return potongan;
}
public double getGajiBersih() //menampilkan nilai
gaji bersih
{
return gajiBersih;
}
}
public class UjiGaji {
public static void main(String[] args) {
GajiPegawai gaji = new GajiPegawai();
System.out.print("\n\t Gaji Bulanan
Karyawan");

System.out.println("\n*******************************
*********\n");
System.out.print(" Nama :
"+gaji.namaPegawai());
gaji.setGaji(3000000.0);
System.out.print("\n Gaji Kotor :
"+gaji.getGajiKotor());
gaji.hitungPajak();
System.out.print("\n Pajak :
"+gaji.getPajak());
System.out.print("\n Potongan :
"+gaji.getPotongan());
gaji.hitungGaji();
System.out.println("\n Gaji Bersih :
"+gaji.getGajiBersih());
}
}
Hasil Program :

Penjelasan :
b. Program diatas menjelaskan tentang menghitung gaji pegawai. Pada class
GajiPegawai terdapat pendeklarasian atribut gajiKotor, pajak, gajiBersih,
potongan yang bertipe data double dan atribut nama yang bertipe data string
yang dideklarasikan dengan modifier private. Untuk menampilkan gaji
kotor. Pajak, dan gaji bersih melalui method utama, masing-masing
atribut(gajiKotor, pajak, gajiBersih) harus memiliki 2 method yang mana
method pertama digunakan untuk menghitung nilai dan method yang kedua
digunakan untuk mencari atau menampilkan nilai yang telah dihitung.
Contohnya pada program diatas atribut gajiKotor memiliki 2 method yaitu
setGaji() dan getGajiKotor(). Method setGaji() digunakan untuk mengatur
nilai gaji kotor dan method getGajiKotor() digunakan untuk menampilkan
nilai perhitungan dari gajiKotor. Sehingga pada method utama terdapat
perintah gaji.setGaji(3000000.0); yang berarti mengatur gaji kotor sejumlah
3000000. Untuk dapat menggunakan perintah gaji.setGaji(3000000.0)
terlebih dahulu harus membuat objek GajiPegawai gaji = new
GajiPegawai();. Untuk menampilkan jumlah gaji kotor yang didapat
menggunakan perintah gaji.getGajiKotor(). Apabila pengaturan gaji kotor
telah selesai, maka otomatis program akan menampilkan nilai dari pajak dan
gaji bersih.
c. Mutator method : method setGaji(double gaji), hitungPajak(), dan
hitungGaji().
Accessor method : method namaPegawai(), getGajiKotor(), getPajak(),
getPotongan(), getGajiersih().

4. Nama Program : Membuat button


Source Code :
import javax.swing.JFrame;
import javax.swing.JButton;
public class CreateButton {
public static void main(String[] args) {
JFrame frame = new JFrame();
JButton button = new JButton("TOMBOL");
//membuat dan menugaskan objek button
frame.setTitle("CREATE BUTTON");
frame.setBounds(200,300,250,125);
frame.add(button); //menmbahkan button pada
frame
frame.setBounds(25,25,100,25); //mengatur
posisi tamplan button dan ukuran button
frame.setLayout(null);
frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

Hasil Program :
Penjelasan :
Program diatas menjelaskan tentang pembuatan button. Pada
pembuatan button harus mengimport javax.swing.Jframe dan
javax.swing.JButton;. Class Jbutton pada package javax.swing
digunakan untuk membuat komponn berupa tombol berisi teks maupun
ikon. Untuk membuat frame pada program tersebut terlebih dahulu harus
mendeklarasikan objek Jframe frame = new Jframe(); dan objek JButton
button = new Jbutton(“TOMBOL”); yang berfungsi untuk membuat objek
button. Untuk menambahkan button pada frame menggunkaan perintah
frmae.add(button); dan pengaturan posisi tampilan dan ukuran button
menggunakan perintah frame.setBounds();
5. Nama Program : Mengatur icon dan event pada button
Source Code :
import java.awt.event.*;
import javax.swing.*;

public class TryButton implements ActionListener{


private JButton btnEvent; //membuat objek
btnEvent dari class JButton
public TryButton()
{
JFrame frame = new JFrame();
frame.setBounds(200,200,300,200);
frame.setTitle("TRY BUTTON");

Icon um = new ImageIcon("um3.jpg"); //membuat


dan menugaskan objek um
btnEvent = new JButton("Logo UM", um);
//menugaskan objek btnEvent
frame.add(btnEvent);
btnEvent.setBounds(50,50,175,50);

frame.setLayout(null);
frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnEvent.addActionListener(this);
//mendeteksi event pada button
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btnEvent) //jika tombol
ditekan
{
//aksi yang terjadi jika tombol ditekan
JOptionPane.showMessageDialog(null, "Teks
dalam tombol : \n"+e.getActionCommand());
}
}
public static void main(String[] args) {
TryButton frame = new TryButton();
}
}

Hasil Program :

Penjelasan :
Program diatas menjelaskan tentang pembuatan button dan apabila
user mengklik button tersebut akan keluar sebuah informasi. Program diatas
terdapat pendeklarasian class TryButton yang dimplementasikan pada class
ActionListener. Untuk membuat button dengan logo um, terlebih dahulu
harus membuat framenya dengan mendeklarasikan objek JFrame frame =
new JFrame();. Untuk menambahkan icon um pada button. Untuk
menugaskan objek btnEvent pada logo um menggunakan objek btnEvent =
new JButton("Logo UM", um);. Agar objek btnEvent dapat digunakan pada
frame harus menggunakan frame.add(btnEvent). Untuk mendeteksi event
pada button menggunakan perintah btnEvent.addActionListener(this);.Pada
method actionPerformed(ActionEvent e) terdapat suatu kondisi
e.getSource()==btnEvent yang berarti jika tombol tersebut ditekan akan
menampilkan message “Logo UM”. Pada method utama terdapat
pendeklarasian objek TryButton frame = new TryButton(); yang mana
digunakan untuk menjalankan program pda class TryButton.

IV. Tugas
1. Nama Program : Menerapkan konsep encapsulation
Source Code :
import java.util.Scanner;
class Buku
{
String judulBuku="Konsep Dasar Pemprograman
Java";
String pengarangBuku="Patrick Naughton";
String namaPembeli, alamatPembeli;
int banyakPembelian, bayarBuku, sisaBuku;
int stokBuku=27;
int hargaBuku=75000;

public void setPembeli(String nama)


{
namaPembeli=nama;
}
public void setAlamat(String alamat)
{
alamatPembeli=alamat;
}
public void setPembelian(int pembelian)
{
banyakPembelian=pembelian;
}
public void hitungBayar()
{
bayarBuku=hargaBuku*banyakPembelian;
}
public void hitungSisa()
{
sisaBuku=stokBuku-banyakPembelian;
}
public String getPembeli()
{
Scanner a = new Scanner(System.in);
System.out.print("Nama Pembeli : ");
namaPembeli= a.nextLine();
return namaPembeli;
}
public String getAlamat()
{
Scanner b = new Scanner(System.in);
System.out.print("Alamat Pembeli : ");
alamatPembeli = b.nextLine();
return alamatPembeli;
}
public int getBanyakbeli()
{
Scanner c = new Scanner(System.in);
System.out.print("Banyak Pembelian : ");
banyakPembelian = c.nextInt();
return banyakPembelian;
}
public int getHitungBayar()
{
return bayarBuku;
}
public int getHitungSisa()
{
return sisaBuku;
}
}
public class UjiData1
{
public static void main(String[] args)
{
Buku DataBuku = new Buku();
System.out.println("\n\tDATA BUKU YANG AKAN
DIBELI");
System.out.println("Judul Buku :
"+DataBuku.judulBuku);
System.out.println("Nama Pengarang :
"+DataBuku.pengarangBuku);
System.out.println("Stok Awal Buku :
"+DataBuku.stokBuku);
System.out.println("Harga Buku :
"+DataBuku.hargaBuku);
System.out.println("\n\t DATA PEMBELI");
DataBuku.getPembeli();
DataBuku.getAlamat();
DataBuku.getBanyakbeli();
System.out.println("\n\tLAPORAN PEMBELIAN");
System.out.println("Nama Pembeli :
"+DataBuku.namaPembeli);
System.out.println("Alamat Pembeli :
"+DataBuku.alamatPembeli);
System.out.println("Banyak Pembelian :
"+DataBuku.banyakPembelian);
DataBuku.hitungBayar();
System.out.println("Total Pembelian : Rp.
"+DataBuku.getHitungBayar() +".00");
System.out.println("\n\tLAPORAN STOK AKHIR");
DataBuku.hitungSisa();
System.out.println("Stok Akhir Buku :
"+DataBuku.getHitungSisa());
}
}

Hasil Program :
Penjelasan :
Program diatas menjelaskan tentang penerapan enscapsulation pada
bidang pertokoan. Pada program terdapat pendeklaasian atribut judulBuku,
pengaragBuku, namaPembeli, alamatPembeli yang bertipe data string dan
atribut namaPembeli, bayarBuku, sisaBuku, stokbuku, hargaBuku. Pada
enscapsulation setiap atribut harus memiliki 2 method, yang mana method
pertam digunakan untuk mengubah atau menginput data dan method yang
kedua digunakan untuk menampilkan nilai. Pada method utama untuk
penginputan data pembeli (meliputi nama pembeli, alamat pembeli, banyak
pembelian) menggunakan perintah DataBuku.getPembeli();,
DataBuku.getAlamat();, dan DataBuku.getBanyakbeli();. Hasil dari ketiga
perintah tersebut akan ditampilkan melalui laporan pembelian. Pada laporan
pembelian juga menampilkan total pembelian dengan mengakses perintah
DataBuku.getHitungBayar(). Pada laporan stok akhir terdapat stok akhir
buku yang diakses menggunakan perintah DataBuku.getHitungSisa().

2. Nama Program : Memberi icon pada Button


Source Code :
import java.awt.event.*;
import javax.swing.*;
public class ThreeButtons implements ActionListener
{
private JButton btnText;
private JButton btnIcon;
private JButton btnInteraktif;

public ThreeButtons()
{
JFrame frame = new JFrame();
frame.setBounds(200,200,500,300);
frame.setTitle("BUTTON AND ICON");

btnText = new JButton("Button Text");


frame.add(btnText);
btnText.setBounds(50,50,250,50);

ImageIcon java1 = new ImageIcon("java1.jpg");


btnIcon = new JButton("Button Text Icon", java1);
frame.add(btnIcon);
btnIcon.setBounds(100,110,250,50);

ImageIcon java2 = new ImageIcon("java2.jpg");


btnInteraktif = new JButton("Button Interaktif",
java2);
frame.add(btnInteraktif);
btnInteraktif.setBounds(150,170,250,50);

frame.setLayout(null);
frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnText.addActionListener(this);
btnIcon.addActionListener(this);
btnInteraktif.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btnText)
{
JOptionPane.showMessageDialog(null, "Anda telah
menekan : "+e.getActionCommand());
}
else if(e.getSource()==btnIcon)
{
JOptionPane.showMessageDialog(null, "Anda telah
menekan : "+e.getActionCommand());
}
else if(e.getSource()==btnInteraktif)
{
JOptionPane.showMessageDialog(null, "Anda telah
menekan : "+e.getActionCommand());
}
}
public static void main(String[] args)
{
ThreeButtons frame = new ThreeButtons();
}
}

Hasil Program :
Penjelasan :
Program diatas menjelaskan tentang pemberian icon pada button.
Pada program terdapat 3 button yaitu Button Text, Button Text Icon, dan
Button Interaktif. Untuk pendeklarasian masing-masing button
menggunakan objek btnText = new JButton("Button Text");, btnInteraktif
= new JButton("Button Interaktif", java2);, dan btnIcon = new
JButton("Button Text Icon", java1);. Untuk menambahkan ketiga button
tersebut ke dalam frame menggunakan perintah frame.add(). Untuk memberi
icon pada button menggunakan perintah ImageIcon java1 = new
ImageIcon("java1.jpg"); dan ImageIcon java2 = new
ImageIcon("java2.jpg");. Apabila ingin mengatur ukuran atau posisi dari
icon button menggunakan perintah btnicon.setBounds(). Pada method
actionPerformed(ActionEvent e) terdapat suatu kondisi
if(e.getSource()==btnText), else if(e.getSource()==btnIcon), dan else
if(e.getSource()==btnInteraktif) yang mana apabila user mengklik salah satu
dari ketiga button tersebut maka akan muncul pesan yang berbeda-beda dari
masing-masing button.

V. Kesimpulan
Berdasarkan laporan modul 3 yang saya kerjakan, dapat diambil kesimpulan
bahwa :
 Encapsulation merupakan cara untuk menyembunyikan informasi detail
dari suatu class.
 Pada proses enscapsulation atribut akan disembunyikan dari cass dan
package lain, dan hanya dapat diakses dan diubah value atributnya bila
menggunakan suatu method.
 Proses penerapan enscapsulation terlebih dahulu mendeklarasikan
atributnya menggunakan hak akses private. Kemudian masing-masing
atribut memiliki 2 method .
 Method pertama digunakan untuk mengambil value atribut(accessor
method).
 Method kedua digunakan untuk mengubah atau memodifikasi value dari
atribut(mutator method).
 Dalam aplikasi berbasis GUI, selalu terdapat banyak event yang
membutuhkan bantuan dari event listener dan event handler yang
terdapat pada package java.awt.event.

VI. Daftar Rujukan


 Kadir, Abdul.2005.Dasar Pemrograman Java 2. Yogyakarta : CV. Andi
Offset.
 Tim Asisten Dosen. 2018. Modul 3 Enscapsulation. Malang: Universitas
Negeri Malang.
 Termasmedia. Enskapsulasi Data dengan Aksesor dan Mutator di Java.
https://www.termasmedia.com/pemrograman/java/211-enkapsulasi-data-
dengan-aksesor-dan-mutator-di-java.html (diakses pada tanggal 05
Oktober 2018).
 Yuliana. 2012. Modul Bab 8 Encapsulation OK. Surabaya : Politeknik
Negeri Surabaya.
 Dian, Muhar.2015. Belajar Java Swing: Cara Menggunakan
JOptionPane untuk Membuat Dialog. https://www.petanikode.com/java-
swing-joptionpane/ (Diakses pada tanggal 05 Oktober 2018)

Anda mungkin juga menyukai