Title | LAPORAN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK 3 "ENCAPSULATION" |
---|---|
Author | Fajri Novita |
Pages | 31 |
File Size | 556.5 KB |
File Type | |
Total Downloads | 117 |
Total Views | 293 |
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: Fajri Novitasari 170533628549 S1 PTI ‘17 OFF A UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSA...
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: Fajri Novitasari
170533628549 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 metode untuk mengatur
struktur class dengan cara untuk menyembunyikan informasi detail dari suatu class. Struktur class yang dimaksud adalah property dan method. Dengan
enkapsulasi,
kita
bisa
membuat
pembatasan
akses
kepada property dan method, sehingga hanya property dan method tertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information hiding’. 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.
Jenis Enkapsulasi Ada 3 jenis dalam oop untuk mengatur hak akses dari suatu property dan method, yaitu : 1. Public. Ketika sebuah property atau method dinyatakan sebagai public, maka seluruh kode program di luar class bisa mengaksesnya, termasuk class turunan. 2. Protected,
jika
sebuah
property
atau
method
dinyatakan
sebagai protected, berarti property atau method tersebut tidak bisa diakses dari luar class, namun bisa diakses oleh class itu sendiri atau turunan
class
tersebut.
Apabila
kita
mencoba
mengakses protected property atau protected method dari luar class, akan menghasilkan error 3. Private, Jika sebuah property atau method di-set sebagai private, maka satu-satunya yang bisa mengakses adalah class itu sendiri. Class lain tidak bisa mengaksesnya, termasuk class turunan. 4.
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). Kelas JButton merupakan kelas turunan dari kelas AbstractButton yang terletak di paket javax.swing. Di beberapa contoh program di artikel Memahami Cara Menangani Aksi (Event) Di Pemrograman Java
dan Penanganan ActionEvent Di Java
(actionPerformed), telah digunakan kelas JButton untuk memicu action event dan bagaimana event tersebut ditangani. Metoda-metoda yang dimiliki kelas JButton merupakan metoda turunan dari kelas AbstractButton. Metoda isSelected yang dipanggil melalui obyek check box merupakan salah satunya. Karena kelas
JCheckBox adalah juga turunan dari kelas AbstractButton, maka metoda tersebut dapat dipanggil melalui obyek (instance) dari kelas JCheckBox. Dibatasi hanya sampai pada superclass JComponent, hirarkhi turunan dari kelas JButton adalah sebagai berikut:
Kelas JButton memiliki lima buah konstruktor untuk mengkonstruksi obyek button secara berbeda. Empat dari lima konstruktor kelas JButton yang paling sering digunakan terdapat dalam tabel berikut ini. Konstruktor
Keterangan
JButton()
Mengkonstruksi objek button tanpa teks dan icon
JButton(Icon icon)
Mengkontruksi objek button dengan icon
JButton(String text)
Mengkontruksi objek button dengan teks
JButton(String text, Icon icon)
Mengkontruksi objek button dengan teks dengan icon
5.
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.
6.
Tipe Event Java mempunyai beberapa tipe event selain action event. Tipe-tipe event Java (Java event types) sebenarnya merupakan kelas-kelas event. Kelas event dapat menjadi tipe parameter dari metoda yang didefinisikan di dalam interfes yang bersesuaian dengan tipe event. Objek kelas event berisi properti-properti yang berkaitan dengan event tersebut. Setiap nama tipe event mempunyai nama interfes listener dan nama metoda untuk registrasi yang bersesuaian kecuali interfes (interface) MouseMotionListener. Berikut ini adalah tabel beberapa tipe event, listener dan kelas (source object) yang memicu munculnya event:
Setiap event mempunyai interfes yang harus diimplementasikan oleh obyek pendengar (listener object), sedangkan obyek pendengar harus mendeklarasikan ulang semua metoda (handler) yang dimiliki interfes untuk menangani event. Dari tabel di atas, Anda dapat melihat bahwa MouseEvent mempunyai
dua
buah
MouseMotionListener.
listener
yaitu
MouseListener
dan
juga
7.
Accessor dan Mutator Acessor adalah sebuah konsep dimana ada sebuah method yang di gunakan untuk mengembalikan nilai dari field/variable yang memiliki hak akses private/protected. Kebalikan dari Accessor, mutator meimiliki sifat yang sangat berbeda dengan Acessor, karena mutator akan merubah data dari sebuah Field/Variable yang bersangkutan.
III.
Tugas Latihan 1. Nama Program Source Code
: Bus Mini :
a) Source Code “Bus1” class Bus1 { //inisialisasi 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); } }
b) Source Code “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) Hasil program “Bus1”
b) Hasil program “UjiBus1”
Penjelasan
:
Program diatas menampilkan penumpang Bus Mini Blitar Raya, pada program belum menerapkan enkapsulasi. Pada syntax class Bus1
dideklarasikan variabel penumpang=5, maxPenumpang=5 bertipe data int dengan modifier public. Selanjutnya fungsi cetak dengan modifier public yang digunakan untuk mencetak jumlah penupang. Pada fungsi cetak terdapat perintah untuk menampilkan output dari penumpang bus mini dengan memanggil
variabel
syntaxnya
penumpang
System.out.println("Penumpang Bus Mini sekarang adalah "+penumpang)
:
dan menampilkan penumpang maximal dengan cara
memanggil
variabel
System.out.println("Penumpang "+maxPenumpang).
maxPenumpang maksimal
sytaxnya
seharusnya
adalah
:
Pada program class Bus1 tidak dapat menampilkan
output karena tidak terdapat main method yang berfungsi untuk menampilkan output. Selanjutnya pada class UjiBus1 yang memiliki modifier public, pertama membuat fungsi main digunakan method public static void main (String[] args). Static
pada method main berarti method main
tidak mengubah atau menggunakan objek yang diciptakan oleh kelas tersebut, sehingga dapat dikatakan berdiri sendiri, tidak terikat dengan objek dan akan membuat fungsi dapat dieksekusi langsung tanpa harus membuat instansiasi objek dari class. args
Dalam method main terdapat parameter String[]
berupa array dengan tipe data String, parameter tersebut akan
menampung semua argumen yang diberikan ke program . Pada fungsi main pertama
menampilkan
judul
System.out.println("\n*****
dari
program
PENUMPANG
RAYA*****"), kemudian membuat objek baru
BUS
dengan
syntax
MINI
BLITAR
yaitu busMini dari class Bus1
syntaxnya yaitu Bus1 busMini = new Bus1() . Menampilkan Jumlah penumpang awal dengan memanggil objek bisMini dan fungsi cetak, syntaxnya busMini.cetak(). Untuk mendapatkan jumlah penumpang yang ditambah maka variabel penumpang ditambah dengan 7, syntaxnya busMini.penumpang
=
busMini.penumpang
+
7
, kemudian untuk
menampilkan output hasil setelah ditambah 7 digunakan fungsi cetak dengan syntax busMini.cetak(). Untuk mendapatkan jumlah penumpang seteleh
dikurangi 9 maka variabel penumpang dikurangi dengan 3, kemudian untuk menampilkan
output
busMini.cetak().
setelah
hasil
setelah
dikurangi
3
dengan
syntax
Selanjutnya untuk mendapatkan jumlah penumpang
ditambah
9
busMini.penumpang
+
dengan 9
syntax
busMini.penumpang
dan untuk menampilkan output hasil setelah
dijumlah dengan menggunakan syntax busMini.cetak(). 2. Nama Program Source Code
=
: Bus Besar :
a) Source Code “Bus2” class Bus2 { //inisialisasi variabel dengan modifier private private int penumpang=0; private int maxPenumpang=40; public void addPenumpang(int penumpang) //menghitung jumlah 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 penumpang 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); } }
b) Source Code “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) Hasil program “Bus2”
b) Hasil program “UjiBus2”
Penjelasan
:
Program diatas menampilkan penumpang Bus Besar Blitar Raya. Program ini menggunakan class Bus2. Pada awal program, dideklarasikan terlebih dahulu variabel penumpang=0, maxPenumpang=40 bertipe data int dengan modifier private. Selanjutnya fungsi addPenumpang yang digunakan untuk menghitung jumlah penumpang, pada fungsi dideklarasikan variabel penumpang
dan add dengan tipe data int. Kemudian mendeklarasikan
add=this.penumpang+penumpang
dimana
nilai
add
merupakan
penjumlahan variabel penumpang=0 dengan nilai penumpang yang baru. Terdapat
kondisi
jika
if(add>maxPenumpang).
jumlah
penumpang
melebihi
batas,
Jika kondisi benar, yaitu penumpang melebihi
batas maka program akan menampilkan output jumlah penumpang bus besar dan maximal penumpang dengan memanggil variabel add dan maxPenumpang dan menampilkan "Jumlah penumpang melebihi batas". Apabila kondisi salah maka akan menampilkan hasil dari syntax this.penumpang=add. Pada fungsi cetak digunakan untuk mencetak output jumlah penumpang. System.out.println("Penumpang Bus Besar sekarang: "+penumpang)
digunakan untuk menampilkan jumlah penumpang dengan memanggil variabel
penumpang.
System.out.println("Penumpang
maksimal
seharusnya : "+maxPenumpang)
digunakan untuk menampilkan jumlah
maximal penumpang dengan memanggil variabel maxPenumpang. 3. Nama Program Source Code
: Gaji Pegawai :
a) Source Code “GajiPegawai” 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 nilai gajiKotor { return gajiKotor; } public double getPajak() //menampilkan nilai pajak { return pajak; } public double getPotongan() //menampilkan nilai potongan { return potongan; } public double getGajiBersih() //menampilkan nilai gajiBersih { return gajiBersih; }
}
b) Source Code “UjiGajiPegawai” import java.io.*; public class UjiGajiPegawai { 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; } public static void main(String[] args) { 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 = Double.parseDouble(bacaInputan()); hasilgaji.setGaji(gaji); hasilgaji.hitungPajak(); hasilgaji.hitungGaji(); System.out.println("\nBesar Gaji Kotor : Rp. "+gaji+""); System.out.println("Besar Pajak yang diterima : Rp. "+hasilgaji.getPajak()); System.out.println("Besar Potongan Gaji : Rp. "+hasilgaji.getPotongan()); System.out.println("Besar Gaji Bersih : Rp. "+hasilgaji.getGajiBersih()); } }
Hasil Program
:
a) Hasil Program “GajiPegawai”
b) Hasil Program “UjiGajiPegawai”
Penjelasan
:
Program diatas merupakan program untuk menampilkan gaji pegawai. Pada class GajiPegawai dideklasikan variabel gajiKotor, gajiBersih, private,
potongan=75000
pajak,
bertipe data double dengan modifier
dan variabel nama = “Surya” bertipe data String dengan
modifier private. Pada fungsi setGaji dideklarsikan variabel gaji bertipe double, fungsi ini digunakan untuk menentukan gaji kotor yaitu gajiKotor sama
dengan
gaji
yang diterima dan dapat ditulis syntaxnya
gajiKotor=gaji . Fungsi hitungPajak
digunakan untuk menghitung nilai
pajak, nilai pajak diperoleh dengan perkalian 0.2*gajiKotor dan syntaxnya ditulis pajak=0.2*gajiKotor. Fungsi hitungGaji digunakan untuk mengatur nilai gajiBersih, diperoleh dengan gajiKotor dikurangi pajak dan dikurangi lagi dengan potongan, dapat ditulis dengan syntax gajiBersih=gajiKotor-pajak-potongan.
Fungsi namaPegawai bertipe
data String digunakan untuk menampilkan nama dengan melakukan pengembalian nilai data yang telah dideklarasikan yaitu nama = "Surya". Fungsi getGajiKotor bertipe data double digunakan untuk menampilkan nilai dari gajiKotor yaitu dengan melakukan pengembalian nilia data yang
telah dideklarasikan dengan syntax return gajiKotor. Fungsi getPajak bertipe double digunakan untuk menampilkan nilai pajak dengan syntax return
yaitu mengembalikan nilai pajak yang sudah dihitung
pajak
sebelumnya. Fungsi getPotongan bertipe data double digunakan untuk menampilkan potongan dengan syntax return potongan dimana hasilnya diperoleh dengan memanggil nilai data yang telah dideklarasikan. Fungsi getGajiBersih
bertipe data double digunakan untuk menampilkan nilai
gajiBersih dengan memanggil nilai data yang telah dideklarasikan yaitu gajiBersih dapat ditulis return
gajiBersih.
Pada program class
GajiPegawai tidak dapat menampilkan output karena tidak terdapat main method
yang berfungsi
untuk
menampilkan
UjiGajiPegawai, pertama dideklarasikan import
output.
Pada
class
java.io.*
yang
merupakan paket input/output yang terdapat pada BufferedReader. public static
String
bacaInputan()digunakan
untuk menginputkan data.
Selanjutnya dideklarasikan variabel baca dengan variabel String String baca="".
InputStreamReader
InputStreamReader(System.in)
dan BufferedReader
input=new buf=
new
BufferedReader (input) digunakan untuk membuat objek input dan buf
sehingga dapat membaca variabel yang akan diinputkan ke dalam system. try – catch
digunakan untuk memproses bila terjadi kesalahan atau error,
pada try digunakan untuk memanggil statement-statement yang berpotensi menyebabkan exception dan catch digunakan untuk memproses atau menangani bila terjadi exception. ...