Oleh:
Hanida Rahma Salimi 190533646884
I. TujuanPraktikum
1. Menerapkan konsep encapsulation.
2. Menyembunyikan data.
3. Mengakses data yang disembunyikan.
4. Menggunakan class JButton dan melakukan mekanisme event handing.
II. DasarTeori
1. Konsep Enscapsulation
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.
Maksud dari encapsulation adalah membungkus class dan menjaga apa apa
saja yang ada didalam class tersebut, baik method ataupun atribut, agar tidak
dapat di akses oleh class lainnya. Untuk menjaga hal tersebut dalam
Encapsulation dikenal nama Hak Akses Modifier yang terdiri dari :
a. Private = memberikan hak akses hanya pada class itu sendiri, artinya apa-
apa saja yang ada di dalam class A baik itu method ataupun atribut hanya
bisa diakses oleh class A saja, class lain tidak bisa mengaksesnya.
b. Public = memberikan hak akses kepada atribut atau method agar bisa
diakses oleh siapapun (property atau class lain diluar class yang
bersangkutan), artinya method atau atribut yang ada diclass A dapat diakses
oleh siapaun baik itu class A, class B dan seterusnya.
c. Protected = memberikan hak akses kepada class itu sendiri dan class hasil
turunannya (inheritance), artinya apa apa saja yang ada diclass A hanya bisa
diakses oleh class A sendiri dan class yang meng Extends class A. Namun
harus dipahami class lain yang berada dalam satu package dengan class A
mampu mengakses tipe data protected, Sedangkan yang tidak mampu
mengakses adalah class-class yang berada diluar package class A. untuk
dapat mengaksesnya, class yang berada diluar package class A harus meng
extends class A.
2. Modularitas
Modularitas berarti objek dapat dikelola secara independen. Karena
kode sumber bagian internal objek dikelola secara terpisah dari antarmuka,
maka Kita bebas melakukan modifikasi yang tidak menyebabkan masalah
pada bagian-bagian lain dari sistem. Manfaat ini mempermudah
mendistriibusikan objek-objek dari sistem.
Setiap event object mempunyai type event yang berbdea beda. sehingga kita
harus menentukan type event sebelum menentukan jenis interface listener.
karena setiap type event mempunyai jenis interface listener yang bersesuaian.
1. ActionEvent
2. ItemEvent
3. WindowEvent
4. ContainerEvent
5. ComponentEvent
6. FocusEvent
7. TextEvent
8. KeyEvent
9. MouseEvent
10.AdjustmentEvent
1. ActionListener
2. ItemListener
3. WindowListener
4. ContainerListener
5. ComponentListener
6. FocusListener
7. TextListener
8. KeyListener
9. MouseListener
10. MouseMotionListener
11. AdjustmentListener
Berdasarkan tulisan diatas, setiap type event mempunyai satu jenis interface
listener kecuali MouseEvent yang mempunyai dua jenis interface listener. dan
setiap interface mempunyai method abstract yang harus di override class yang
meng-impletasikan interface. event listener dan event handler terdapat pada
package java.awt.event
Bagaimana event handling dalam Java? ada tiga langkah penting dalam
event handling
1. Deklarasikan class yang akan meng-handle event yang terjadi dan tuliskan
code yang menyatakan class tersebut meng-implement interface listener
2. Event source mendaftarkan sebuah listener melalui
method add<type>Listener
3. Kode yang mengimplementasikan method pada interface listener pada class
yang akan meng-handle event. [ Override ]
III. TugasLatihan
1. Nama Program : Bus Mini.
Source Code :
a. Class Bus1
class Bus1
{
//inisialisasi variabel dengan modifier public
public int penumpang=5;
public int maxPenumpang=15;
b. Class UjiBus1
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;
System.out.println("\n\tJumlah Penumpang
Setelah Ditambah 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 dikurang 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 :
a. Bus1
b. UjiBus1
Penjelasan :
Program dengan class Bus1 ini menampilkan jumlah penumpang bus
mini Blitar Raya. Dalam program ini belum menerapkan enkapsulasi. Pada
kode Bus1 pendeklarasian variabel yang bertipe data integer dan dengan
modifier public. Fungsi cetak di sini berfumgsi untuk melakukan perintah
menampilkan output dari penumpang bus mini. Pada program class Bus 1
ini tidak dapat manampilkan output karena tidak terdapat method main yang
berfungsi untuk menampilkan output.
Selanjutnya adalah program dengan class UjiBus1 yang
menggunakan modifier public.Sudah terdapat method main public static
void main(String[] args). Static di sini menandakan bahwa method
main tidak mengubah atau menggunakan objek yang diciptakan oleh kelas
tersebut, sehingga bisa dikatakan berdiri sendiri, tidak terkait dengan objek
dan akan membuat fungsi dapat dikompilasi langsung tanpa harus membuat
instansiasi objek dari class.Di program ini membuat objek baru yaitu
busMini dari class Bus1 yang kodenya Bus1 busMini = new Bus1().
Lalu menampilkan jumlah penumpang dengan memanggil objek busMini
dan fungsi cetak yang kodenya busMini.cetak(). Untuk mendapatkan
jumlah yang ditambah atau dikurangi maka tinggal menambahkan operand
dan angka yang diperlukan di depan variabel. Kompilasi program
menggunakan CMD.
b. Class UjiBus2
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 :
a. Class Bus2
b. Class UjiBus2
Penjelasan :
Program dengan class Bus1 ini menampilkan jumlah penumpang bus
mini Blitar Raya. Dalam program ini belum menerapkan enkapsulasi. Pada
kode Bus1 pendeklarasian variabel yang bertipe data integer dan dengan
modifier public. Fungsi cetak di sini berfumgsi untuk melakukan perintah
menampilkan output dari penumpang bus mini. Pada program class Bus 1
ini tidak dapat manampilkan output karena tidak terdapat method main yang
berfungsi untuk menampilkan output.
Selanjutnya adalah program dengan class UjiBus1 yang
menggunakan modifier public.Sudah terdapat method main public static
void main(String[] args). Static di sini menandakan bahwa method
main tidak mengubah atau menggunakan objek yang diciptakan oleh kelas
tersebut, sehingga bisa dikatakan berdiri sendiri, tidak terkait dengan objek
dan akan membuat fungsi dapat dikompilasi langsung tanpa harus membuat
instansiasi objek dari class.Di program ini membuat objek baru yaitu
busMini dari class Bus1 yang kodenya Bus1 busMini = new Bus1().
Lalu menampilkan jumlah penumpang dengan memanggil objek busMini
dan fungsi cetak yang kodenya busMini.cetak(). Untuk mendapatkan
jumlah yang ditambah atau dikurangi maka tinggal menambahkan operand
dan angka yang diperlukan di depan variabel. Kompilasi program
menggunakan CMD.
b. Class UjiGajiPegawai
import java.util.Scanner;
public class UjiGajiPegawai
{
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
GajiPegawai hasilgaji = new GajiPegawai();
double gaji;
System.out.println("\n **** GAJI PEGAWAI
****");
System.out.println("Nama Pegawai:
"+hasilgaji.namaPegawai());
System.out.print("Masukkan gaji Pegawai : Rp.
");
gaji = input.nextInt();
hasilgaji.setGaji(gaji);
hasilgaji.hitungPajak();
hasilgaji.hitungGaji();
System.out.println("\nBesar Gaji Kotor : Rp.
"+gaji+"");
System.out.println("Besar Pajak yang diterima :
Rp. "+hasilgaji.getGajiKotor());
System.out.println("Besar Potongan Gaji : Rp.
"+hasilgaji.getPotongan());
System.out.println("Besar Gaji Bersih : Rp.
"+hasilgaji.getGajiBersih());
}
}
Hasil Program :
a. Class GajiPegawai
b. Class UjiGajiPegawai
Penjelasan :
Program ini merupakan program untuk menampilkan gaji pegawai.
Pada class GajiPegawai memiliki beberapa variabel dan beberapa tipe data
serta menggunakan modifier private. Variabel gajiKotor, pajak,
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Hasil Program :
Penjelasan :
Program ini merupakan program untuk menampilkan sebuah button.
Dalam program menggunakan dua fungsi. Pertama fungsi import
javax.swing.JFrame; yang berfungsi untuk mengimport fungsi class
JFrame dari package javac.swing,. Kedua adalah fungsi import
javax.swing.JButton; yang berfungsi untuk mengimport class JButton
yang berguna untuk membuat komponen berupa tombol berisi teks maupun
icon. Sudah terdapat method main public static void main(String[]
args). Static di sini menandakan bahwa method main tidak mengubah
atau menggunakan objek yang diciptakan oleh kelas tersebut, sehingga bisa
dikatakan berdiri sendiri, tidak terkait dengan objek dan akan membuat
fungsi dapat dikompilasi langsung tanpa harus membuat instansiasi objek
dari class. Terdapat fungsi JButton button = new JButton("TOMBOL");
yang berfungsi untuk membuat dan menugaskan objek button. Program ini
dikompilasi dengan CMD.
public TryButton()
{
JFrame frame = new JFrame();
frame.setBounds(200,200,300,200);
frame.setTitle("TRY BUTTON");
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 ini digunakan untuk menampilkan tombol yang tersambung
dengan dialog box yang berisi pesan. Fungsi import java.awt.event.*;
yaitu merupakan sebuah fungsi import yang digunakan untuk proses
deklarasi dari class event yang berisi komponen dari sebuah program yang
dibuat import javax.swing.*; yang merupakan paket berisi kelas-kelas
dan interface untuk komponen GUI swing Java yang menyediakan
dukungan untuk grafis yang portable.
Program ini menggunakan class TryButton dengan
mengimplementasikan ActionListener. ActionListener digunakan untuk
menangani reaksi atas perubahan status pada objek yang digunakan. Sudah
terdapat method main public static void main(String[] args).
Static di sini menandakan bahwa method main tidak mengubah atau
menggunakan objek yang diciptakan oleh kelas tersebut, sehingga bisa
dikatakan berdiri sendiri, tidak terkait dengan objek dan akan membuat
fungsi dapat dikompilasi langsung tanpa harus membuat instansiasi objek
dari class. Kompilasi program ini dengan CMD.
IV. Tugas
1. Nama Program : Pembelian Buku
Source Code :
a. Class Buku
class Buku
{
private String namaPembeli, alamatPembeli;
private int banyakPembelian, sisaBuku, bayarBuku;
private String judulBuku="Konsep Dasar Pemrogaman
Java";
private String pengarangBuku="Patrick Naughton";
private int stokBuku=27;
private int hargaBuku=75000;
b. Class PembelianBuku
import java.util.Scanner;
public class PembelianBuku
{
public static void main(String[] args)
{
Buku ambil = new Buku();
System.out.println("\n\t*** DATA BUKU YANG AKAN
DIBELI ***");
System.out.println("Judul
Buku :"+ambil.getJudul());
System.out.println("Nama
Pengarang :"+ambil.getPengarang());
System.out.println("Stok Awal
Buku :"+ambil.getStok());
System.out.println("Harga
Buku :"+ambil.getharga());
System.out.println("\n\tDATA PEMBELI");
Penjelasan :
Program ini menjelaskan tentang pembelian buku yang mana akan
menampilkan data yang akan dibeli oleh user.
2. Nama Program : ThreeButtons
Source Code :
import java.awt.event.*;
import javax.swing.*;
public class ThreeButtons implements ActionListener
{
private JButton btn1,btn2,btn3;
public ThreeButtons()
{
JFrame frame = new JFrame ();
frame.setBounds(400,400,350,200);
frame.setTitle("BUTTON AND ICON");
Icon java1 = new ImageIcon();
Icon java2 = new ImageIcon("javabiru.jpg");
Icon java3 = new ImageIcon("javahitam.jpg");
btn1 = new JButton("Button");
btn2 = new JButton("Button Text Icon",java2);
btn3 = new JButton("Button Interaktif",java3);
btn3.setRolloverIcon(java3);
frame.add(btn1);
btn1.setBounds(30,10,190,30);
frame.add(btn2);
btn2.setBounds(70,60,190,30);
frame.add(btn3);
btn3.setBounds(120,110,190,30);
frame.setLayout(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btn2)
{
JOptionPane.showMessageDialog(null,"Anda
telah menekan: "+e.getActionCommand());
}
else if(e.getSource()==btn3)
{
JOptionPane.showMessageDialog(null,"Anda
telah menekan: "+e.getActionCommand());
}
}
public static void main(String[] args)
{
ThreeButtons frame = new ThreeButtons();
}
}
Hasil Program :
Penjelasan :
Program diatas digunakan untuk menampilkan tiga tombol
yangtersambung dengan dialog box yang berisi pesan. Fungsi import
java.awt.event.*; merupakan sebuah fungsi import yang digunakan
untuk proses deklarasi dari class event yang berisi komponen dari sebuah
progam yang dibuat import javax.swing.*; yang merupakan paket
berisi kelas-kelas dan interface untuk komponen GUI swing Java yang
menyediakan dukungan untuk grafis yang portable. Program ini
menggunakan class ThreeButtons dengan mengimplementasikan
ActionListener. ActionListener digunakan untuk menangani reaksi atas
perubahan status pada objek yang digunakan. Misalnya akibat penekanan
tombol mouse atau keyboard.
Dalam program ini menggabungkan beberapa fungsi, yaitu fungsi
manampilkan button, membuat objek, menampilkan icon, dan fungsi
menangani reaksi atas perubahan status pada objek yang digunakan seperti
akibat dari penekanan tombol mouse atau keyboard. Program ini dikompilasi
menggunakan CMD. Terdapat tiga hasil kompilasi sesuai dengan urutan
button dan icon yang ditampilkan.
V. Kesimpulan
1. Encapsulation atau enkapsulasi adalah cara untuk menyembunyikan
informasi detail dari suatu class.
2. Encapsulation dikenal nama Hak Akses Modifier yang terdiri dari Private,
Public, dan Protected.
3. Private = memberikan hak akses hanya pada class itu sendiri, artinya apa-
apa saja yang ada di dalam class A baik itu method ataupun atribut hanya
bisa diakses oleh class A saja, class lain tidak bisa mengaksesnya.
4. Public = memberikan hak akses kepada atribut atau method agar bisa diakses
oleh siapapun (property atau class lain diluar class yang bersangkutan)
5. Protected = memberikan hak akses kepada class itu sendiri dan class hasil
turunannya (inheritance)
6. Interface to access data adalah cara melakukan perubahan terhadap attribute
yang telah disembunyikan.
7. 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.
8. Accessor method adalah konsep dimana sebuah method yang
digunakanuntuk mengembalikan nilai dari field/variabel yang memiliki hak
akses private/protected.
9. Mutator method akan merubah data darisebuah field/variabel yang
bersangkutan.
10. ActionLister digunakan untuk menangani reaksi atas perubahan
status pada objek yang digunakan. Misalnya akibat penekanan tombol mouse
atau keyboard.
VI. DaftarRujukan
Tim Asisten Dosen. Modul 3. Encapsulation. Malang : Universitas Negeri
Malang.
Asagaf Habib. 2014. https://autoaplikasi.blogspot.com/2017/10/pengertian-
encapsulation-inheritance.html. Diakses tanggal 10 Maret 2020.
Binus. 2017. https://sis.binus.ac.id/2017/09/04/encapsulation/. Diakses tanggal
10 Maret 2020.
Media Teras. 2017.https://www.termasmedia.com/pemrograman/java/312-
mengenal-kelas-jbutton-di-java.html. Diakses tanggal 10 Maret 2020.
Rifa Rimanda.http://rimanda567rifarifiy.blogspot.com/p/event-handling.html.
Diakses tanggal 10 Maret 2020.