Anda di halaman 1dari 158

LEMBAR PERSETUJUAN

PRAKTIKUM OBJECT ORIENTED PROGRAMMING


SEMESTER GANJIL TAHUN AKADEMIK 2020/2021

Disusun oleh :
Nama : Mochammad Rizky A J
NIM : 1918026
Jurusan : Teknik Informatika S-1

PROGRAM STUDI TEKNIK INFORMATIKA S-1


FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT TEKNOLOGI NASIONAL MALANG
2020
LEMBAR PERSETUJUAN
PRAKTIKUM OBJECT ORIENTED PROGRAMMING
SEMESTER GANJIL TAHUN AKADEMIK 2020/2020

Disusun Oleh
NAMA : Mochammad Rizky A J
NIM : 1918026
PRODI : Teknik Informatika S-1

Mengetahui, Menyetujui,
Kepala Laboratorium Dosen Pembimbing
Pemrograman Komputer

(Ahmad Faisol, ST, MT) (Yoseph Agus Pranoto, ST, MT)


NIP.P.1031000431 NIP.P 1031000432

PROGRAM STUDI TEKNIK INFORMATIKA S-1


FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT TEKNOLOGI NASIONAL MALANG
2019
i

KATA PENGANTAR

Dengan memanjatkan puji syukur kehadirat Allah SWT, karena atas berkah
rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Laporan Praktikum
Mata Kuliah Object Oriented Programming, guna persyaratan dalam menempuh
mata kuliah tersebut.
Laporan ini disusun berdasarkan percobaan dan teori dasar yang ada dalam
buku panduan praktikum, teori yang diperoleh praktikan dari perkuliahan, dan tidak
lupa yaitu Internet sehingga penulis dapat menambah tidak hanya menguasai teori
saja namun juga memahami serta mengaplikasikannya.
Terwujudnya laporan ini, tentunya tidak lepas dari bantuan-bantuan yang
telah penulis terima. Pada kesempatan ini, penulis menyampaikan terima kasih
yang sebesar-besarnya kepada yang terhormat:
1. Bapak Yoseph Agus Pranoto, ST, MT selaku dosen pembimbing
Praktikum Object Oriented Programming.
2. Bapak Yoseph Agus Pranoto, ST, MT. dan Agung Panji Sasmito, S.Pd,
M.Pd. selaku dosen mata kuliah Object Oriented Programming.
3. Bapak Ahmad Faisol, ST, MT selaku Ketua Pelaksana Praktikum Object
Oriented Programming Program Studi Teknik Informatika ITN Malang.
4. Instruktur Lab. Pemrograman Komputer Teknik Informatika yang telah
memberi petunjuk kepada penulis selama pelaksanaan praktikum.
5. Rekan-rekan yang telah membantu dalam pelaksanaan dan penyelesaian
laporan ini.
Harapan penulis, laporan praktikum ini bermanfaat bagi penulis sendiri
maupun pembaca sekalian.

Malang, ..Desember 2020

Penulis
ii

DAFTAR ISI

KATA PENGANTAR ............................................................................................. i


DAFTAR ISI ........................................................................................................... ii
DAFTAR GAMBAR ............................................................................................. iv
DAFTAR TABEL ................................................................................................. vii
BAB I PENDAHULUAN .................................................................................... I-1
I.1 Latar Belakang ............................................................................................. I-1
I.2 Rumusan Masalah ........................................................................................ I-2
I.3 Tujuan .......................................................................................................... I-2
I.4 Manfaat ........................................................................................................ I-2
BAB II KONSEP DASAR OOP ......................................................................... II-1
II.1 Landasan Teori ......................................................................................... II-1
II.2 Langkah – Langkah Praktikum ................................................................ II-4
II.3 Tugas Praktikum 1 : ................................................................................. II-4
II.4 Tugas Rumah 1 :....................................................................................... II-7
II.5 Kesimpulan ............................................................................................. II-10
BAB III KONSTRUKTOR DAN ENKAPSULASI .......................................... III-1
III.1 Landasan Teori ....................................................................................... III-1
III.3 Tugas Praktikum 1 : ............................................................................... III-4
III.4 Tugas Praktikum 2 : ............................................................................... III-7
III.5 Tugas Rumah 1 : .................................................................................. III-10
III.6 Tugas Rumah 2 : .................................................................................. III-13
III.7 Kesimpulan .......................................................................................... III-18
BAB IV INHERITANCE, OVERIDDING DAN OVERLOADING............... IV-1
IV.1 Landasan Teori ...................................................................................... IV-1
IV.2 Langkah – Langkah Praktikum .............................................................. IV-5
IV.3 Tugas Praktikum 1 : ............................................................................... IV-6
IV.4 Tugas Praktikum 2 : ............................................................................. IV-10
IV.5 Tugas Rumah 1 : .................................................................................. IV-13
IV.6 Tugas Rumah 2 : .................................................................................. IV-17
IV.7 Kesimpulan .......................................................................................... IV-22
BAB V ABSTRACT, POLIMORFISME DAN EXCEPTION HANDLING ... V-1
V.1 Landasan Teori ......................................................................................... V-1
V.2 Langkah – Langkah Praktikum ................................................................ V-6
iii

V.3 Tugas Praktikum 1 : ................................................................................. V-7


V.4 Tugas Praktikum 2 : ............................................................................... V-10
V.4 Tugas Praktikum 3 : ............................................................................... V-13
V.5 Tugas Rumah 1 : .................................................................................... V-15
V.6 Tugas Rumah 2 : .................................................................................... V-22
V.7 Tugas Rumah 3 : .................................................................................... V-29
V.8 Kesimpulan ............................................................................................ V-36
BAB VI INTERFACE DAN PENGENALAN DATABASE .......................... VI-1
VI.1 Landasan Teori ...................................................................................... VI-1
VI.2 Langkah – Langkah Praktikum .............................................................. VI-4
VI.3 Tugas Praktikum 1 : ............................................................................... VI-4
VI.4 Tugas Praktikum 2 : ............................................................................... VI-7
VI.5 Tugas Rumah 1 : .................................................................................. VI-15
VI.6 Tugas Rumah 2 : .................................................................................. VI-22
VI.7 Kesimpulan .......................................................................................... VI-30
BAB VII PENERAPAN DATABASE BAGIAN 2 ........................................VII-1
VII.1 Landasan Teori ....................................................................................VII-1
VII.2 Langkah – Langkah Praktikum............................................................VII-4
VII.3 Tugas Praktikum 1 : .............................................................................VII-5
VII.4 Tugas Praktikum 2 : ...........................................................................VII-13
VII.5 Tugas Rumah 1 : ................................................................................VII-20
VII.6 Kesimpulan ........................................................................................VII-28
BAB VIII KESIMPULAN .............................................................................. VIII-1
DAFTAR PUSTAKA ......................................................................................VIII 2
iv

DAFTAR GAMBAR

Gambar 2.1 Desain GUI_Mahasiswa.java .......................................................... II-5


Gambar 2.2 Hasil Gui_Barang.java .................................................................... II-6
Gambar 2.1 Desain GUI_KeuanganBengkel ...................................................... II-8
Gambar 2.2 Hasil Running GUI_Keuanganbengkel ........................................... II-9
Gambar 3.1 Desain Desain GUI_Matkul.java ................................................... III-4
Gambar 3.2 Hasil running GUI_Matkul.java..................................................... III-6
Gambar 3.3 Desain GUI_Nilai.java ................................................................... III-8
Gambar 3.4 Hasil Tampilan GUI_Nilai.java ..................................................... III-9
Gambar 3.5 Desain Desain GUI_KeuanganBengkel.java ............................... III-11
Gambar 3.6 Hasil Tampilan GUI_keuanganBengkel.java............................... III-12
Gambar 3.7 GUI_KeuanganBengkel.java........................................................ III-15
Gambar 3.8 Hasil Tampilan GUI_KeuanganBengkel.java .............................. III-17
Gambar 4.1 Tampiln Desain GUI_Segitiga.java ............................................... IV-7
Gambar 4.2 Tampilan Hasil GUI_Nilai.java (Inheritance) ............................... IV-9
Gambar 4.3 Tampilan Desain lama GUI_Mahasiswa.java .............................. IV-10
Gambar 4.4 Tampilan Desain lama GUI_Mahasiswa.java .............................. IV-10
Gambar 4.5 Tampilan Program GUI_Mahasiswa............................................ IV-12
Gambar 4.6 Tampilan Desain GUI_Promo.java .............................................. IV-14
Gambar 4.6 Hasil Tampilan GUI_Promo.java................................................. IV-16
Gambar 4.7 Tampilan Desain GUI_SparePart.java ......................................... IV-19
Gambar 4.8 Tampilan Hasil GUI_SparePart.java ............................................ IV-21
Gambar 5.1 Tampilan Desain lama GUI_Matkul.java ....................................... V-7
Gambar 5.2 Tampilan Desain baru GUI_Matkul.java ........................................ V-7
Gambar 5.3 Tampilan Hasil GUI_Matkul (jTable)............................................. V-9
Tabel 5.4 Properti Desain GUI_Nilai (Polimorfisme) ...................................... V-11
Gambar 5.5 Hasil Tampilan GUI_Nilai (Polymorfisme) .................................. V-12
Gambar 5.6 Hasil Tampilan GUI_MenuUtama.java ........................................ V-13
Gambar 5.7 Hasil Tampilan GUI_MenuUtama.java ........................................ V-14
Gambar 5.8 Desain GUI_Bengkel.java............................................................. V-18
Gambar 5.9 Tampilan Hasil GUI_Bengkel.java ............................................... V-21
v

Gambar 5.10 Desain GUI_Bengkel.java........................................................... V-25


Gambar 5.11 Tampilan Hasil GUI_Bengkel.java ............................................. V-28
Gambar 5.12 Desain form GUI_Bengkel (Polimorfisme) ................................ V-32
Gambar 5.13 Tampilan Hasil GUI_Bengkel (Polimorfisme) ........................... V-35
Gambar 6.1 Desain lama form GUI_Nilai.java................................................. VI-4
Gambar 6.2 Desain form GUI_Nilai.java (JTable) ............................................ VI-5
Gambar 6.3 Tampilan Hasil GUI_Nilai (jTable) ............................................... VI-6
Gambar 6.4 Membuat database oop_1918026 ................................................... VI-7
Gambar 6.5 Membuat tabel (tb_mahasiswa) ..................................................... VI-7
Gambar 6.6 Menambahkan Library Connector ................................................. VI-7
Gambar 6.7 Desain form GUI_Mahasiswa ...................................................... VI-11
Gambar 6.8 Tampilan Hasil Method tampil() GUI_Mahasiswa...................... VI-12
Gambar 6.9 Tampilan Hasil Method tambah() GUI_Mahasiswa .................... VI-13
Gambar 6.10 Tampilan Hasil Method ubah() GUI_Mahasiswa ...................... VI-13
Gambar 6.11 Tampilan Hasil Method hapus() GUI_Mahasiswa .................... VI-13
Gambar 6.12 Tampilan Hasil Method batal() GUI_Mahasiswa ...................... VI-14
Gambar 6.13 Desain form GUI_ GUI_Bengkel (Interface)............................. VI-18
Gambar 6.14 Tampilan Hasil GUI_Bengkel (Interface).................................. VI-21
Gambar 6.15 Membuat database oop_1918026 ............................................... VI-22
Gambar 6.16 Membuat tabel (tb_sparepart) .................................................... VI-22
Gambar 6.17 Menambahkan Library Connector ............................................. VI-26
Gambar 6.18 Desain form GUI_sparepart ....................................................... VI-26
Gambar 6.19 Tampilan Hasil Method tampil() GUI_sparepart ....................... VI-27
Gambar 6.20 Tampilan Hasil Method tambah() GUI_sparepart ..................... VI-28
Gambar 6.21 Tampilan Hasil Method ubah() GUI_sparepart ......................... VI-28
Gambar 6.22 Tampilan Hasil Method hapus() GUI_sparepart ........................ VI-29
Gambar 6.23 Tampilan Hasil Method batal() GUI_sparepart ......................... VI-29
Gambar 7.1 Tipe – tipe Data Angka .................................................................VII-3
Gambar 7.2 Tipe – tipe Data String ..................................................................VII-3
Gambar 7.3 Tipe – tipe data waktu ...................................................................VII-4
Gambar 7.4 Tipe – tipe data BLOB ...................................................................VII-4
Gambar 7.5 Membuat tabel (tb_matkul) ...........................................................VII-5
vi

Gambar 7.6 Menambahkan Library Connector ................................................VII-5


Gambar 7.7 Desain form GUI_ Matkul ............................................................VII-9
Gambar 7.8 Tampilan Hasil Method tampil() GUI_ Matkul ..........................VII-11
Gambar 7.9 Tampilan Hasil Method tambah() GUI_ Matkul.........................VII-11
Gambar 7.10 Tampilan Hasil Method ubah() GUI_ Matkul...........................VII-11
Gambar 7.11 Tampilan Hasil Method hapus() GUI_ Matkul .........................VII-12
Gambar 7.12 Tampilan Hasil Method batal() GUI_ Matkul...........................VII-12
Gambar 7.13 Membuat tabel (tb_nilai) ...........................................................VII-13
Gambar 7.14 Menambahkan Library Connector ............................................VII-13
Gambar 7.15 Desain form GUI_ Nilai ............................................................VII-17
Gambar 7.16 Tampilan Hasil Method tampil() GUI_ Nilai ............................VII-18
Gambar 7.18 Tampilan Hasil Method tambah() GUI_ Nilai ..........................VII-19
Gambar 7.19 Tampilan Hasil Method ubah() GUI_ Nilai ..............................VII-19
Gambar 7.20 Tampilan Hasil Method hapus() GUI_ Nilai.............................VII-19
Gambar 7.21 Tampilan Hasil Method batal() GUI_ Nilai ..............................VII-20
Gambar 7.22 Membuat tabel (tb_bengkel) .....................................................VII-20
Gambar 7.23 Menambahkan Library Connector ............................................VII-24
Gambar 7.24 Desain form GUI_Bengkel ........................................................VII-24
Gambar 7.25 Tampilan Hasil Method tampil() GUI_Bengkel .......................VII-26
Gambar 7.26 Tampilan Hasil Method tambah() GUI_Bengkel ......................VII-26
Gambar 7.27 Tampilan Hasil Method ubah() GUI_Bengkel ..........................VII-26
Gambar 7.28 Tampilan Hasil Method hapus() GUI_Bengkel ........................VII-27
Gambar 7.29 Tampilan Hasil Method batal() GUI_Bengkel ..........................VII-27
vii

DAFTAR TABEL

Tabel 2.1 Properti Desain GUI_Mahasiswa.java ................................................ II-5


Tabel 2.1 Properti Desain GUI_KeuanganBengkel.java .................................... II-8
Tabel 3.1 Hak akses pada enkapkulasi............................................................... III-3
Tabel 3.2 Properti Desain GUI_Matkul ............................................................. II-5
Tabel 3.3 Properti Desain GUI_Nilai................................................................. II-8
Tabel 3.4 Properti Desain GUI_KeuanganBengkel.java ................................. II-11
Tabel 3.5 Properti Desain GUI_KeuanganBengkel.java ................................. II-15
Tabel 4.1 Properti Desain GUI_Nilai................................................................ IV-7
Tabel 4.2 Properti Desain GUI_Mahasiswa.java ............................................ IV-11
Tabel 4.3 Properti Desain Promo.java ............................................................. IV-15
Tabel 4.4 Properti Desain GUI_SparePart.java ............................................... IV-19
Tabel 5.1 Properti Desain GUI_Matkul.java ...................................................... V-8
Tabel 5.2 Properti Desain GUI_Matkul.java .................................................... V-13
Tabel 5.3 Properti Desain GUI_Bengkel.java................................................... V-18
Tabel 5.4 Properti Desain GUI_Bengkel.java................................................... V-25
Tabel 5.6 Properti Desain GUI_Bengkel .......................................................... V-32
Tabel 6.1 Properti Desain GUI_Nilai(JTable) .................................................. VI-5
Tabel 6.2 Properti Desain GUI_Mahasiswa (Database) ................................. VI-11
Tabel 6.3 Properti Desain GUI_ GUI_Bengkel ............................................... VI-18
Tabel 6.4 Properti Desain GUI_sparepart (Database)..................................... VI-26
Tabel 7.1 Properti Desain GUI_ Matkul (Database)........................................VII-9
Tabel 7.2 Properti Desain GUI_ Matkul (Database)......................................VII-17
Tabel 7.3 Properti Desain GUI_Bengkel (Database) .....................................VII-24
I-1

BAB I
PENDAHULUAN
I.1 Latar Belakang
OOP (Object Oriented Programming) adalah suatu metode pemrograman
yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk
mempermudah pengembangan program dengan cara mengikuti model yang telah
ada di kehidupan sehari-hari. Jadi setiap bagian dari suatu permasalahan adalah
objek, nah objek itu sendiri merupakan gabungan dari beberapa objek yang lebih
kecil lagi. Saya ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu
sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda,
baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek
yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling
mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program,
sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek
itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.
OOP (Object Oriented Programming) sendiri menggunakan JAVA sebagai
build pemrogramnya, dan dia juga dapat berorientasi langsung dengan object yang
lebih nyata. Berbeda dengan DEV C++ yang menggunakan bahasa C++ sebagai
bahasa pemrogramannya dan object-nya hanya sebatas tulisan saja, serta Delphi
hampir sama dengan OOP, namun Delphi menggunakan bahasa C.
OOP (Object Oriented Programming) juga dapat dimanfaatkan untuk
mempermudah pengembangan program agar lebih selaras dengan yang diinginkan.
Selain itu, OOP dapat membuat kita berinteraksi dengan Objek Programing dan
dapat mengeplikasikan kehidupan sehari-hari ke dalam sebuah program.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
I-2

I.2 Rumusan Masalah


1. Bagaimana mebuat project sederhana dengan menerapkan Object Oriented
Programing (OOP) pada script yang digunakan dalam project?
2. Bagaimana dasar membuat program dengan menggunakan nahasa
pemrograman yang berbasis objek ?
3. Bagaimana penerapkan konsep Object Oriented Programing (OOP) ?

I.3 Tujuan
1. Pratikan mampu project sederhana dengan menerapkan Object Oriented
Programing (OOP) pada script yang digunakan dalam project.
2. Pratikan mampumembuat program dengan menggunakan nahasa
pemrograman yang berbasis objek.
3. Pratikan mampu menerapkan Object Oriented Programing (OOP).

I.4 Manfaat
1. Praktikan dapat menggunakan Object Oriented Programing (OOP)
untuk membuat pekerjaan menjadi efisien.
2. Praktikan dapat menerapkan Object Oriented Programing (OOP) dalam
kehidupan sehari - hari.
3. Praktikan dapat dimudahkan dalam memecah masalah menggunakan
Object Oriented Programing (OOP).

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 1

BAB II
KONSEP DASAR OOP
Jumlah Pertemuan : 2 x 60 menit

Tujuan Praktikum : 1. Praktikan mampu menerapkan konsep dasar


pemrograman berorientasi objek.
2. Praktikan mampu membuat sebuah class, atribut,
method dan objek.
3. Praktikan mampu mengetahui fungsi method
getter dan setter.
4. Praktikan mampu membuat program untuk
memasukkan data mahasiswa berbasis GUI
(Graphical User Interface).
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.

II.1 Landasan Teori


A. Pengertian Dasar OOP
OOP (Object Oriented Programming) adalah suatu metode
pemrograman yang berorientasi kepada objek. Tujuan dari OOP
diciptakan adalah untuk mempermudah pengembangan program dengan
cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi setiap
bagian dari suatu permasalahan adalah objek, nah objek itu sendiri
merupakan gabungan dari beberapa objek yang lebih kecil lagi. Saya ambil
contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri
terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda,
baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-
objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi
dan saling mengirim pesan kepada objek-objek yang lainnya. Begitu juga
dengan program, sebuah objek yang besar dibentuk dari beberapa objek

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 2

yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim
pesan kepada objek yang lain.
B. Class & Object
a. Class merupakan rancangan dari sebuah objek yang mendefenisikan
atribut (data) dan method (perilaku) umum dari suatu objek tertentu.
• Driver Class : Class yang menggunakan main atau dapat di
running.
• Object Class : Class yang tidak ada main, biasanya digunakan
untuk mengisi suatu method yang nantinya akan di panggil di
Driver Class.
Contoh :
KELAS MANUSIA
Data/atribut : Tinggi, Berat Badan, Sidik Jari, Warna Rambut
Method : Cara Berjalan, Cara makan, Cara Marah
Class dideklarasikan sebagai berikut:
class nama_class{
//deklarasi atribut
//deklarasi method
}

Keterangan :
1. Class adalah kata kunci yang digunakan untuk mendeklrasikan
suatu kelas.
2. Nama_Class merupakan indentifier.
3. Atribut bisa berjumlah 0 atau lebih.
4. Method bisa berjumlah 0 atau lebih.

b. Attribute adalah data/variabel yang akan dimiliki oleh objek dari kelas
tersebut. Atribut dapat memiliki hak akses private, public maupun
protected (akan dijelaskan di bab 3).
Attribute dideklarasikan sebagai berikut:
Hak_akses tipe_data
nama_atribut;
Contoh :
Public int_jumlahRoda;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
II - 3

c. Method adalah aksi atau tindakan yang dapat dilakukan oleh objek
dari suatu kelas.
Method terdiri dari 2 jenis, yakni Method void dan Method Non Void.
1. Method Void (Procedure)
Merupakan method yang tidak memiliki nilai balik
Syntax :
Void cetak_nilai() //tipe_method nama_method
{
System.out.println(“HELLO WORLD !”);//badan
method
}

2. Method Non-Void (Fungsi)


Merupakan method yang mempunyai nilai balik. Nilai yang
dikembangkan sebagai hasil fungsi harus bertipe sama dengan
tipe fungsi. Nilai itu sendiri berupa data, ekspresi maupun
variable.
Syntax :
int hitung(int x){
return 10;//nilai kembalian
}
Keterangan :
Terdapat script “return 10;” yang berarti mengembalikan nilai
variable “x” sama dengan 10.

d. Object adalah realisasi dari class. Ketika kita membuat sebuah class
bukan berarti kita membuat sebuah objek. Ciri-ciri pembuatan objek
adalah dengan adanya operator “new”. Terdapat 2 cara dalam
pembuatan objek.
Object dideklarasikan sebagai berikut :
NamaClass namaObjek = new NamaKosntruktor();

Contoh :
Penilaian nilaiMHS = new Penilaian();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 4

II.2 Langkah – Langkah Praktikum


1. Buka Aplikasi Netbeans.
2. Buat class.
3. Memberi script pada kelas tersebut.
4. Buat form.
5. Memberi script pada form tersebut.
6. Menjalankan program.
II.3 Tugas Praktikum 1 :
Membuat kelas Mahasiswa.java dan GUI_Mahasiswa.java
Diagram Class (Class Mahasiswa) :

Mahasiswa Class
+ String nim, nama, prodi, angktn; Attribute
+ void dataNIM(String Nim)
+ void dataNama(String Nama)
+ void dataProdi(String Prodi)
+ void dataAngkatan(String Angktn)
Method
+ String cetakNIM()
+ String cetakNama()
+ String cetakProdi()
+ String cetakAngkatan()

Source code (Mahasiswa.java) :


public class Mahasiswa {
String nim, nama, prodi, angktn;
void dataNIM(String Nim){
this.nim = Nim;
}
void dataNama(String Nama){
this.nama = Nama;
}
void dataProdi(String Prodi){
this.prodi = Prodi;
}
void dataAngkatan(String Angktn){
this.angktn = Angktn;
}

String cetakNIM(){
return nim;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 5

}
String cetakNama(){
return nama;
}
String cetakProdi(){
return prodi;
}
String cetakAngkatan(){
return angktn;
}

Desain form (GUI_Mahasiswa.java) :

Gambar 2.1 Desain GUI_Mahasiswa.java


Tabel 2.1 Properti Desain GUI_Mahasiswa.java

No Objek Properti Nilai


1 jLabel1 Text DATA MAHASISWA
2 jLabel2 Text NIM
3 jLabel3 Text Nama
4 jLabel4 Text Prodi
5 jLabel5 Text Angkatan
Name txtNim
6 jTextField1
Text
Name txtNama
7 jTextField2
Text
Name txtProdi
8 jTextField3
Text
9 jTextField4 Name txtAng

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 6

Text
Name btnKTM
10 jButton1
Text Cetak KTM
Name memoKTM
11 jTextArea
Text

Source code pada tombol Cetak KTM :


private void
btnKTMActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
memoKTM.setText("");
Mahasiswa mhs = new Mahasiswa();
mhs.dataNIM(txtNim.getText());
mhs.dataNama(txtNama.getText());
mhs.dataProdi(txtProdi.getText());
mhs.dataAngkatan(txtAng.getText());

memoKTM.append("Kartu Tanda Mahasiswa\n");


memoKTM.append("------------------------------------
--------------------\n");
memoKTM.append("NIM : " + mhs.cetakNIM() +"\n");
memoKTM.append("Nama : " + mhs.cetakNama() + "\n");
memoKTM.append("Prodi : " + mhs.cetakProdi()+"\n");
memoKTM.append("Angkatan : " + mhs.cetakAngkatan()
+"\n");
}

Hasil Tampilan :

Gambar 2.2 Hasil Gui_Barang.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 7

Analisa :
Pada program diatas mempunyai class Mahasiswa yang ber tipe data
String. Memiliki variabel nim, nama, prodi, dan angkatan. Pada method
terdapat fungsi void dan non void. Fungsi void digunakan untuk menyimpan
inputan yang berada pada GUI_Mahasiswa dan fungsi non void digunakan
untuk menampilkan hasil ahkir dari inputan ke dalam teks Area. Pada button
GUI_Mahasiswa kita berikan kode agar ketika kita tekan button maka secara
otomatis menampilkan apa yang telah di inputkan.
II.4 Tugas Rumah 1 :
Membuat class Keuangan_Bengkel dan GUI_ KeuanganBengkel
Judul : Pengolahan Keuangan Bengkel
Diagram Class (Class Keuangan_Bengkel) :

Keuangan_Bengkel Class
+ String Nama_Pelanggan,
Kode_Kendaraan, jenis_kendaraan, Attribute
Biaya_servis;
+ void dataNama(String Nama)
+ void dataKode(String Kode)
+ void dataJenis(String Jenis)
+ void dataServis(String Servis)
Method
+ String cetakNama()
+ String cetakKode()
+ String cetakJenis()
+ String cetakServis()

Source Code Object class Keuangan_Bengkel:


public class Keuangan_Bengkel {
String Nama_Pelanggan, Kode_Kendaraan,
jenis_kendaraan, Biaya_Servis;

void dataNama(String Nama){


this.Nama_Pelanggan = Nama;
}
void dataKode(String Kode){
this.Kode_Kendaraan = Kode;
}
void dataJenis(String Jenis){
this.jenis_kendaraan = Jenis;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 8

void dataServis(String Servis){


this.Biaya_Servis = Servis;
}

String cetakNama(){
return Nama_Pelanggan;
}
String cetakKode(){
return Kode_Kendaraan;
}
String cetakjenis(){
return jenis_kendaraan;
}
String cetakServis(){
return Biaya_Servis;
}
}

Desain form (GUI_Keuangan.java) :

Gambar 2.1 Desain GUI_KeuanganBengkel

Tabel 2.1 Properti Desain GUI_KeuanganBengkel.java

No Objek Properti Nilai


1 jLabel1 Text DATA PELANGGAN
2 jLabel2 Text Nama Pelanggan
3 jLabel3 Text Kode
4 jLabel4 Text Jenis Kendaraan
5 jLabel5 Text Biaya Servis
6 jTextField1 Text txtNama
Name
7 jTextField2 Text txtKode
Name
8 jTextField3 Text txtJenis
Name
9 jTextField4 Text txtServis
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
II - 9

Text memoHasil
10 jTextArea
Name
Text btnProses
11 jButton1
Name Proses

Source Code Button Proses :


private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
memoHasil.setText("");
Keuangan_Bengkel obj = new Keuangan_Bengkel();
obj.dataNama(txtNama.getText());
obj.dataKode(txtKode.getText());
obj.dataJenis(txtJenis.getText());
obj.dataServis(txtServis.getText());

memoHasil.append("Data Bengkel \n");


memoHasil.append("Nama pelanggan : " +
obj.cetakNama() + "\n");
memoHasil.append("Kode Kendaraan : " +
obj.cetakKode() + "\n");
memoHasil.append("Jenis Kendaraan : " +
obj.cetakjenis() + "\n");
memoHasil.append("Biaya Servis : Rp." +
obj.cetakServis() + ",-" + "\n");

Hasil Tampilan :

Gambar 2.2 Hasil Running GUI_Keuanganbengkel

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 10

Analisa :
Pada Program diatas di tombol button Proses dimana field akan
mengambil data dari obj dari class Keuangan_Bengkel, dimana di class
barang terdapat method yang mereturn Variabel yang sebenarnya di private
dimana jika Variabel private tidak bisa di akses dari class lain namun
adanya method ini agar bisa di akses.
II.5 Kesimpulan
1. Didalam pemrograman berorientasi objek ada beberapa hal dasar yang
harus dipahami yaitu Class, Attribute, Method dan Object.
2. Pada pemrograman berorientasi objek terdapat dua jenis method dalam
pembuatan program yaitu Method void dan Method non-void.
3. Atribut merupakan ciri-ciri yang ada pada suatu class, sementara method
adalah aksi yang bisa dilakukan oleh suatu class.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 1

BAB III
KONSTRUKTOR DAN ENKAPSULASI
Jumlah Pertemuan : 2 x 60 menit

Tujuan Praktikum : 1. Praktikan mampu mengetahui tipe data dan java


identifier.
2. Praktikan mampu merubah tipe data (Casting).
3. Praktikan mampu mengetahui dan membuat
method konstruktor.
4. Praktikan mampu mengetahui dan membuat
method overloading.
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.

III.1 Landasan Teori


A. Pengertian Method Konstruktor Pada Pemrograman Java.
Konsktruktor adalah method yang pertama kali dijalankan pada saat
sebuah objek pertama kali diciptakan, yang dimana syarat penulisan
method konstruktor ini harus sama dengan nama class yang di naungi.
Biasanya method ini digunakan untuk inisialisasi atau mempersiapkan data
untuk objek.

B. Cara penulisan method Konstruktor.


Berikut adalah cara penulisan method konstruktor pada pemrograman java:
Source Code:
class namaclass {
Integer a ,b ,c ;
namaclass()
{
a = 1; b = 2; c = 3;
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 2

Keterangan:
a. “NamaClass” merupakan nama class dapat di ganti sesuai keinginan
b. “public NamaClass()” merupakan nama method konstruktor nama
harus sesuai dengan nama class yang di naungi.
c. Nantinya ketika penginisailasian object terjadi maka data dari atribut
akan otmatis terisi oleh data yang ada dalam method konstruktor.
C. Enkapsulasi
Enkapsulasi merupakan proses pemaketan objek beserta methodnya
untuk menyembunyikan rincian implementasi dari pemakai/objek lainnya.
Inti dari enkapsulasi atau pengkapsulan adalah ketidaktahuan apa yang ada
dalam suatu objek dan bagaimana pengimplementasiannya. Yang
dibutuhkan hanyalah apa kegunaan, bagaimana cara memakainya dan apa
yang akan terjadi.
Dengan enkapsulasi, maka programmer akan dibatasi dalam
mengakses suatu atribut yang dimiliki oleh suatu class. Kemampuan ini
ditujukan untuk mendapatkan desain suatu software yang baik dan untuk
keamanan software itu sendiri. Segala yang tidak perlu diketahui oleh yang
lain, tidak perlu dipublish.
Salah satu implementasi dari enkapsulasi adalah adanya setter dan
getter untuk suatu atribut dalam suatu kelas. Jika pada suatu kelas terdapat
atribut a dan b, maka terdapat method setA-getA dan setB-getB. Bentuk
lain dari enkapsulasi adalah memasukkan nilai atribut dengan
menggunakan konstruktor.
D. Hak Akses (Access Modifier)
a. Public
Dengan mendeklarasikan data dan method dengan tingkat akses
public, maka data dan method dapat diakses semua kelas yang ada di
dalam program, baik yang merupakan kelas turunan maupun kelas
yang tidak mempunyai hubungan sama sekali.
Bentuk cara deklarasi hak akses Public :
public String atribut1;//pada atribut
public int luas(){...}//pada method

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 3

b. Private
Dengan mendeklarasikan data dan method menggunakan tingkat
akses private, maka data dan method tersebut hanya dapat diakses oleh
kelas tersebut. Sehingga data dan method tersebut tidak dapat diakses
oleh kelas lain.
Bentuk cara deklarasi hak akses Private :
private String atribut1;//pada atribut
private int luas(){...}//pada method
c. Protected
Dengan mendeklarasikan data dan method menggunakan tingkat
akses protected, maka data dan method tersebut hanya dapat diakses
oleh kelas yang memilikinya dan kelas-kelas yang masih memiliki
hubungan turunan.
Bentuk cara deklarasi hak akses Protected :
protected String atribut1;//pada atribut
protected int luas(){...}//pada method
d. Default (tidak ada modifier)
Untuk hak akses default ini, sebenarnya hanya ditujukan untuk class
yang ada dalam satu paket, atau istilahnya hak akses yang berlaku untuk
satu folder saja(tidak berlaku untuk class yang tidak satu
folder/package)
Bentuk cara deklarasi hak akses Default :
String atribut1;//pada atribut
int luas(){...}//pada method
Berikut adalah tabel hak akses dari tiap jenis Enkapsulasi :
Tabel 3.1 Hak akses pada enkapkulasi
HAK AKSES PUBLIC PROTECTED DEFAULT PRIVATE
Dari kelas yang √ √ √ √
sama
Dari kelas lain √ √ √ ×
didalam paket
Dari kelas lain diluar √ × × ×
paket
Dari kelas turunan √ √ √ ×
didalam paket
Dari kelas turunan √ × × ×
diluar paket

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 4

III.3 Tugas Praktikum 1 :


Implementasi Method Konstruktor pada projek Praktikum GUI_Matkul
Diagram Class :

Source code pada class Data_Matkul :


public class Data_Matkul {
String matkul, nama, kode;

public Data_Matkul(){
kode = "IF3304";
matkul = "OOP";
nama = "Rizky Aditya";
}

Desain form (GUI_ Matkul.java) :

Gambar 3.1 Desain Desain GUI_Matkul.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 5

Tabel 3.2 Properti Desain GUI_Matkul

No Objek Properti Nilai


DATA MATA
1 jLabel1 Text
KULIAH
2 jLabel2 Text Kode Mata Kuliah
3 jLabel3 Text Mata Kuliah
4 jLabel4 Text Dosen
Name txtKode
6 jTextField1 Text
Editable Uncheck
Name txtMatkul
7 jTextField2 Text
Editable Uncheck
Name txtDosen
8 jTextField3 Text
Editable Ucheck
Name btnCetak
10 jButton1 Cetak Cetak Mata
Text
Kuliah
Name memoHasil
11 jTextArea
Text

Source code pada button Cetak Mata Kuliah:


public GUI_Matkul() {
initComponents();
Data_Matkul data = new Data_Matkul();
txtKode.setText(data.kode);
txtMatkul.setText(data.matkul);
txtDosen.setText(data.nama);
}
private void
btnCetakActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Data_Matkul data = new Data_Matkul();
memoHasil.append("Kode Mata kuliah = " + data.kode +
"\n");
memoHasil.append("Nama Mata Kuliah = " +
data.matkul+ "\n");
memoHasil.append("Nama Dosen = " + data.nama+ "\n");
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 6

Tampilan Hasil :

Gambar 3.2 Hasil running GUI_Matkul.java


Analisa :
Pada program diatas terdapat konstruktor di bawah InitComponents()
berfungsi untuk melakukan inisialisasi nilai pada atribut yang bersangkutan. Di
kelas barang juga sudah terdapat konstruktor barang sehingga pada saat
menjalankan program jTextfield akan menampilkan nilai yang sesuai pada
konstruktor tersebut.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 7

III.4 Tugas Praktikum 2 :


Implementasi Enkapsulasi Pada Projek Praktikum “Class Penilaian”
Class Diagram (Class Penilaian) :

Source code pada class Penilaian.java :


public class penilaian {
String NIM, kode_mk;
int nilaiTugas, nilaiPrak;

public int getNilaiTugas() {


return nilaiTugas;
}

public void setNilaiTugas(int nilaiTugas) {


this.nilaiTugas = nilaiTugas;
}

public int getNilaiPrak() {


return nilaiPrak;
}

public void setNilaiPrak(int nilaiPrak) {


this.nilaiPrak = nilaiPrak;
}

private double nilaiAkhir(){


return ((nilaiTugas*0.6)+(nilaiPrak*0.4));
}

double tampilNA(){
return nilaiAkhir();
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 8

Desain form GUI_Nilai.java :

Gambar 3.3 Desain GUI_Nilai.java


Tabel 3.3 Properti Desain GUI_Nilai
No Objek Properti Nilai
1 jLabel1 Text PROGRAM
PENILAIAN
2 jLabel2 Text NIM
3 jLabel3 Text Kode MK
4 jLabel4 Text Nilai Tugas
5 jLabel5 Text Nilai Praktikum
Name txtNIM
6 jTextField1
Text
Name txtKodeMK
7 jTextField2
Text
Name txtNT
8 jTextField3
Text
Name txtNP
9 jTextField4
Text

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 9

Name btnNA
10 jButton1
Text Hasil Nilai Akhir
Name memoNilai
11 jTextArea
Text
Text Praktikum
12 JCheckBox
Name cek_prak

Tampilan Hasil :

Gambar 3.4 Hasil Tampilan GUI_Nilai.java


Analisa :
Pada Program diatas di tombol button hasil Nilai Akhir dimana field akan
mengambil data dari class Nilai, dimana di class Nilai terdapat metod yang
mereturn Variabel yang sebenarnya di private dimana jika Variabel private
tidak bisa di aksess dari class lain namun adanya method ini agar bisa di akses.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 10

III.5 Tugas Rumah 1 :


Implementasi Method Konstruktor Pada GUI_KeuanganBengkel
Judul : Data Keuangan Bengkel
Diagram Class (Class Keuangan_Bengkel) :

Keuangan_Bengkel Class
+ String Id_Pelanggan, Kode_Kendaraan,
Attribute
No._Servis, Spare_Parts, Harga;
+ void dataId(String Id)
+ void dataNo(String No)
+ void dataSP(String SP)
+ void dataHg(String Hg)
Method
+ String cetakId()
+ String cetakNo()
+ String cetakSP()
+ String cetakHG()

Source code pada object class (Keuangan_Bengkel.java) :


public class Keuangan_Bengkel {
String Id_Pelanggan, No_Servis, Spare_Parts, Harga;

void dataId(String Id){


this.Id_Pelanggan = Id;
}
void dataNo(String No){
this.No_Servis = No;
}
void dataSP(String SP){
this.Spare_Parts = SP;
}
void dataHarga (String Hg){
this.Harga = Hg;
}

String CetakId(){
return Id_Pelanggan;
}
String CetakNo(){
return No_Servis;
}
String CetakSP(){
return Spare_Parts;
}
String CetakHg(){
return Harga;
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 11

Desain form GUI_KeuanganBengkel .java :

Gambar 3.5 Desain Desain GUI_KeuanganBengkel.java


Tabel 3.4 Properti Desain GUI_KeuanganBengkel.java

No Objek Properti Nilai


1 jLabel1 Text DATA KEUANGAN BENGKEL
2 jLabel2 Text ID Pelanggan
3 jLabel3 Text No. Servis
4 jLabel4 Text Spare Part
5 jLabel5 Text Harga
Name
6 jTextField1 Text txtID
Editbale Uncheck
Name
7 jTextField2 Text txtNO
Editable Uncheck
Name
8 jTextField3
Text txtSP
name
9 jTextField4
Text txtHg
Name btnProses
10 jButton1
Text Proses
Name memoHasil
11 jTextArea
Text

Source code pada Button Proses :


public GUI_KeuanganBengkel() {
initComponents();
Keuangan_Bengkel data = new Keuangan_Bengkel();
data.Id_Pelanggan = "PG033H00P";
data.No_Servis = "V200H2R";
txtId.setText(data.Id_Pelanggan);
txtNo.setText(data.No_Servis);
}
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
III - 12

private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
memoHasil.setText(" ");
Keuangan_Bengkel data = new Keuangan_Bengkel();
data.dataId(txtId.getText());
data.dataNo(txtNo.getText());
data.dataSP(txtSP.getText());
data.dataHarga(txtHg.getText());

memoHasil.append("Data Keuangan Bengkel\n");


memoHasil.append("----------------------------------
----\n");
memoHasil.append("ID Pelanggan : " + data.CetakId()
+ "\n");
memoHasil.append("NO Servis : " + data.CetakNo() +
"\n");
memoHasil.append("Spare Parts : " + data.CetakSP() +
"\n");
memoHasil.append("Harga : Rp." + data.CetakHg()+ ",-
" + "\n");

Tampilan Hasil :

Gambar 3.6 Hasil Tampilan GUI_keuanganBengkel.java


Analisa :
Pada program, user tidak memasukkan isi dari tiap field secara manual.
Jika diklik button proses, maka apa yang sudah terisi pada field-field atas (ID
Pelanggan dan No Servis) akan tercetak sama pada text Area. Untuk
menampilkan field Spare Part dan Harga user harus memasukan data adagar
dapat menampilhan hasil data di text Area dan diperlukan pemanggilan melalui
konstruktor yang kemudian dilakukan pemanggilan pada GUI.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 13

III.6 Tugas Rumah 2 :


Menerapkan Enkapsulasi serta membuat GUI_KeuanganBengkel
Judul : Data Keuangan Bengkel
Diagram Class (Class Keuangan_Bengkel) :

Keuangan_Bengkel Class
+ int Pendapatan_Servis, Pendapatan_Komisi, Beban_Gaji,
Beban_iklan, Beban_Gedung, Pajak_Penghasilan; Attribute
+ private int Jumlah_pendapatan, Jumlah_Beban, Laba_Bersih;
+ public void setPendapatan_Servis(int Pendapatan_Servis)
+ public void setPendapatan_Komisi(int Pendapatan_Komisi)
+ public void setPendapatan_Komisi(int Pendapatan_Komisi)
+ public void setBeban_Gaji(int Beban_Gaji)
+ public void setBeban_iklan(int Beban_iklan)
+ public void setBeban_Gedung(int Beban_Gedung)
+ public void setBeban_Gedung(int Beban_Gedung)
+ public void setPajak_Penghasilan(int Pajak_Penghasilan)

+ public int getPendapatan_Servis()


Method
+ public int getPendapatan_Komisi()
+ public int getBeban_Gaji()
+ public int getBeban_iklan()
+ public int getPajak_Penghasilan()
+ private double Jumlah_Pendapatan()
+ double hasilJP()
+ private double Jumlah_Beban()
+ double hasilJB()
+ private double Laba_Bersih()
+ double hasilLaba()

Source code pada class (Keuangan Bengkel.java) :


public class Keuangan_Bengkel {
int Pendapatan_Servis, Pendapatan_Komisi, Beban_Gaji,
Beban_iklan, Beban_Gedung, Pajak_Penghasilan;
private int Jumlah_pendapatan, Jumlah_Beban,
Laba_Bersih;

public int getPendapatan_Servis() {


return Pendapatan_Servis;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 14

public void setPendapatan_Servis(int Pendapatan_Servis)


{
this.Pendapatan_Servis = Pendapatan_Servis;
}

public int getPendapatan_Komisi() {


return Pendapatan_Komisi;
}

public void setPendapatan_Komisi(int Pendapatan_Komisi)


{
this.Pendapatan_Komisi = Pendapatan_Komisi;
}

public int getBeban_Gaji() {


return Beban_Gaji;
}

public void setBeban_Gaji(int Beban_Gaji) {


this.Beban_Gaji = Beban_Gaji;
}

public int getBeban_iklan() {


return Beban_iklan;
}

public void setBeban_iklan(int Beban_iklan) {


this.Beban_iklan = Beban_iklan;
}

public int getBeban_Gedung() {


return Beban_Gedung;
}

public void setBeban_Gedung(int Beban_Gedung) {


this.Beban_Gedung = Beban_Gedung;
}

public int getPajak_Penghasilan() {


return Pajak_Penghasilan;
}

public void setPajak_Penghasilan(int Pajak_Penghasilan)


{
this.Pajak_Penghasilan = Pajak_Penghasilan;
}

private double Jumlah_Pendapatan(){


return (Pendapatan_Servis + Pendapatan_Komisi);
}

double hasilJP(){
return Jumlah_Pendapatan();
}

private double Jumlah_Beban(){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 15

return (Beban_Gaji + Beban_iklan + Beban_Gedung +


Pajak_Penghasilan);
}

double hasilJB(){
return Jumlah_Beban();
}

private double Laba_Bersih(){


return (Jumlah_Pendapatan() - Jumlah_Beban());
}

double hasilLaba(){
return Laba_Bersih();
}

Desain form GUI_KeuanganBengkel.java :

Gambar 3.7 GUI_KeuanganBengkel.java


Tabel 3.5 Properti Desain GUI_KeuanganBengkel.java

No Objek Properti Nilai


1 jLabel1 Text DATA KEUANGAN BENGKEL
2 jLabel2 Text Pendapatan Servis
3 jLabel3 Text Pendapatan Komisi
4 jLabel4 Text Beban Gaji
5 jLabel5 Text Beban Iklan
6 jLabel6 Text Beban Gedung
7 jLabel7 Text Pajak Penghasilan
Name txtPS
8 jTextField1
Text
Name txtPK
9 jTextField2
Text
10 jTextField3 Name txtBG
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
III - 16

Text
Name txtBi
11 jTextField4
Text
Name txtG
12 jTextField5
Text
Name txtPP
13 jTextField6
Text
Name btnHasil
14 jButton1
Text HITUNG
Name memoUang
15 jTextArea
Tetx

Source code Button Hitung :


private void
btnHASILActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Keuangan_Bengkel data = new Keuangan_Bengkel();

data.setPendapatan_Servis(Integer.parseInt(txtPS.getText()))
;

data.setPendapatan_Komisi(Integer.parseInt(txtPK.getText()))
;

data.setBeban_Gaji(Integer.parseInt(txtBG.getText()));

data.setBeban_iklan(Integer.parseInt(txtBI.getText()));

data.setBeban_Gedung(Integer.parseInt(txtG.getText()));

data.setPajak_Penghasilan(Integer.parseInt(txtPP.getText()))
;

memoUang.append("\t DATA KEUANGAN BENGKEL\n");


memoUang.append("Pendapatan : \n");
memoUang.append(" Pendapatan Servis :\t\tRp." +
data.getPendapatan_Servis() + ",-\n");
memoUang.append(" Pendapatan Komisi :\t\tRp." +
data.getPendapatan_Komisi() + ",-\n");
memoUang.append("\t\t\t____________+\n");
memoUang.append("Jumlah Pendapatan :\t\tRp." +
data.hasilJP() + ",-\n");
memoUang.append("Beban : \n");
memoUang.append(" Beban Gaji :\t\tRp." +
data.getBeban_Gaji() + ",-\n");
memoUang.append(" Beban Iklan :\t\tRp." +
data.getBeban_iklan() + ",-\n");
memoUang.append(" Beban Gedung :\tRp." +
data.getBeban_Gedung() + ",-\n");
memoUang.append(" Pajak Penghasilan : \tRp." +
data.getPajak_Penghasilan() + ",-\n");
memoUang.append("\t\t____________+\n");

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 17

memoUang.append("Jumlah Beban : \tRp." +


data.hasilJB() + ",-\n");
memoUang.append("\t\t\t____________-\n");
memoUang.append("Laba Bersih :\t\t\tRp." +
data.hasilLaba() + ",-\n");
}

Tampilan Hasil :

Gambar 3.8 Hasil Tampilan GUI_KeuanganBengkel.java


Analisa :
Pada data class menerapkan metode enkapsulasi.di dalamnya di
deklarasikan atibute private oleh karenanya di dalam program di buat juga
method setter dan getter agar variabel yang berhak akses private tadi bisa
diakses oleh kelas lain/ kelas main. saat tombol Hitung di klik maka nilai dari
inputan yang pengguna ketikkan akan disimpan pada variabel yang ada di kelas
sebelumnya, saat tombol hitung di klik program akan menghitung nilai dari
inputan pengguna.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 18

III.7 Kesimpulan
1. Enkapsulasi merupakan proses pemaketan objek beserta methodnya untuk
menyembunyikan rincian implementasi dari pemakai/objek lainnya.
2. Dengan mendeklarasikan data dan method dengan tingkat akses public,
maka data dan method dapat diakses semua kelas yang ada di dalam
program.
3. Dengan mendeklarasikan data dan method menggunakan tingkat akses
private, maka data dan method tersebut hanya dapat diakses oleh kelas
tersebut.
4. Untuk hak akses default ini, sebenarnya hanya ditujukan untuk class yang
ada dalam satu paket, atau istilahnya hak akses yang berlaku untuk satu
folder saja(tidak berlaku untuk class yang tidak satu folder/package).

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 1

BAB IV
INHERITANCE, OVERIDDING DAN OVERLOADING
Jumlah : 2 x 60 menit
Pertemuan
Tujuan Praktikum : 1. Praktikan mampu memahami tentang hak akses
(Enkapsulasi).
2. Praktikan mampu mengimplementasikan konsep
Inheritance kedalam program.
3. Praktikan mampu memahami dan membuat
method override.
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.

IV.1 Landasan Teori


A. Pengertian Inheritance atau Pewarisan
Inheritance atau Pewarisan/Penurunan adalah konsep
pemrograman dimana sebuah class dapat ‘menurunkan’ properti dan
method yang dimilikinya kepada class lain. Konsep inheritance
digunakan untuk memanfaatkan fitur ‘code reuse’ untuk menghindari
duplikasi kode program.
Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class
dalam kode program. Class yang akan ‘diturunkan’ bisa disebut sebagai
class induk (parent class), super class, atau base class. Sedangkan class
yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class),
sub class, derived class atau heir class.
Tidak semua property dan method dari class induk
akan diturunkan. Property dan method dengan hak akses private, tidak

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 2

akan diturunkan kepada class anak. Hanya property dan method


dengan hak akses public, protected dan default saja yang bisa diakses
dari class anak.
Pada pemrograman berorientasi objek atau OOP, konsep inheritance
menjadi salah satu topik yang penting. Suatu objek diwariskan dengan
menggunakan keyword extends. Pada pemrograman Java setiap objek pada
kenyataannya adalah turunan dari class Object. Walaupun tidak secara
eksplisit (jelas), ini bisa dibuktikan dengan operator instanceof.
Istilah penting dalam konsep inheritance:
a. Super Class : kelas induk yang mewariskan atribut dan method kepada
turunannya.
b. Sub Class atau Child Class: kelas turunan yang mewarisi atribut dan
method. Sub Class dapat menambah atribut dan methodnya sendiri
sebagai tambahan dari kelas yang memberi warisan.
Reusability : menggunakan kembali atribut dan method dari super class di
sub class.
B. Bentuk Sederhana dalam Inheritance.
Bentuk sederhana konsep pewarisan dalam kehidupan sehari-hari
misalnya terdapat class (super class) Bagun_Datar yang memiliki method
luas dan keliling. Class Bagun_Datar memiliki 2 class anak (sub class) yaitu
Class Persegi dan Class Segitiga. Persegi dan Segitiga termasuk dalam
kategori bangun datar. Sehingga method Luas dan Keliling diturunkan pada
2 class tersebut. Hanya saja pada 2 class anak terdapat perbedaan yaitu
atribut serta rumus perhitungan luas dan keliling.
C. Beberapa Aturan yang ada dalam Konsep Inheritance atau Pewarisan
Berikut adalah beberapa aturan yang ada pada konsep inheritance :
1. Penggunaan inheritance diawali dengan pembuatan super class

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 3

Contoh:

Agar kelas turunan / subclass dapat mewarisi atribut dan method dari
super class harus menggunakan keyword “extends” dan diikuti dengan
“nama_super_class”.

2. Dalam Inheritance, suatu konstruktor tidak dapat diwariskan.


Konsturktor dari super class tidak dapat diwariskan kepada
subclass, namun bisa dipanggil dengan menggunakan keyword super().
Bila sebuah constructor secara eksplisit tidak memanggil constructor
dari superclass, maka compiler secara otomatis akan memanggil
constructor tanpa argumen secara implisit.
3. Acces modifier pada inheritance
Pada inheritance, member dengan acces modifier private tidak dapat
diwariskan. Sedangkan member default dapat diwariskan asalkan
berada dalam package yang sama, jadi di luar itu tidak dapat
diwariskan. Untuk member protected hanya dapat diakses oleh subclass
melalui inheritance baik itu pada package yang sama ataupun berbeda.
Terakhir adalah member public yang dapat diwariskan di mana saja.
D. Pengertian Overloading dan Overriding.
1. Overloading
Method Overloading adalah sebuah kemampuan yang
membolehkan sebuah class mempunyai 2 atau lebih method dengan
nama yang sama, namun parameter yang berbeda. Pada method
overloading perbedaan parameter mencakup : Jumlah parameter. Tipe
data dari parameter.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 4

Contoh:

2. Overriding
Overriding method adalah kemampuan dari subclass untuk
memodifikasi method dari superclass-nya, dengan cara mendefinisikan
kembali method superclass-nya. Namun masih dengan nama dan
parameter yang sama tetapi isi (statement) berbeda.
Aturan Overriding:
a. Parameter yang terdapat pada method Overriding di subclass harus
sama dengan parameter yang terdapat pada parent class.
b. Aturan hak akses, hak akses method Overriding di subclass tidak
boleh lebih ketat di bandingkan dengan hak akses method pada
parent class.
Kedudukan Access Modifier, urutan tertinggi ke rendah: (Tertinggi)
Public → Default → Protected → Private (Terendah)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 5

Contoh :
Source code pada Super Class :

Source code pada subclass dengan override method pada super class :

IV.2 Langkah – Langkah Praktikum


1. Buka Aplikasi Netbeans.
2. Buat class.
3. Memberi script pada kelas tersebut.
4. Buat form.
5. Memberi script pada form tersebut.
6. Menjalankan program.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 6

IV.3 Tugas Praktikum 1 :


Menerapkan Inheritance pada Project Praktikum (Class Penilaian_NonPrak)
Class diagram :

Source code pada Penilaian.java (Super Class) :


public class penilaian {
String NIM, kode_mk;
int nilaiTugas, nilaiPrak;

public int getNilaiTugas() {


return nilaiTugas;
}

public void setNilaiTugas(int nilaiTugas) {


this.nilaiTugas = nilaiTugas;
}

public int getNilaiPrak() {


return nilaiPrak;
}
}

Source code pada Penilaian_NonPrak.java (Sub Class) :


public class Penilaian_NonPrak extends penilaian {
@Override
double nilaiAkhir(){
return (nilaiTugas);
}
}

Source code pada method konstruktor GUI_Nilai :


public GUI_Nilai() {
initComponents();
txtNP.setEnabled(false);
}

Source code pada CheckBox Praktikum :


private void
cek_prakActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (cek_prak.isSelected())
{
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 7

txtNP.setEnabled(true);
}
else
{
txtNP.setEnabled(false);
}
}

Desain form GUI_Segitiga.java :

Gambar 4.1 Tampiln Desain GUI_Segitiga.java


Tabel 4.1 Properti Desain GUI_Nilai
No Objek Properti Nilai
PROGRAM
1 jLabel1 Text
PENILAIAN
2 jLabel2 Text NIM
3 jLabel3 Text Kode MK
4 jLabel4 Text Nilai Tugas
5 jLabel5 Text Nilai Praktikum
6 jTextField1 Name txtNIM
Text
7 jTextField2 Name txtKodeMK
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 8

Text
Name txtNT
8 jTextField3
Text
jTextField4 Name txtNP
9
Text
Name btnNA
10 jButton1
Text Hasil Nilai Akhir
Name memoNilai
11 jTextArea
Text
Name cek_prak
12 JCheckBox
Text Praktikum

Source code pada Button “Hasil Nilai Akhir” :


memoNilai.setText("");
Penilaian_NonPrak nilai = new
Penilaian_NonPrak();
nilai.NIM = txtNIM.getText();
nilai.kode_mk = txtKodeMK.getText();
nilai.nilaiTugas =
Integer.parseInt(txtNT.getText());

if (cek_prak.isSelected())
{
nilai.nilaiPrak =
Integer.parseInt(txtNP.getText());
memoNilai.append("Nilai Akhir Mata Kuliah
\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("Nilai Praktikum :
"+nilai.nilaiPrak +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.tampilNA());

}
else

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 9

{
memoNilai.append("Nilai Akhir Mata Kuliah
\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.tampilNA());
}

Tampilan Hasil :

Gambar 4.2 Tampilan Hasil GUI_Nilai.java (Inheritance)


Analisa :
Pada public class Penilaian menerapkan inheritance memiliki tipe data
string dan integer dengan nama variabel NIM, Kode_mk, nilaiTugas, dan
nilaiPrak. Pada method terdapat fungsi non void double dengan nama variabel
nilaiAkhirPrak dengan return perhitungan nilai yang di input. Dan non void
double dengan nama tampilNA dengan return hasil akhir yang telah di prosses
pada nilaiAkhirPrak.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 10

IV.4 Tugas Praktikum 2 :


Mendesain ulang GUI_Mahasiswa + membuat method Batal()
Desain lama form (GUI_Mahasiswa.java) :

Gambar 4.3 Tampilan Desain lama GUI_Mahasiswa.java


Desain baru form (GUI_Mahasiswa.java) :

Gambar 4.4 Tampilan Desain lama GUI_Mahasiswa.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 11

Tabel 4.2 Properti Desain GUI_Mahasiswa.java

No Objek Properti Nilai


1 jLabel1 Text DATA MAHASISWA
2 jLabel2 Text NIM
3 jLabel3 Text Nama
4 jLabel4 Text Prodi
5 jLabel5 Text Angkatan
Name txtNim
6 jTextField1
Text
Name txtNama
7 jTextField2
Text
Name txtProdi
8 jTextField3
Text
Name txtAng
9 jTextField4
Text
Name txtCari
10 jTextField5
Text
Name btnSimpan
11 jButton1
Text Simpan
Name btnUbah
12 jButton2
Text Ubah
Name btnHapus
13 jButton3
Text Hapus
Name btnBatal
14 jButton4
Text Batal
Name btnCari
15 jButton5
Text Cari
Name btnNilai
16 jButton5
Text Form Nilai
17 JTable Name tabel_data

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 12

Source code pada method konstruktor GUI_Mahasiswa :


public void batal()
{
txtNim.setText("");
txtNama.setText("");
txtProdi.setText("");
txtAng.setText("");
}

Source code pada button Batal :


private void
btnBatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
batal();
}

Tampilan Hasil :

Gambar 4.5 Tampilan Program GUI_Mahasiswa

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 13

IV.5 Tugas Rumah 1 :


Implementasi Inhetitance pada GUI_Promo
Judul : Keuangan Bengkel
Diagram Class (Class Promo_Bengkel) :

Keuangan_Bengkel Class
+ public String Kode,Sparepart;
Attribute
+ double Harga;
+ public void setKode(String Kode)
+ public void setSparepart(String Sparepart)
+ public void setHarga(double Harga)
Method
+ public String getKode()
+ public String getSparepart()
+ public double getHarga()

Promo1 Promo1
+ double diskon1; + double diskon1;
+ public String getKode() + public String getKode()

Source code Object Class(Promo_Bengkel class.java):


public class Promo_Bengkel {
public String Kode,Sparepart;
double Harga;

public String getKode() {


return Kode;
}

public void setKode(String Kode) {


this.Kode = Kode;
}

public String getSparepart() {


return Sparepart;
}

public void setSparepart(String Sparepart) {


this.Sparepart = Sparepart;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 14

public double getHarga() {


return Harga;
}

public void setHarga(double Harga) {


this.Harga = Harga;
}

class Promo1 extends Promo_Bengkel{


double diskon1;
double HargaPromo1(){
diskon1 = Harga - (Harga*0.1);
return diskon1;
}
}

class Promo2 extends Promo_Bengkel{


double diskon2;
double HargaPromo2(){
diskon2 = Harga - (Harga*0.2);
return diskon2;
}
}

Desain form GUI_ Promo.java :

Gambar 4.6 Tampilan Desain GUI_Promo.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 15

Tabel 4.3 Properti Desain Promo.java

No Objek Properti Nilai


1 jLabel1 Text PROMO BENGKEL
2 jLabel2 Text Kode
3 jLabel3 Text Spare Part
4 jLabel4 Text Harga Asli
5 jLabel5 Text Harga Promo
Name
6 jTextField1 Text txtKode
Editbale Uncheck
Name
7 jTextField2 Text txtSP
Editbale Uncheck
Name
8 jTextField3
Text txtHA
Name
9 jTextField4
Text txtHP
Name btnProses
10 jButton1
Text PROSES
[0] = Diskon 10%
Model
11 JComboBox [1] = Diskon 20%
Name Cmb_pilih

Source code Button Proses :


public GUI_Promo() {
initComponents();
Promo_Bengkel data = new Promo_Bengkel();
data.Kode = "RM103";
data.Sparepart = "Velg OZ Racing";
txtKode.setText(data.Kode);
txtSP.setText(data.Sparepart);
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Promo1 data1 = new Promo1();
data1.setHarga(Integer.parseInt(txtHA.getText()));

if(cmb_pilih.getSelectedIndex()== 0){

txtHP.setText(Double.toString(data1.HargaPromo1()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Promo2 data2 = new Promo2();

data2.setHarga(Integer.parseInt(txtHA.getText()));
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 16

txtHP.setText(Double.toString(data2.HargaPromo2()));
}
}

Tampilan Hasil :

Gambar 4.6 Hasil Tampilan GUI_Promo.java


Analisa:
Pada program diatas terdapat class Promo_Bengkel yang memiliki 2
tururunan (Inheratance) yang dunakan untung menghitung diskon sebuah harga
dengan menggunakan fungsi if else. Pada class turunan Promo1 menghitung
diskon 10% dan turunan 2 Promo2 menhitung diskon 20% seperti gambar
diatas.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 17

IV.6 Tugas Rumah 2 :


Menerapkan Overloading dan Overriding serta membuat GUI_ SparePart
Judul : Keuangan Bengkel
Diagram Class (Class Keuangan_Bengkel) :

SparePart Class
+ double Harga_Velg, diskon,hasil; Attribute
+ public void setHarga_Velg(double
Harga_Velg)
+ public void setDiskon(double diskon)

+ public double getHarga_Velg() Method


+ public String kode()
+ public String merk()
+ public double getDiskon()
+ double Harga_Promo()

Ban
+ double Harga_Ban;

+ public void setHarga_Ban(double


Harga_Ban)
+ public void setDiskon(double diskon)

+ public double getHarga_Ban()

Source code Object Class(SparePart class.java) :


public class SparePart {
double Harga_Velg, diskon,hasil;

public double getHarga_Velg() {


return Harga_Velg = 3550000;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 18

public void setHarga_Velg(double Harga_Velg) {


this.Harga_Velg = Harga_Velg;
}

public String kode(){


return "VG031";
}

public String merk(){


return "Rotobox";
}

public double getDiskon() {


return diskon;
}

public void setDiskon(double diskon) {


this.diskon = diskon;
}

double Harga_Promo(){
hasil = getHarga_Velg() -
(getHarga_Velg()*(diskon/100));
return hasil;
}
}

Source code Object Class(Ban class.java) :


public class Ban extends SparePart{
double Harga_Ban;
public double getHarga_Ban() {
return Harga_Ban = 850000;
}

public void setHarga_Ban(double Harga_Ban) {


this.Harga_Ban = Harga_Ban;
}

@Override
public String kode() {
return "BT66E";
}

@Override
public String merk() {
return "Maxxis Extramax";
}

@Override
public double getDiskon() {
return diskon;
}
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 19

@Override
public void setDiskon(double diskon) {
this.diskon = diskon;
}

@Override
double Harga_Promo(){
hasil = getHarga_Ban() -
(getHarga_Ban()*(diskon/100));
return hasil;
}
}

Desain form GUI_SparePart.java :

Gambar 4.7 Tampilan Desain GUI_SparePart.java

Tabel 4.4 Properti Desain GUI_SparePart.java

No Objek Properti Nilai


1 jLabel1 Text DATA SPARE PART
2 jLabel2 Text Kode
3 jLabel3 Text Merek
4 jLabel4 Text Harga Asli
5 jLabel5 Text Diskon
6 jLabel6 Text Harga Promo
Name
7 jTextField1 Text txtKode
Editbale Uncheck
Name
8 jTextField2 Text txtMerk
Editbale Uncheck
9 jTextField3 Name
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 20

Text txtHA
Editbale Uncheck
Name
10 jTextField4
Text txtDiskon
Name
11 jTextField5
Text txtHA
[0] = Velg
Model [1] = Ban
12 JComboBox
Name Cmb_pilih
Name btnProses
13 jButton1
Text PROSES

Source code Button Proses :


if (cmb_pilih.getSelectedIndex()== 0){
SparePart data = new SparePart();
data.Harga_Velg = 3550000;
txtKode.setText(data.kode());
txtMerk.setText(data.merk());
txtHA.setText(Double.toString(data.Harga_Velg));

data.setDiskon(Integer.parseInt(txtDiskon.getText()));

txtHP.setText(Double.toString(data.Harga_Promo()));
}if (cmb_pilih.getSelectedIndex()== 1){
Ban data2 = new Ban();
data2.Harga_Ban = 850000;
txtKode.setText(data2.kode());
txtMerk.setText(data2.merk());
txtHA.setText(Double.toString(data2.Harga_Ban));

data2.setDiskon(Integer.parseInt(txtDiskon.getText()));

txtHP.setText(Double.toString(data2.Harga_Promo()));
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 21

Tampilan Hasil :

Gambar 4.8 Tampilan Hasil GUI_SparePart.java

Analisa :
Pada program diatas menerapkan method overriding pada classBan. Untuk
method overriding tersebut di berikan nama yang sama seperti method yang
telah tersedia di induk class yaitu double Harga_Promo() dan diatas method
tersebut diberikan kata kunci perintah @Override agar menunjukkan bahwa
method tersebut telah mengalami overriding seperti gambar diatas.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 22

IV.7 Kesimpulan
1. Inheritance (pewarisan) merupakan salah satu konsep dasar dari OOP.
Inheritance ini mengadopsi dunia rill dimana suatu entitas/objek dapat
mempunyai entitas turunan/objek turunan. Jadi konsep inheritance
adalah dimana sebuah kelas dapat mempunyai kelas turunan (subclass).
2. Overriding adalah mendefenisikan suatu method di dalam kelas
turunan yang nama dan daftar parameternya sama persis dengan yang
terdapat dalam kelas induk, maka hal tersebut dikatakan telah melakukan
override (mengesampingkan) method yang tersimpan dalam kelas
induk.
3. Overloading adalah sebuah kemampuan yang membolehkan sebuah class
mempunyai 2 atau lebih method dengan nama yang sama, yang
membedakan adalah parameternya. Pada method overloading perbedaan
parameter mencakup : Jumlah parameter. Tipe data dari parameter.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-1

BAB V
ABSTRACT, POLIMORFISME DAN EXCEPTION
HANDLING
Jumlah : 2 x 60 menit
Pertemuan
Tujuan Praktikum : 1. Praktikan dapat mengetahui fungsi atau kegunaan
kelas Abstrak dan kelas Interface.
2. Praktikan mampu membuat kelas Abstrak dan
kelas Interface pada java.
3. Praktikan mampu memahami dan
mengimplementasikan polimorfisme ke dalam
program.
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.

V.1 Landasan Teori


A. Pengertian Abstract dalam Pemrograman Berbasis Object.
Abstract Class adalah sebuah class yang tidak bisa di-instansiasi
(tidak bisa dibuat menjadi objek) dan berperan sebagai ‘kerangka dasar’
bagi class turunannya. Di dalam abstract class umumnya akan memiliki
abstract method.
Berikut bentuk deklarasi Class Abstract pada Jawa :

Contoh penerapan :

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-2

Abstract Method adalah sebuah ‘method dasar’ yang harus


direpresentasikan ulang di dalam class anak (child class). Abstract method
ditulis tanpa isi dari method, melainkan hanya ‘signature’-nya saja (ciri
khas). Signature dari sebuah method adalah bagian method yang terdiri
dari nama method dan parameternya (jika ada).
Berikut bentuk deklarasi Class Abstract pada Java :

Contoh penerapan :

Abstract class digunakan di dalam inheritance (pewarisan class)


untuk ‘memaksakan’implementasi method yang sama bagi seluruh class
yang diturunkan dari abstract class.Abstract class digunakan untuk
membuat struktur logika penurunan di dalam pemrograman objek.
Java memiliki aturan-aturan dalam penggunaan method abstrak dan
class abstrak sebagai berikut :
a. Class yang di dalamnya terdapat abstract method harus
dideklarasikan sebagai abstract class.
b. Abstract class tidak dapat diinstansi, tetapi harus di turunkan.
c. Abstract class tidak dapat diinstansi (menjadi objek dari class
abstract), tetapi kita dapat mendeklarasikan suatu variable yang
bertipe abstract class dan membuat instansi dari variabel tersebut
yang bertipe class turunan dari abstract class tersebut (teknik
polymorphism).
d. Sebuah class dapat dideklarasikan sebagai abstract class meskipun
class tersebut tidak memiliki abstract method.
Abstract method tidak boleh mempunyai body method dan demikian
juga sebaliknya bahwa method yang tidak ditulis body methodnya
maka harus dideklarasikan sebagai abstract method.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-3

B. Pengertian dasar Polimorfisme dan Exception.


1. Polimorfisme
Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam
OOP adalah sebuah prinsip di mana class dapat memiliki banyak
“bentuk” method yang berbeda- beda meskipun namanya sama.
“Bentuk” di sini dapat kita artikan: isinya berbeda (overriding),
parameternya berbeda dan tipe datanya berbeda (overlading).
Polimorfisme merupakan salah satu hal esensial dalam
pemograman berorientasi objek karena alasan beriku: yakni
polimorfisme mengizinkan kelas induk untuk mendefinisikan sebuah
method general (bersifat umum) untuk semua kelas turunannya.
Polymorphism sering dikaitkan dengan penggunaan lebih dari satu
method dengan nama sama. Penggunaan metoda dengan nama sama
dapat diterapkan dengan method overloading dan method overriding.
Peran polymorphism sebenarnya tidak terbatas hanya pada hal
tersebut. Ada keterkaitan antara polymorphism dan inheritance
(turunan).
Berikut salah satu bentuk deklarasi polimorfisme :
Perlu dipahami lagi tentang bagian. Override karena di dalam
Polimorfisme akan sangat di gunakan.
Super Class

Sub Class 1

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-4

Sub Class 2

Main Class

Keterangan :
a. Instansiasi : pembuatan objek dari suatu class (objek “induk” dari
Super Class).
b. induk merupakan objek polimorfisme dari class Super_Class,
kemudian diisi dengan objek dari Sub_Class1
c. Method nama_method() adalah overriden method dari kelas
Super_Class, yang di override sub class.
d. Ketika dipanggil induk.nama_method(), yang dimaksud adalah
nama_method() dari Super_Class, namun ketika di running, yang
ditampilkan adalah method nama_method() dari Sub_Class1
(karena objek induk diinstasiasi sebagai objek dari Sub_Class).
Begitu juga pada Sub_Class2
2. Exception
Exception Handling merupakan mekanisme yang paling
diperlukan dalam menangani error yang terjadi pada saat runtime
(program berjalan) atau yang lebih dikenal dengan sebutan runtime
error.
Secara umum, adanya kesalahan / error yang terjadi pada program
pada saat runtime dapat menyebabkan program berhenti atau hang.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-5

Untuk itulah diperlukan mekanisme memastikan bahwa program tetap


dapat berjalan meskipun terdapat kesalahanyang terjadi. Secara
umum, Exception Handling dapat dilakukan menggunakan keyword
try-catch.
Pada dasarnya ada 3 jenis exception berdasarkan kategorinya :
a. Checked Exception, adalah exception yang terjadi saat compile
time. Compile time error terjadi apabila exceptions ini tidak
ditangani menggunakan block try- catch atau menggunakan
keyword throws. Contoh: FileNotFoundException.
b. Uncecked Exception, adalah exception yang terjadi saat execution
time. Error ini terjadi dalam lingkup internal dari aplikasi,
biasanya terjadi karena salah penulisan kode. Contoh:
NullPointerException.
c. Error, adalah exception yang diluar kendali user atau
programmer. Eror ini terjadi di lingkup eksternal dari aplikasi.
Ketika exception ini terjadi, maka tidak ada yang bisa dilakukan
untuk mengatasinya. Contoh: ketika perngkat kerasnya rusak saat
ingin membaca data.
Dalam mengatasi berbagai macam Exception, perlu ditambahkan 3
block kode yaitu try, catch dan finally :
a) Try-Catch
Kode yang rawan dengan exception kita masukkan ke dalam
block try-catch. Kode yang dimasukkan dalam block try-catch
biasa disebut sebagai protected code.
Berikut bentuk penulisan Try-Catch :

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-6

b) Multiple Catch
Dengan menggunakan multiple catch dapat menangani lebih
dari 1 exception.
Berikut bentuk penulisan Multiple catch :

c) Finally
Block finally adalah block yang di tambahkan di akhir block
try-catch. Finally akan selalu dijalankan setelah try-catch baik
terjadi exception atau tidak.
Berikut bentuk penulisan finally :

V.2 Langkah – Langkah Praktikum


1. Buka Aplikasi Netbeans.
2. Buat class.
3. Memberi script pada kelas tersebut.
4. Buat form.
5. Memberi script pada form tersebut.
6. Menjalankan program.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-7

V.3 Tugas Praktikum 1 :


Mendesain ulang GUI_Matkul + membuat method Batal()
Desain Lama form (GUI_Matkul) :

Gambar 5.1 Tampilan Desain lama GUI_Matkul.java


Desain Baru form (GUI_Mahasiswa) :

Gambar 5.2 Tampilan Desain baru GUI_Matkul.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-8

Tabel 5.1 Properti Desain GUI_Matkul.java

No Objek Properti Nilai


1 jLabel1 Text DATA MATA KULIAH
2 jLabel2 Text Kode Mata Kuliah
3 jLabel3 Text Mata Kuliah
4 jLabel4 Text Dosen Pengajar
Name txtKodeMK
5 jTextField1
Text
Name txtMK
6 jTextField2
Text
Name txtDosen
7 jTextField3
Text
Name txtCari
8 jTextField5
Text
Name btnSimpan
9 jButton1
Text Simpan
Name btnUbah
10 jButton2
Text Ubah
Name btnHapus
11 jButton3
Text Hapus
Name btnBatal
12 jButton4
Text Batal
Name btnCari
13 jButton5
Text Cari
Name btnNilai
14 jButton5
Text Form Nilai
15 JTable Name tabel_data

Source code pada method konstruktor GUI_Matkul :


public void batal()
{
txtKodeMK.setText("");
txtMK.setText("");
txtDosen.setText("");
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-9

Source code pada button Batal :


private void
btnbatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
batal();
}

Tampilan Hasil :

Gambar 5.3 Tampilan Hasil GUI_Matkul (jTable)


Analisa :
Script method batal diatas digunakan untuk menghapus text yang
terdapat pada 3 text field yaitu txtKodeMK, txtMK, txtDosen dengan cara
mengeset text menjadi null. Untuk fungsi button simpan adalah menyimpan
data yang diinputkan dalam 3 textfield tersebut kedalam table yang sudah
tersedia.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 10

V.4 Tugas Praktikum 2 :


Menerapkan Polimorfisme pada GUI_Nilai
Diagram Class (Class Penilaian) :

Penilaian Class
+ String NIM, kode_mk; Attribute
+ int nilaiTugas, nilaiPrak;
+ private double nilaiAkhirPrak()
+ double tampilNA() Method
+ double nilaiAkhir()

Penilaian_NonPrak
+ double nilaiAkhir()

Source code pada Super Class Penilaian.java :


public abstract class Penilaian_NonPrak {
String NIM, kode_mk;
int nilaiTugas, nilaiPrak;

private double nilaiAkhirPrak(){


return ((nilaiTugas*0.6)+(nilaiPrak*0.4));
}

double tampilNA(){
return nilaiAkhirPrak();
}
abstract double nilaiAkhir();
}

Source code pada Sub Class Penilaian_NonPrak.java :


public class Penilaian_NonPrak extends penilaian {
@Override
double nilaiAkhir(){
return (nilaiTugas);
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 11

Desain form (GUI_Nilai.java) :

Gambar 5.4 Desain GUI_Nilai (Polimorfisme)


Source code pada Button Hasil Nilai Akhir.java :
private void
btnNilaiActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
memoNilai.setText("");
Penilaian_NonPrak nilai; // instansiasi

//objek nilai dari super class diinisiaalisasi


dengan sub class
nilai = new Penilaian_NonPrak();

nilai.NIM = txtNIM.getText();
nilai.kode_mk = txtKodeMK.getText();

if (cek_prak.isSelected()){
nilai.nilaiTugas =
Integer.parseInt(txtNT.getText());
nilai.nilaiPrak =
Integer.parseInt(txtNP.getText());
memoNilai.append("Nilai Akhir Mata Kuliah
\n");

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 12

memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("Nilai Praktikum :
"+nilai.nilaiPrak +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.tampilNA());
}else {
nilai.nilaiTugas =
Integer.parseInt(txtNT.getText());
memoNilai.append("Nilai Akhir Mata Kuliah
\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.nilaiAkhir());
}
}

Tampilan Hasil :

Gambar 5.5 Hasil Tampilan GUI_Nilai (Polymorfisme)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 13

Analisa :
Program diatas menerapkan method polymorfis,e pada pada deklarasi
variabel nilai pada class Penilaian_NonPrak ,merupakan program untuk
menghitung nilai Mahasiswa, pada class “Penilaian_NonPrak.java”
merupakan subclass atau turunan dari kelas abstract Penilaian.java. Check
Box berfungsi untuk menentukan apakah Nilai praktikum ikut dalam
perhitungan atau tidak. Jika Nilai praktikum diikutkan maka yang dicetak
adalah nilaiAkhir(), tetapi jika Nilai praktikum tidak diikutkan, maka yang di
cetak adalah tampilNA().

V.4 Tugas Praktikum 3 :


Membuat GUI_MenuUtama
Desain form (GUI_MenuUtama.java) :

Gambar 5.6 Hasil Tampilan GUI_MenuUtama.java

Tabel 5.2 Properti Desain GUI_Matkul.java

No Objek Properti Nilai


DATA MATA
1 jLabel1 Text
KULIAH
[1] = Home
jMenu
[2] = Form
2 jMenuBar [1] = GUI Mahasiswa
[2] = GUI Mata Kuliah
jMenuItem
[3] = GUI Nilai
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
V - 14

Source code pada MenuItem “GUI Mahasiswa” :


GUI_Mahasiswa mhs = new GUI_Mahasiswa();
mhs.show();

Source code pada MenuItem “GUI Mata Kuliah” :


GUI_Matkul1 mk = new GUI_Matkul1();
mk.show();

Source code pada MenuItem “GUI Nilai” :


GUI_Nilai nilai = new GUI_Nilai();
nilai.show();

Tampilan Hasil :

Gambar 5.7 Hasil Tampilan GUI_MenuUtama.java


Analisa :
Pada program diatas pada saat GUI_MenuUtama dijalankan akan muncul
From menu item GUI Mata Kuliah dan GUI Nilai di klik akan mengarahkan
ke GUI masing-masing sperti hasil gambar diatas.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 15

V.5 Tugas Rumah 1 :


Menerapkan Class Abstract pada GUI_Bengkel
Judul : Keuangan Bengkel
Diagram Class :

Source code Object Class(Data_Servis.java) :


public abstract class Data_Servis {
abstract double Total_Pembayaran();
abstract double Kembalian();
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 16

Source code Object Class(PaketA.java) :


public class Servis_PaketA extends Data_Servis{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;
double oli_mesin,karburator,kelistrikan,Switch_Rem;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

public double getOli_mesin() {


return oli_mesin = 75000;
}

public void setOli_mesin(double oli_mesin) {


this.oli_mesin = oli_mesin;
}

public double getKarburator() {


return karburator = 50000;
}

public void setKarburator(double karburator) {


this.karburator = karburator;
}

public double getKelistrikan() {


return kelistrikan = 150000;
}

public void setKelistrikan(double kelistrikan) {


this.kelistrikan = kelistrikan;
}

public double getSwitch_Rem() {


return Switch_Rem = 250000;
}

public void setSwitch_Rem(double Switch_Rem) {


this.Switch_Rem = Switch_Rem;
}

public double getPembayaran() {


return Pembayaran;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
V - 17

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

@Override
double Total_Pembayaran(){
return getKarburator() + getOli_mesin() +
getKelistrikan() + getSwitch_Rem();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Source code Object Class(PaketB.java) :


public class Servis_PaketB extends Data_Servis{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;
double oli_mesin,karburator;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

public double getOli_mesin() {


return oli_mesin = 75000;
}

public void setOli_mesin(double oli_mesin) {


this.oli_mesin = oli_mesin;
}

public double getKarburator() {


return karburator = 50000;
}

public void setKarburator(double karburator) {


this.karburator = karburator;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 18

public double getPembayaran() {


return Pembayaran;
}

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

@Override
double Total_Pembayaran(){
return getOli_mesin() + getKarburator();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Desain form (GUI_Bengkel.java):

Gambar 5.8 Desain GUI_Bengkel.java

Tabel 5.3 Properti Desain GUI_Bengkel.java

No Objek Properti Nilai


1 jLabel1 Text DATA SERVICE
2 jLabel2 Text Nama
3 jLabel3 Text Motor
4 jLabel4 Text Sevice
5 jLabel5 Text Total Pembayaran
6 jLabel6 Text Uang Pembayaran
7 jLabel7 Text Kembalian
Name
8 jTextField1
Text txtNama
Name
9 jTextField2
Text txtMotor
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
V - 19

Name
10 jTextField3 Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5
Text txtK
Name btnProses
13 jButton1
Text PROSES
[0] = Paket A
model [1] = Paket B
12 JComboBox
Name cmb_pilih
Name Hasil
13 jTextArea
Text

Source code Combo Box :


private void
cmb_pilihActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cmb_pilih.getSelectedIndex() == 0){
Servis_PaketA A = new Servis_PaketA();

txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Servis_PaketB B = new Servis_PaketB();

txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}

Source code Button PROSES :


private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Servis_PaketA A = new Servis_PaketA();
A.setNama_Pelanggan(txtNama.getText());
A.setJenis_Motor(txtMotor.getText());

if (cmb_pilih.getSelectedIndex() == 0 ){

txtTP.setText(Double.toString(A.Total_Pembayaran()));

A.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(A.Kembalian()));

Hasil.append("\t DATA SERVICE\n");


Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor + "\n");
Hasil.append("Service Paket A : \n");
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
V - 20

Hasil.append(" Pemeriksaan Oli Mesin\t\t: Rp."


+ A.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t: Rp."
+ A.karburator + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem Kelistrikan\t:
Rp." + A.kelistrikan + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan Switch
Rem\t: Rp." + A.Switch_Rem + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}else if (cmb_pilih.getSelectedIndex() == 1 ){
Servis_PaketB B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());

txtTP.setText(Double.toString(B.Total_Pembayaran()));

B.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(B.Kembalian()));

Hasil.append("\t DATA SERVICE\n");


Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + B.Jenis_Motor + "\n");
Hasil.append("Service Paket B : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t: Rp."
+ B.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t: Rp."
+ B.karburator + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
B.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
B.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
B.Kembalian() + ",-" + "\n");

}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 21

Tampilan Hasil :

Gambar 5.9 Tampilan Hasil GUI_Bengkel.java

Analisa :
Pada program diatas terdapat class Data_Service sebagai super class yang
menerapkan method abstract serta class PaketA dan PaketB sebagai sub class,
dimana kelas abstrack harus menurunkan method ke subclassnya dimana
menurunkan 2 method abstract double Total Pembayaran dan abstract double
kembalian seperti gambar diatas.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 22

V.6 Tugas Rumah 2 :


Menerapkan Exception Handling pada GUI_Bengkel
Judul : Keuangan Bengkel
Diagram Class :

Source code Object Class(Data_Servis.java) :


public abstract class Data_Servis {
abstract double Total_Pembayaran();
abstract double Kembalian();
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 23

Source code Object Class(PaketA.java) :


public class Servis_PaketA extends Data_Servis{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;
double oli_mesin,karburator,kelistrikan,Switch_Rem;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

public double getOli_mesin() {


return oli_mesin = 75000;
}

public void setOli_mesin(double oli_mesin) {


this.oli_mesin = oli_mesin;
}

public double getKarburator() {


return karburator = 50000;
}

public void setKarburator(double karburator) {


this.karburator = karburator;
}

public double getKelistrikan() {


return kelistrikan = 150000;
}

public void setKelistrikan(double kelistrikan) {


this.kelistrikan = kelistrikan;
}

public double getSwitch_Rem() {


return Switch_Rem = 250000;
}

public void setSwitch_Rem(double Switch_Rem) {


this.Switch_Rem = Switch_Rem;
}

public double getPembayaran() {


return Pembayaran;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 24

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

@Override
double Total_Pembayaran(){
return getKarburator() + getOli_mesin() +
getKelistrikan() + getSwitch_Rem();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Source code Object Class(PaketB.java) :


public class Servis_PaketB extends Data_Servis{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;
double oli_mesin,karburator;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

public double getOli_mesin() {


return oli_mesin = 75000;
}

public void setOli_mesin(double oli_mesin) {


this.oli_mesin = oli_mesin;
}

public double getKarburator() {


return karburator = 50000;
}

public void setKarburator(double karburator) {


this.karburator = karburator;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 25

public double getPembayaran() {


return Pembayaran;
}

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

@Override
double Total_Pembayaran(){
return getOli_mesin() + getKarburator();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Desain form (GUI_Bengkel.java):

Gambar 5.10 Desain GUI_Bengkel.java

Tabel 5.4 Properti Desain GUI_Bengkel.java

No Objek Properti Nilai


1 jLabel1 Text DATA SERVICE
2 jLabel2 Text Nama
3 jLabel3 Text Motor
4 jLabel4 Text Sevice
5 jLabel5 Text Total Pembayaran
6 jLabel6 Text Uang Pembayaran
7 jLabel7 Text Kembalian
Name
8 jTextField1
Text txtNama
9 jTextField2 Name

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 26

Text txtMotor
Name
10 jTextField3 Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5
Text txtK
Name btnProses
13 jButton1
Text PROSES
[0] = Paket A
model [1] = Paket B
12 JComboBox
Name cmb_pilih
Name Hasil
13 jTextArea
Text

Source code Combo Box :


private void
cmb_pilihActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cmb_pilih.getSelectedIndex() == 0){
Servis_PaketA A;
A = new Servis_PaketA();

txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Servis_PaketB B;
B = new Servis_PaketB();

txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}

Source code Button PROSES :


private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Servis_PaketA A;
A = new Servis_PaketA();
A.setNama_Pelanggan(txtNama.getText());
A.setJenis_Motor(txtMotor.getText());

if (cmb_pilih.getSelectedIndex() == 0 ){

txtTP.setText(Double.toString(A.Total_Pembayaran()));

try{

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 27

A.setPembayaran(Double.parseDouble(txtUP.getText()));

txtK.setText(Double.toString(A.Kembalian()));
}
catch(NumberFormatException data1){

JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor +
"\n");
Hasil.append("Service Paket A : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + A.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + A.karburator + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem
Kelistrikan\t: Rp." + A.kelistrikan + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan
Switch Rem\t: Rp." + A.Switch_Rem + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}
}else if (cmb_pilih.getSelectedIndex() == 1 ){
Servis_PaketB B;
B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());

txtTP.setText(Double.toString(B.Total_Pembayaran()));

try{

B.setPembayaran(Double.parseDouble(txtUP.getText()));

txtK.setText(Double.toString(B.Kembalian()));
}
catch(NumberFormatException data2){

JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 28

Hasil.append("Motor : " + B.Jenis_Motor +


"\n");
Hasil.append("Service Paket B : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + B.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + B.karburator + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
B.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
B.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
B.Kembalian() + ",-" + "\n");
}
}
}

Tampilan Hasil :

Gambar 5.11 Tampilan Hasil GUI_Bengkel.java

Analisa :
Pada program diatas terdapat class Data_Service sebagai super class serta
class PaketA dan PaketB sebagai sub class, dimana kelas abstrack harus
menurunkan method ke subclassnya dimana menurunkan 2 method abstract
double Total Pembayaran dan abstract double kembalian seperti gambar
diatas. Serta menerapkan method Exception Handling ketika perintah yang
berada di dalam kondisi “Try” di jalankan terjadi suatu kesalahan karena pada
Uang pembayaran tidak disisi atau kosong, maka secara otomatis pesan
kesalahan seperti gambar diatas akan keluar dan program akan di alihkan
menuju ke kondisi “Catch”.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
V - 29

V.7 Tugas Rumah 3 :


Menerapkan Polimorfisme pada GUI_Bengkel
Diagram Class :

Source code pada Super Class Data_Servis:


public abstract class Data_Servis {
abstract double Total_Pembayaran();
abstract double Kembalian();
}

Souce code pada Sub Class PaketA :


public class Servis_PaketA extends Data_Servis{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;
double oli_mesin,karburator,kelistrikan,Switch_Rem;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 30

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

public double getOli_mesin() {


return oli_mesin = 75000;
}

public void setOli_mesin(double oli_mesin) {


this.oli_mesin = oli_mesin;
}

public double getKarburator() {


return karburator = 50000;
}

public void setKarburator(double karburator) {


this.karburator = karburator;
}

public double getKelistrikan() {


return kelistrikan = 150000;
}

public void setKelistrikan(double kelistrikan) {


this.kelistrikan = kelistrikan;
}

public double getSwitch_Rem() {


return Switch_Rem = 250000;
}

public void setSwitch_Rem(double Switch_Rem) {


this.Switch_Rem = Switch_Rem;
}

public double getPembayaran() {


return Pembayaran;
}

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 31

@Override
double Total_Pembayaran(){
return getKarburator() + getOli_mesin() +
getKelistrikan() + getSwitch_Rem();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Souce code pada Sub Class PaketB :


public class Servis_PaketB extends Data_Servis{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;
double oli_mesin,karburator;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

public double getOli_mesin() {


return oli_mesin = 75000;
}

public void setOli_mesin(double oli_mesin) {


this.oli_mesin = oli_mesin;
}

public double getKarburator() {


return karburator = 50000;
}

public void setKarburator(double karburator) {


this.karburator = karburator;
}

public double getPembayaran() {


return Pembayaran;
}

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 32

@Override
double Total_Pembayaran(){
return getOli_mesin() + getKarburator();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Desain form GUI_Bengkel :

Gambar 5.12 Desain form GUI_Bengkel (Polimorfisme)


Tabel 5.6 Properti Desain GUI_Bengkel

No Objek Properti Nilai


1 jLabel1 Text DATA SERVICE
2 jLabel2 Text Nama
3 jLabel3 Text Motor
4 jLabel4 Text Sevice
5 jLabel5 Text Total Pembayaran
6 jLabel6 Text Uang Pembayaran
7 jLabel7 Text Kembalian
Name
8 jTextField1
Text txtNama
Name
9 jTextField2
Text txtMotor
Name
10 jTextField3 Text txtTP
Editbale Uncheck
11 jTextField4 Name
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
V - 33

Text txtUP
Name
12 jTextField5
Text txtK
Name btnProses
13 jButton1
Text PROSES
[0] = Paket A
model [1] = Paket B
12 JComboBox
Name cmb_pilih
Name Hasil
13 jTextArea
Text

Source code Combo Box :


private void
cmb_pilihActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cmb_pilih.getSelectedIndex() == 0){
Servis_PaketA A;
A = new Servis_PaketA();

txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Servis_PaketB B;
B = new Servis_PaketB();

txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}

Source code pada button PROSES :


private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Servis_PaketA A;
A = new Servis_PaketA();
A.setNama_Pelanggan(txtNama.getText());
A.setJenis_Motor(txtMotor.getText());

if (cmb_pilih.getSelectedIndex() == 0 ){

txtTP.setText(Double.toString(A.Total_Pembayaran()));

try{

A.setPembayaran(Double.parseDouble(txtUP.getText()));

txtK.setText(Double.toString(A.Kembalian()));
}
catch(NumberFormatException data1){

JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 34

}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor +
"\n");
Hasil.append("Service Paket A : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + A.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + A.karburator + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem
Kelistrikan\t: Rp." + A.kelistrikan + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan
Switch Rem\t: Rp." + A.Switch_Rem + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}
}else if (cmb_pilih.getSelectedIndex() == 1 ){
Servis_PaketB B;
B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());

txtTP.setText(Double.toString(B.Total_Pembayaran()));

try{

B.setPembayaran(Double.parseDouble(txtUP.getText()));

txtK.setText(Double.toString(B.Kembalian()));
}
catch(NumberFormatException data2){

JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + B.Jenis_Motor +
"\n");
Hasil.append("Service Paket B : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + B.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + B.karburator + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 35

Hasil.append("Total Pembayaran\t\t: Rp." +


B.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
B.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
B.Kembalian() + ",-" + "\n");
}
}
}

Tampilan Hasil :

Gambar 5.13 Tampilan Hasil GUI_Bengkel (Polimorfisme)


Analisa :
Pada program diatas terdapat class Data_Service sebagai super class serta
class PaketA dan PaketB sebagai sub class, dimana kelas abstrack harus
menurunkan method ke subclassnya dimana menurunkan 2 method abstract
double Total Pembayaran dan abstract double kembalian seperti gambar diatas.
Saat inisialisasi Super class ke sub class menggunakan metode polimorfisme
seperti super class Data_Servis di inisialisasikan dengan variable A pada class
PaketA dan variable B pada class PaketB.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V - 36

V.8 Kesimpulan
1. Abstract Class adalah sebuah class yang tidak bisa di-instansiasi (tidak
bisa dibuat menjadi objek) dan berperan sebagai ‘kerangka dasar’ bagi
class turunannya. Di dalam abstract class umumnya akan memiliki
abstract method.
2. Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam OOP
adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk”
method yang berbeda- beda meskipun namanya sama.
3. Exception Handling merupakan mekanisme yang paling diperlukan dalam
menangani error yang terjadi pada saat runtime (program berjalan) atau
yang lebih dikenal dengan sebutan runtime error.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 1

BAB VI
INTERFACE DAN PENGENALAN DATABASE
Jumlah Pertemuan : 2 x 60 menit

Tujuan Praktikum : 1. Praktikan mampu memahami tentang exception


dan menerapkan exception ke dalam program.
2. Praktikan mampu membuat database dengan
menggunakan MySQL.
3. Praktikan mampu mengkoneksikan database
dengan program yang sudah dibuat sebelumnya.
4. Praktikan mampu memberi akses insert, update,
delete, dan searching (memasukkan, merubah,
menghapus, dan pencarian).
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.

VI.1 Landasan Teori


A. Pengertian dari Interface
Interface merupakan prototype atau template untuk sebuah class,
deskripsi ini hampir serupa dengan class abstrak. Interface merupakan
class memiliki struktur yang istimewa. Ketika menulis method di interface
maka badan method kosong (abstract method), class– class yang
mengimplementasikan interface wajib meng-Overide method untuk
mendefinisikan implementasi metode – metode ini.
B. Deklarasi Interface
Interface secara struktur serupa dengan class. Isi dari interface
adalah method abstract, artinya method hanya dideklarasikan dan tanpa
badan method. Deklarasi method pada interface serupa dengan method
pada class abstract.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 2

Variable pada interface akan memiliki aturan static dan final sedangkan
method akan memiliki aturan public dan abstract. Hal ini terjadi setelah
proses kompilasi seperti yang terlihat pada gambar.
Sintax untuk menciptakan interface serupa dengan cara menciptakan
sebuah class tetapi terdapat beberapa pengecualian, yaitu :
1. Seluruh method yang di deklarasikan pada Interface pasti bersifat
public dan abstract.
2. Variable selalu bersifat public, final dan static.
a. Variabel atau attribute yang bersifat final adalah variable yang
tidak bisa dirubah nilainya pada kelas yang mengimplementasi
interface tersebut.
b. Static adalah pemanggilan variable atau attribute tanpa perlu
dibuat objek terlebih dahulu.
3. Bentuk Deklarasi Interface :

C. Pewarisan Pada Interface


Jika sebuah class tidak diperkenankan melakukan pewarisan
(extends) lebih dari 1 class, maka interface diperbolehkan melakukan hal
tersebut. Namun sebuah class diperbolehkan melakukan implementasi
terhadap lebih dari 1 interface. Implements bertujuan untuk menyamakan
struktur dari class yang mengimplementasi interface, sedangkan exteds
bertujuan untuk memperluas isi sebuah class.
Struktur extends dan implements pada java :
1. Sebuah class dapat implements 2 interface secara langsung

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 3

2. Sebuah Interface dapat extends dari interface lain :

3. Sebuah Class dapat extends dari kelas lain :

D. Pengenalan Database Dalam OOP.


1. Basis Data (Database)
Basis data (database) adalah kumpulan data yang disimpan secara
sistematis di dalam komputer yang dapat diolah atau dimanipulasi
menggunakan perangkat lunak (program aplikasi) untuk menghasilkan
informasi. Pendefinisian basis data meliputi spesifikasi berupa tipe
data, struktur data dan juga batasan-batasan pada data yang akan
disimpan.
2. XAMPP
XAMPP adalah perangkat lunak bebas, yang mendukung banyak
sistem operasi, merupakan kompilasi dari beberapa program.
Fungsinya adalah sebagai server yang berdiri sendiri (localhost), yang
terdiri atas program Apache HTTP Server, MySQL database, dan
penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan
Perl. Nama XAMPP merupakan singkatan dari X (empat sistem
operasi apapun), Apache, MySQL, PHP dan Perl. Program ini tersedia
dalam GNU General Public License dan bebas, merupakan web server
yang mudah digunakan yang dapat melayani tampilan halaman web
yang dinamis. Untuk mendapatkanya dapat mendownload langsung
dari web resminya.
Dua (2) Software yang digunakan dalam XAMPP :

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 4

a. phpMyAdmin(MySQL) adalah perangkat lunak bebas yang ditulis


dalam bahasa pemrograman PHP yang digunakan untuk
menangani administrasi MySQL melalui website Jejaring Jagat
Jembar. phpMyAdmin mendukung berbagai operasi MySQL,
diantaranya.
b. Server HTTP Apache atau Server Web/WWW Apache adalah
server web yang dapat dijalankan di banyak sistem operasi yang
berguna untuk melayani dan memfungsikan situs web. Protokol
yang digunakan untuk melayani fasilitas web/www ini
menggunakan HTTP.

VI.2 Langkah – Langkah Praktikum


1. Buka Aplikasi Netbeans.
2. Buat class.
3. Memberi script pada kelas tersebut.
4. Buat form.
5. Memberi script pada form tersebut.
6. Menjalankan program.

VI.3 Tugas Praktikum 1 :


Mendesain ulang GUI_Nilai + membuat method Batal()
Desain lama form (GUI_Nilai.java) :

Gambar 6.1 Desain lama form GUI_Nilai.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 5

Desain baru form (GUI_Nilai.java) :

Gambar 6.2 Desain form GUI_Nilai.java (JTable)


Tabel 6.1 Properti Desain GUI_Nilai(JTable)

No Objek Properti Nilai


1 jLabel1 Text PROGRAM PENILAIAN
2 jLabel4 Text Nilai Tugas
3 jLabel5 Text Nilai Praktikum
4 JLabel6 Text Nilai Akhir
Name txtNIM
5 jTextField1
Text
Name txtKodeMK
6 jTextField2
Text
Name txtNT
7 jTextField3
Text
Name txtNP
8 jTextField4
Text
Name txtNA
9 jTextField5
Text
Name txtNA
10 jTextField6
Text
Name btnNA
11 jButton1
Text Proses
Text Praktikum
12 JCheckBox
Name cek_prak
Name btnSimpan
13 JButton2
Text Simpan
14 JButton3 Name btnUbah

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 6

Text Ubah
Name btnHapus
15 JButton4
Text Hapus
Name btnBatal
16 JButton5
Text Batal
Name btnCari
17 JButton6
Text Cari
Name btnNIM
18 JButton7
Text NIM
Name btnNIM
19 JButton8
Text NIM
20 JTable Name tabel_data

Source code pada method batal():


public void batal(){
txtNIM.setText("");
txtKodeMK.setText("");
txtNT.setText("");
txtNP.setText("");
txtNA.setText("");
}

Source code pada button Batal:


private void
btnBatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
batal();
}

Tampilan Hasil:

Gambar 6.3 Tampilan Hasil GUI_Nilai (jTable)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 7

Analisa :
Pada program diatas telah ditambahkan button NIM, kode MK, Simpan,
Ubah, Hapus, Batal, Cari. Dan ditambahkan juga method batal pada GUI yang
digunakan untuk menghapus semua data yang sudah diinputkan pada textfield
sehingga bisa diisi ulang dengan data baru.

VI.4 Tugas Praktikum 2 :


Membuat database “Penilaian” dan table “tb_mahasiswa”, meng-koneksikan
GUI_Mahasiswa dengan database.
Membuat database oop_1918026

Gambar 6.4 Membuat database oop_1918026


Structure tb_mahasiswa pada database oop_1918026

Gambar 6.5 Membuat tabel (tb_mahasiswa)


Tambahkan library mysql.connector.jar pada library dengan cara klik kanan
pada library, kemudian pilih Add JAR/Folder...

Gambar 6.6 Menambahkan Library Connector


Source code pada GUI (import Library) :
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 8

import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

Source code di bawah Konstruktor GUI_Mahasiswa :


public Connection conn;

Source code method koneksi :


public void koneksi() throws SQLException {
try {
conn=null;
Class.forName("com.mysql.jdbc.Driver");
conn=
DriverManager.getConnection("jdbc:mysql://localhost/oop_191
8026?user=root&password=");
}
catch (ClassNotFoundException ex){

Logger.getLogger(GUI_Mahasiswa1.class.getName()).log(Level.
SEVERE,null, ex);
}
catch (SQLException e){

Logger.getLogger(GUI_Mahasiswa1.class.getName()).log(Level.
SEVERE,null, e);
}
catch (Exception es){

Logger.getLogger(GUI_Mahasiswa1.class.getName()).log(Level.
SEVERE,null, es);
}
}

Source code di method tampil :


public void tampil(){
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("NIM");
tabelhead.addColumn("NAMA");
tabelhead.addColumn("PRODI");
tabelhead.addColumn("ANGKATAN");
try {
koneksi();
String sql = "SELECT * FROM tb_mahasiswa";
Statement stat = conn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){
tabelhead.addRow(new
Object[]{res.getString(1),res.getString(2),res.getString(3)
, res.getString(4),});
}
tabel_data.setModel(tabelhead);

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 9

}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


public void refresh(){
new GUI_Mahasiswa1().setVisible(true);
this.setVisible(false);
}

Source code method tambah :


public void insert(){
String Nim = txtNim.getText();
String Nama = txtNama.getText();
String Prodi = txtProdi.getText();
String Ang = txtAng.getText();
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_mahasiswa(nim,nama, prodi, angkatan)" +
"VALUES('"+Nim+"','"+Nama+"','"+Prodi+"','"+Ang+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Mahasiswa!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}

Source code method ubah :


public void update(){
String Nim = txtNim.getText();
String Nama = txtNama.getText();
String Prodi = txtProdi.getText();
String Ang = txtAng.getText();
try {
Statement statement = conn.createStatement();
statement.executeUpdate("UPDATE tb_mahasiswa SET
nim='"+Nim+"'," + "nama='"+Nama+"'" +
",prodi='"+Prodi+"',angkatan='"+Ang+"'WHERE nim =
'"+Nim+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update Data
Mahasiswa!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 10

refresh();
}

Source code method hapus :


public void delete(){
int ok=JOptionPane.showConfirmDialog(null,"Apakah
Anda yakin akan menghapus data
?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(ok==0){
try{
String sql="DELETE FROM tb_mahasiswa WHERE
nim='"+txtNim.getText()+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();
JOptionPane.showMessageDialog(null,"Data
Berhasil di hapus");
batal();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Data
gagal di hapus");
}
}
refresh();
}

Source code method cari :


public void cari(){
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_mahasiswa
WHERE `nim` LIKE '%"+txtCari.getText()+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner method
{
txtNim.setText(rs.getString(1));
txtNama.setText(rs.getString(2));
txtProdi.setText(rs.getString(3));
txtAng.setText(rs.getString(4));
}
else{
JOptionPane.showMessageDialog(null,
"Data yang Anda cari tidak ada");
}
}
}catch (Exception ex){
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 11

Desain form GUI Mahasiswa :

Gambar 6.7 Desain form GUI_Mahasiswa


Tabel 6.2 Properti Desain GUI_Mahasiswa (Database)

No Objek Properti Nilai


1 jLabel1 Text DATA MAHASISWA
2 jLabel2 Text NIM
3 jLabel3 Text Nama
4 jLabel4 Text Prodi
5 jLabel5 Text Angkatan
Name txtNim
6 jTextField1
Text
Name txtNama
7 jTextField2
Text
Name txtProdi
8 jTextField3
Text
Name txtAng
9 jTextField4
Text
Name txtCari
10 jTextField5
Text
Name btnSimpan
11 jButton1
Text Simpan
Name btnUbah
12 jButton2
Text Ubah
Name btnHapus
13 jButton3
Text Hapus
Name btnBatal
14 jButton4
Text Batal
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VI - 12

Name btnCari
15 jButton5
Text Cari
Name btnNilai
16 jButton5
Text Form Nilai
17 JTable Name tabel_data

Source code pada tombol tambah :


insert();

Source code pada tombol Ubah :


update();

Source code pada tombol hapus :


delete();

Source code pada tombol cari :


cari();

Source code pada tombol batal :


batal();

Tampilan Hasil:

Gambar 6.8 Tampilan Hasil Method tampil() GUI_Mahasiswa

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 13

Gambar 6.9 Tampilan Hasil Method tambah() GUI_Mahasiswa

Gambar 6.10 Tampilan Hasil Method ubah() GUI_Mahasiswa

Gambar 6.11 Tampilan Hasil Method hapus() GUI_Mahasiswa

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 14

Gambar 6.12 Tampilan Hasil Method batal() GUI_Mahasiswa


Analisa :
Pada program diatas agar tersambung dengan database yang sudah dibuat
maka buat fungsi koneksi untuk menghubungkan database, Pada program ini,
terdapat penerapan Database. Ketika button Insert ditekan manggil fungsi
insert(), dimana fungsi Insert berisi query sql server untuk memasukan data
ke database setelah mengisikan data pada textfield maka data akan ter Insert
atau di tambah ke database, maka jika ingin menghapus manggil fungsi
delete() dimana di fungsi hapus terdapat query dari sql server untuk
menghapus data yang terdapat di dalam database data juga akan terhapus.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 15

VI.5 Tugas Rumah 1 :


Menerapkan Interface pada GUI_Bengkel
Diagram Class :

Source code pada Super Class Data_Servis :


public abstract class Data_Servis {
abstract double Total_Pembayaran();
abstract double Kembalian();
}

Souce code pada Class Interface Data_Perbaikan :


public interface Data_Perbaikan {
final static int Jmlh_Perbaikan = 4;
abstract double oli_mesin();
abstract double karburator();
abstract double kelistrikan();
abstract double Switch_Rem();
}
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VI - 16

Souce code pada Sub Class PaketA :


public class Servis_PaketA extends Data_Servis implements
Data_Perbaikan{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

@Override
public double oli_mesin() {
return 75000;
}

@Override
public double karburator() {
return 50000;
}

@Override
public double kelistrikan() {
return 150000;
}

@Override
public double Switch_Rem() {
return 250000;
}

public double getPembayaran() {


return Pembayaran;
}

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

@Override
double Total_Pembayaran(){
return karburator() + oli_mesin() + kelistrikan() +
Switch_Rem();
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 17

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Souce code pada Sub Class PaketB :


public class Servis_PaketB extends Data_Servis implements
Data_Perbaikan{
public String Nama_Pelanggan,Jenis_Motor;
double Pembayaran;

public String getNama_Pelanggan() {


return Nama_Pelanggan;
}

public void setNama_Pelanggan(String Nama_Pelanggan) {


this.Nama_Pelanggan = Nama_Pelanggan;
}

public String getJenis_Motor() {


return Jenis_Motor;
}

public void setJenis_Motor(String Jenis_Motor) {


this.Jenis_Motor = Jenis_Motor;
}

@Override
public double oli_mesin() {
return 75000;
}

@Override
public double karburator() {
return 50000;
}

public double getPembayaran() {


return Pembayaran;
}

public void setPembayaran(double Pembayaran) {


this.Pembayaran = Pembayaran;
}

@Override
double Total_Pembayaran(){
return oli_mesin() + karburator();
}

@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 18

Desain form GUI_ GUI_Bengkel :

Gambar 6.13 Desain form GUI_ GUI_Bengkel (Interface)


Tabel 6.3 Properti Desain GUI_ GUI_Bengkel

No Objek Properti Nilai


1 jLabel1 Text DATA SERVICE
2 jLabel2 Text Nama
3 jLabel3 Text Motor
4 jLabel4 Text Sevice
5 jLabel5 Text Total Pembayaran
6 jLabel6 Text Uang Pembayaran
7 jLabel7 Text Kembalian
Name
8 jTextField1
Text txtNama
Name
9 jTextField2
Text txtMotor
Name
10 jTextField3 Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5 Text txtK
Editbale Uncheck
Name btnProses
13 jButton1
Text PROSES
Name btnClear
14 jButton2
Text Clear

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 19

[0] = MENU
model [1] = Paket A
15 JComboBox
[2] = Paket B
Name cmb_pilih
Name Hasil
16 jTextArea
Text

Source code pada method konstruktor GUI_Bengkel :


public void clear(){
txtNama.setText("");
txtMotor.setText("");
txtTP.setText("");
txtUP.setText("");
txtK.setText("");
Hasil.setText("");
}

Source code pada button CLEAR :


private void
btnCLearActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
clear();
}

Source code Combo Box :


private void
cmb_pilihActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(cmb_pilih.getSelectedIndex() == 1){
Servis_PaketA A;
A = new Servis_PaketA();

txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 2){
Servis_PaketB B;
B = new Servis_PaketB();

txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}

Source code pada button PROSES :


private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Servis_PaketA A;
A = new Servis_PaketA();
A.setNama_Pelanggan(txtNama.getText());
A.setJenis_Motor(txtMotor.getText());

if (cmb_pilih.getSelectedIndex() == 1 ){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 20

txtTP.setText(Double.toString(A.Total_Pembayaran()));

try{

A.setPembayaran(Double.parseDouble(txtUP.getText()));
if (A.Pembayaran < A.Total_Pembayaran()){

JOptionPane.showMessageDialog(getRootPane(),"UangyaKurang",
"MAAF :)",2);
}else{

txtK.setText(Double.toString(A.Kembalian()));
}
}
catch(NumberFormatException data1){

JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor +
"\n");
Hasil.append("Service Paket A : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + A.oli_mesin() + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + A.karburator() + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem
Kelistrikan\t: Rp." + A.kelistrikan() + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan
Switch Rem\t: Rp." + A.Switch_Rem() + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}
}else if (cmb_pilih.getSelectedIndex() == 2 ){
Servis_PaketB B;
B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());

txtTP.setText(Double.toString(B.Total_Pembayaran()));

try{

B.setPembayaran(Double.parseDouble(txtUP.getText()));
if (B.Pembayaran < B.Total_Pembayaran()){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 21

JOptionPane.showMessageDialog(getRootPane(),"UangyaKurang",
"MAAF :)",2);
}else{

txtK.setText(Double.toString(B.Kembalian()));
}
}
catch(NumberFormatException data2){

JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + B.Jenis_Motor +
"\n");
Hasil.append("Service Paket B : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + B.oli_mesin() + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + B.karburator() + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
B.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
B.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
B.Kembalian() + ",-" + "\n");
}
}else {
JOptionPane.showMessageDialog(getRootPane(),
"Pilih MENU!!", "WARNING",2);
}
}

Tampilan Hasil :

Gambar 6.14 Tampilan Hasil GUI_Bengkel (Interface)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 22

Analisa :
Pada program diatas terdapat class Data_Service sebagai super class
serta class PaketA dan PaketB sebagai sub class, dimana kelas abstrack harus
menurunkan method ke subclassnya dimana menurunkan 2 method abstract
double Total Pembayaran dan abstract double kembalian ,serta PaketA dan
PaketB memeliki struktur yang sama dengan interface Data_Perbaikan, karena
implements dari interface tersebut maka tiap method harus di Override.

VI.6 Tugas Rumah 2 :


Menerapkan CRUD Pada GUI_Sparepart
Membuat Database oop_1918026

Gambar 6.15 Membuat database oop_1918026


Structure tb_sparepart pada database oop_1918026

Gambar 6.16 Membuat tabel (tb_sparepart)


Source code pada GUI :
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 23

Source code di bawah Konstruktor GUI_sparepart :


public Connection conn;

Source code method koneksi :


public void koneksi() throws SQLException {
try {
conn=null;
Class.forName("com.mysql.jdbc.Driver");
conn=
DriverManager.getConnection("jdbc:mysql://localhost/oop_191
8026?user=root&password=");
}
catch (ClassNotFoundException ex){

Logger.getLogger(GUI_sparepart.class.getName()).log(Level.S
EVERE,null, ex);
}
catch (SQLException e){

Logger.getLogger(GUI_sparepart.class.getName()).log(Level.S
EVERE,null, e);
}
catch (Exception es){

Logger.getLogger(GUI_sparepart.class.getName()).log(Level.S
EVERE,null, es);
}
}

Source code di method tampil :


public void tampil(){
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("NO.SERI");
tabelhead.addColumn("JENIS");
tabelhead.addColumn("MEREK");
tabelhead.addColumn("HARGA");
try {
koneksi();
String sql = "SELECT * FROM tb_sparepart";
Statement stat = conn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){
tabelhead.addRow(new
Object[]{res.getString(1),res.getString(2),res.getString(3)
, res.getString(4),});
}
tabel_data.setModel(tabelhead);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 24

Source code method refresh :


public void refresh(){
new GUI_sparepart().setVisible(true);
this.setVisible(false);
}

Source code method tambah :


public void insert(){
String No = txtNo.getText();
String Jenis = txtJenis.getText();
String Merek = txtMerek.getText();
String Harga = txtHarga.getText();
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_sparepart(No,Jenis, Merek, Harga)" +
"VALUES('"+No+"','"+Jenis+"','"+Merek+"','"+Harga+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Sparepart!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}

Source code method ubah :


public void update(){
String No = txtNo.getText();
String Jenis = txtJenis.getText();
String Merek = txtMerek.getText();
String Harga = txtHarga.getText();
try {
Statement statement = conn.createStatement();
statement.executeUpdate("UPDATE tb_sparepart
SET No='"+No+"'," + "Jenis='"+Jenis+"'" +
",Merek='"+Merek+"',Harga='"+Harga+"'WHERE No = '"+No+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update
Data Sparepart!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
refresh();
}

Source code method hapus :


public void delete(){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 25

int ok=JOptionPane.showConfirmDialog(null,"Apakah
Anda yakin akan menghapus data
?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(ok==0){
try{
String sql="DELETE FROM tb_sparepart WHERE
No='"+txtNo.getText()+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();
JOptionPane.showMessageDialog(null,"Data
Berhasil di hapus");
batal();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Data
gagal di hapus");
}
}
refresh();
}

Source code method cari :


public void cari(){
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_sparepart
WHERE `No` LIKE '%"+txtCari.getText()+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner method
{
txtNo.setText(rs.getString(1));
txtJenis.setText(rs.getString(2));
txtMerek.setText(rs.getString(3));
txtHarga.setText(rs.getString(4));
}
else{
JOptionPane.showMessageDialog(null,
"Data yang Anda cari tidak ada");
}
}
}catch (Exception ex){
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 26

Tambahkan library mysql.connector.jar pada library dengan cara klik kanan


pada library, kemudian pilih Add JAR/Folder...

Gambar 6.17 Menambahkan Library Connector


Desain form GUI_sparepart :

Gambar 6.18 Desain form GUI_sparepart


Tabel 6.4 Properti Desain GUI_sparepart (Database)

No Objek Properti Nilai


1 jLabel1 Text DATA MATA KULIAH
2 jLabel2 Text Kode Mata Kuliah
3 jLabel3 Text Mata Kuliah
4 jLabel4 Text Jumlah SKS
Name txtKodeMK
5 jTextField1
Text
Name txtMK
6 jTextField2
Text
Name txtDosen
7 jTextField3
Text
Name txtCari
8 jTextField5
Text
Name btnSimpan
9 jButton1
Text Simpan
Name btnUbah
10 jButton2
Text Ubah
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VI - 27

Name btnHapus
11 jButton3
Text Hapus
Name btnBatal
12 jButton4
Text Batal
Name btnCari
13 jButton5
Text Cari
Name btnNilai
14 jButton5
Text Form Nilai
15 JTable Name tabel_data

Source code pada tombol Tambah :


insert();
Source code pada tombol Ubah :
update();
Source code pada tombol Hapus :
delete();
Source code pada tombol cari :
cari();
Source code pada tombol Batal :
batal();
Tampilan Hasil:

Gambar 6.19 Tampilan Hasil Method tampil() GUI_sparepart

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 28

Gambar 6.20 Tampilan Hasil Method tambah() GUI_sparepart

Gambar 6.21 Tampilan Hasil Method ubah() GUI_sparepart

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 29

Gambar 6.22 Tampilan Hasil Method hapus() GUI_sparepart

Gambar 6.23 Tampilan Hasil Method batal() GUI_sparepart


Analisa :
Pada program di atas menggunakan database untuk membuat kumpulan
data yang disimpan dan dapat diolah. Pada program tersebut terdapat method
tampil, insert dan update, semua method tersebut sudah terkoneksikan ke
database dengan menggunakan phpMyAdmin(MySQL) untuk mengolah atau
memanipulasi data yang sudah diinputkan. Pada method tampil merupakan
method yang menampilkan data awal pada saat program pertama kali
dijalankan dengan memanggil konstruktor pada GUI_sparepart. Pada button
insert berfungsi apabila ada data baru yang diinputkan melalui tabel dan
secara otomatis juga diiputkan kedalam database, sedangkan pada button
update berfungsi apabila ada salah satu data yang diubah pada tabel.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VI - 30

VI.7 Kesimpulan
1. Interface merupakan prototype atau template untuk sebuah class, deskripsi
ini hampir serupa dengan class abstrak.
2. Variable pada interface akan memiliki aturan static dan final sedangkan
method akan memiliki aturan public dan abstract.
3. Basis data (database) adalah kumpulan data yang disimpan secara
sistematis di dalam komputer yang dapat diolah atau dimanipulasi
menggunakan perangkat lunak (program aplikasi) untuk menghasilkan
informasi.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 1

BAB VII
PENERAPAN DATABASE BAGIAN 2
Jumlah Pertemuan : 2 x 60 menit

Tujuan Praktikum : 1. Praktikan mampu memahami tentang exception


dan menerapkan exception ke dalam program.
2. Praktikan mampu membuat database dengan
menggunakan MySQL.
3. Praktikan mampu mengkoneksikan database
dengan program yang sudah dibuat sebelumnya.
4. Praktikan mampu memberi akses insert, update,
delete, dan searching (memasukkan, merubah,
menghapus, dan pencarian).
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.

VII.1 Landasan Teori


A. Pengertian bahasa yang digunakan dalam Database.
1. SQL(Structure Query Languague)
SQL (Structured Query Language) merupakan bahasa yang telah
distandarsisasikan dan digunakan dalam pengelolaan semua database
yang ada. Didalam SQL terdapat 3 sub bahasa, yaitu: Data Definition
Language (DDL) yang digunakan untuk membangun objek - objek
dalam database seperti tabel dan indeks; Data manipulation Language
(DML) yang digunakan untuk menambah, mencari, mengubah, dan
menghapus baris dalam tabel; dan Data Control Language (DCL)
yang digunakan untuk menangani masalah sekuriti dalam database.
Ketiga sub bahasa ini dapat kita akses setelah database dipanggil.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 2

2. DATA DEFINITION LANGUAGE (DDL)


DDL adalah perintah - perintah yang digunakan untuk
membangun isi dari database. DDL bertugas untuk membuat objek
SQL dan menyimpan definisinya dalam tabel.
Perintah - perintah yang digolongkan dalam DDL adalah :
a. Create : Perintah ini digunakan untuk membuat databs, tabel, dan
objek lain dalam database.
b. Alter : Perintah ini digunakan untuk memodifikasi tabel, seperti
mengganti nama tabel, mengubah jenis/tipe field yang digunakan,
mengubah nama field baru atau mengurangi field tertentu.
c. Drop : Perintah ini digunakan untuk menghapus database, tabel
dan objek lain dalam dabase.
3. DATA MANIPULATION LANGUAGE (DML)
DML digunakan untuk menampilkan, mengubah, menambah dan
menghapus baris dalam tabel. Perintah - perintah yang dihubungkan
digolongkan dalam DML antara lain: Select : Perintah ini digunakan
untuk menampilkan isi tabel.Baik semua isi tabel atau sebagian isi
tabel. Bahkan bisa pula menampilkan isi tabel yang dihubungkan
dengan tabel - tabel yang lain.
a. Insert : Perintah ini untuk mengisi atau menambahkan isi tabel.
Pengisian dapat dilakukan untuk seluruh field atau hanya
sebagian filed saja.
b. Update : Seperti terlihat pada perintahnya. Perintah ini digunakan
untuk mengubah item - item tertentu dalam satu tabel.
c. Delete : Perintah ini digunakan untuk menghapus record - record
dengan kriteria tertentu.
B. Pengertian jenis Variable dalam Database MySQL.
1. Tipe Data Angka (Numerik).
Tipe Data Angka (Numerik) merupakan tipe data yang dapat kita
gunakan pada suatu variabel konstanta yang dapat menyimpan nilai

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 3

berupa angka. Pada tipe data angka terbagi menjadi beberapa jenis
seperti pada kolom tabel dibawah ini.

Gambar 7.1 Tipe – tipe Data Angka


2. Tipe Data Teks (String).
Tipe Data Teks (String) merupakan tipe data yang bisa kita
gunakan untuk menampung banyak karakter dengan jumlah
maksimum data yang dapat ditampung yakni sebanyak 255 karakter.
Dibawah ini ada beberapa jenis-jenis tipe data string yang terdapat
pada Database MySQL.

Gambar 7.2 Tipe – tipe Data String

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 4

3. Tipe Waktu
Tipe Date digunakan untuk menyimpan data tanggal dengan
format tahun, bulan, tanggal. Beberapa jenis tipe data date yang dapat
digunakan.

Gambar 7.3 Tipe – tipe data waktu


4. Tipe Data BLOB
Tipe Data BLOB merupakan tipe data yang dapat digunakan
untuk menampung gambar, musik, video dan lain-lain nya.

Gambar 7.4 Tipe – tipe data BLOB


VII.2 Langkah – Langkah Praktikum
1. Buka Aplikasi Netbeans.
2. Buat Class.
3. Memberi script pada kelas tersebut.
4. Buat form.
5. Memberi script pada form tersebut.
6. Menjalankan program.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 5

VII.3 Tugas Praktikum 1 :


Membuat database “Penilaian” dan table “tb_matkul”, meng-koneksikan
GUI_Matkul dengan database.
Structure tb_matkul pada database oop_1918026

Gambar 7.5 Membuat tabel (tb_matkul)


Tambahkan library mysql.connector.jar pada library dengan cara klik kanan
pada library, kemudian pilih Add JAR/Folder...

Gambar 7.6 Menambahkan Library Connector


Source code pada GUI (import Library) :
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

Source code di bawah Konstruktor GUI_Matkul :


public Connection conn;

Source code method koneksi :


public void koneksi() throws SQLException {
try {
conn=null;
Class.forName("com.mysql.jdbc.Driver");
conn=
DriverManager.getConnection("jdbc:mysql://localhost/oop_191
8026?user=root&password=");
}
catch (ClassNotFoundException ex){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 6

Logger.getLogger(GUI_Matkul.class.getName()).log(Level.SEVE
RE,null, ex);
}
catch (SQLException e) {

Logger.getLogger(GUI_Matkul.class.getName()).log(Level.SEVE
RE,null, e);
}
catch (Exception es) {

Logger.getLogger(GUI_Matkul.class.getName()).log(Level.SEVE
RE,null, es);
}
}

Source code di method tampil :


public void tampil() {
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("Kode MK");
tabelhead.addColumn("Matkul");
tabelhead.addColumn("Jumlah SKS");
try {
koneksi();
String sql = "SELECT * FROM tb_matkul";
Statement stat = conn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){
tabelhead.addRow(new
Object[]{res.getString(1),res.getString(2),res.getString(3)
});
}
tabel_data.setModel(tabelhead);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


public void refresh(){
new GUI_Matkul().setVisible(true);
this.setVisible(false);
}

Source code method tambah :


public void insert(){
get();
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_matkul(kode_mk, nama_mk,

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 7

jumlah_sks)"+"VALUES('"+kode_mk+"','"+nama_mk+"','"+jumlah_
sks+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Matkul!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}

Source code method ubah :


public void update(){
get();
try {
Statement statement = conn.createStatement();
statement.executeUpdate("update tb_matkul set
kode_mk='"+kode_mk+"',nama_mk =
'"+nama_mk+"',jumlah_sks='"+jumlah_sks+"' where
kode_mk='"+kode_mk+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update
Data Matkul!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
refresh();
}

Source code method hapus :


public void delete(){
get();
int
ok=JOptionPane.showConfirmDialog(null,"Apakah Anda
yakin akan menghapus data
?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(ok==0){
try{
String sql="DELETE FROM tb_matkul
WHERE kode_mk='"+kode_mk+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();

JOptionPane.showMessageDialog(null,"Data Berhasil di
hapus");
batal();
}catch(Exception e){

JOptionPane.showMessageDialog(null,"Data gagal di
hapus");
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 8

}
refresh();
}

Source code method cari :


public void cari(){
get();
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_matkul
WHERE kode_mk LIKE '%"+cari+"%'"+
"OR nama_mk LIKE'%"+cari+"%'"+
"OR jumlah_sks
LIKE'%"+cari+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner
method
{
txtKodeMK.setText(rs.getString(1));
txtMK.setText(rs.getString(2));
txtSKS.setText(rs.getString(3));
}
else{
JOptionPane.showMessageDialog(null,
"Data yang Anda cari tidak ada");
}
}
}catch (Exception ex){
JOptionPane.showMessageDialog(null,
"Terjadi Kesalahan!");
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 9

Desain form GUI Matkul :

Gambar 7.7 Desain form GUI_ Matkul


Tabel 7.1 Properti Desain GUI_ Matkul (Database)

No Objek Properti Nilai


1 jLabel1 Text DATA MATA KULIAH
2 jLabel2 Text Kode MataKuliah
3 jLabel3 Text Nama Mata Kuliah
4 jLabel4 Text Dosen Pengajar
5 jTabel Name tabel
Name txtkode
6 jTextField1
Text
Name txtmk
7 jTextField2
Text
Name txtdp
8 jTextField3
Text
Name JButton1
9 jButton1
Text Simpan
Name JButton2
11 jButton2
Text Ubah
12 jButton3 Name JButton3
Text Hapus
13 jButton4 Name JButton4
Text Batal
14 jButton5 Name JButton5
Text Form Nilai
16 jButton6 Name JButton6
Text Cari
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 10

Source code pada tombol tambah :


private void
btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
insert();
}

Source code pada tombol Ubah :


private void
btnUbahActionPerformed(java.awt.event.ActionEvent evt) {
update(); // TODO add your handling code here:
}

Source code pada tombol hapus :


private void
btnHapusActionPerformed(java.awt.event.ActionEvent evt) {
delete(); // TODO add your handling code here:
}

Source code pada tombol cari:


private void
txtCariActionPerformed(java.awt.event.ActionEvent evt) {
cari(); // TODO add your handling code here:
}

Source code pada tombol batal:


private void
btnBatalActionPerformed(java.awt.event.ActionEvent evt) {
batal(); // TODO add your handling code here:
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 11

Tampilan Hasil:

Gambar 7.8 Tampilan Hasil Method tampil() GUI_ Matkul

Gambar 7.9 Tampilan Hasil Method tambah() GUI_ Matkul

Gambar 7.10 Tampilan Hasil Method ubah() GUI_ Matkul

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 12

Gambar 7.11 Tampilan Hasil Method hapus() GUI_ Matkul

Gambar 7.12 Tampilan Hasil Method batal() GUI_ Matkul


Analisa :
Program diatas mempunyai beberapa method yang digunakan untuk
mengintegrasikan netbeans dengan database di mysql. Kita menuliskan
query mysql seperti biasa tetapi untuk inputan value untuk query SQL
dilakukan dengan bantuan swing component yang tersedia pada netbeans.
Pada progra diatas kita bisa menyimpan data yang sudah diinputkan lewat
textfield, mengubah value data yang sudah disimpan dalam database dan
juga menghapus data yang sudah tersimpan pada database. Untuk penyajian
data dari database di netbeans menggunakan bantuan jTable.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 13

VII.4 Tugas Praktikum 2 :


Membuat database “Penilaian” dan table “tb_nilai”, meng-koneksikan
GUI_Matkul dengan database.
Structure tb_nilai pada database oop_191026

Gambar 7.13 Membuat tabel (tb_nilai)


Tambahkan library mysql.connector.jar pada library dengan cara klik kanan
pada library, kemudian pilih Add JAR/Folder...

Gambar 7.14 Menambahkan Library Connector


Source code pada GUI (import Library) :
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

Source code di bawah Konstruktor GUI_Nilai :


public GUI_Nilai1() {
initComponents();
txtNP.setEnabled(false);
tampil();
tampil_mhs();
tampil_mk();
}

Source code method koneksi :


public Connection conn;

public void koneksi() throws SQLException {


Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 14

try {
conn=null;
Class.forName("com.mysql.jdbc.Driver");
conn=
DriverManager.getConnection("jdbc:mysql://localhost/oop_191
8026?user=root&password=");
}
catch (ClassNotFoundException ex){

Logger.getLogger(GUI_Nilai1.class.getName()).log(Level.SEVE
RE,null, ex);
}
catch (SQLException e){

Logger.getLogger(GUI_Nilai1.class.getName()).log(Level.SEVE
RE,null, e);
}
catch (Exception es){

Logger.getLogger(GUI_Nilai1.class.getName()).log(Level.SEVE
RE,null, es);
}
}

Source code di method tampil :


public void tampil(){
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("NIM");
tabelhead.addColumn("Kode MK");
tabelhead.addColumn("NT");
tabelhead.addColumn("NP");
tabelhead.addColumn("NA");
try {
koneksi();
String sql = "SELECT * FROM tb_nilai";
Statement stat = conn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){
tabelhead.addRow(new
Object[]{res.getString(1),res.getString(2),res.getString(3)
,res.getString(4), res.getString(5),});

}
tabel_data.setModel(tabelhead);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 15

Source code method refresh :


public void refresh(){
new GUI_Nilai1().setVisible(true);
this.setVisible(false);
}

Source code method tambah :


public void insert(){
String Nim = (String) txtNIM.getSelectedItem();
String KodeMK = (String)
txtKodeMK.getSelectedItem();
String NT = txtNT.getText();
String NP = txtNP.getText();
String NA = txtNA.getText();

try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_nilai(nim,kode_mk,
n_tugas,n_prak,n_akhir)"+"VALUES('"+Nim+"','"+KodeMK+"','"+
NT+"','"+NP+"','"+NA+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Nilai!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}

Source code method ubah :


public void update(){
String Nim = (String) txtNIM.getSelectedItem();
String KodeMK = (String)
txtKodeMK.getSelectedItem();
String NT = txtNT.getText();
String NP = txtNP.getText();
String NA = txtNA.getText();

String nim_lama = nim1;


String kode_lama = kd_mk1;

try {
Statement statement =
conn.createStatement();
statement.executeUpdate("UPDATE tb_nilai
SET nim='"+Nim+"'," +
"kode_mk='"+KodeMK+"'"+",n_tugas='"+NT+"',n_prak='"+NP+"',n
_akhir='"+NA+"' WHERE nim ='"+nim_lama+"' AND
kode_mk='"+kode_lama+"'");
statement.close();
conn.close();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 16

JOptionPane.showMessageDialog(null, "Update
Data Nilai!");
} catch (Exception e) {
System.out.println("Error : "+e);
}
refresh();
}

Source code method hapus :


public void delete(){
int ok =JOptionPane.showConfirmDialog(null,"Apakah Anda
yakin akan menghapus data
?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(ok==0){
try{
String sql="DELETE FROM tb_nilai WHERE
nim='"+txtNIM.getSelectedItem()+"' AND
kode_mk='"+txtKodeMK.getSelectedItem()+"'";
PreparedStatement stmt =
conn.prepareStatement(sql);
stmt.executeUpdate();
JOptionPane.showMessageDialog(null,"Data
Berhasil di hapus");
batal();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Data gagal
di hapus");
}
}
refresh();
}

Source code method cari :


public void cari(){
try{
try (Statement statement = conn.createStatement())
{
String sql="SELECT * FROM tb_nilai WHERE `nim`
LIKE '%"+txtCari.getText()+"%'";
ResultSet rs = statement.executeQuery(sql);
//menampilkan data dari sql query
if(rs.next()) // .next() = scanner method
{
txtNIM.setSelectedItem(rs.getString(1));
txtKodeMK.setSelectedItem(rs.getString(2));
txtNT.setText(rs.getString(3));
txtNP.setText(rs.getString(4));
txtNA.setText(rs.getString(5));
}
else{
JOptionPane.showMessageDialog(null, "Data yang
Anda cari tidak ada");
}
}
}catch (Exception ex){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 17

System.out.println("Error."+ex);
}
}

Desain form GUI_Nilai:

Gambar 7.15 Desain form GUI_ Nilai


Tabel 7.2 Properti Desain GUI_ Matkul (Database)

No Objek Properti Nilai


1 jLabel1 Text PROGRAM PENILAIAN
2 jLabel2 Text Nilai Tugas
3 jLabel3 Text Nilai Praktikum
4 jLabel4 Text Nilai Akhir
5 jTextField1 Name txtNT
Text
6 jTextField2 Name txtNP
Text
7 jTextField3 Name txtNA
Text
8 jTextField5 Name txtCari
Text
9 jButton1 Name btnNim
Text NIM
10 jButton2 Name btnKodeMK
Text Kode MK
11 jButton3 Name btnProses
Text PROSES
12 jButton4 Name btnSimpan
Text Simpan

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 18

9 jButton5 Name btnUbah


Text Ubah
10 jButton6 Name btnHapus
Text Hapus
11 jButton7 Name btnBatal
Text Batal
12 jButton8 Name btnCari
Text Cari
13 JCheckBox Text Praktikum
14 JTable Name tabel_data

Source code pada tombol tambah :


insert();

Source code pada tombol Ubah :


update();

Source code pada tombol Hapus :


delete();

Source code pada tombol Cari :


cari();

Source code pada tombol Batal :


batal();

Tampilan Hasil :

Gambar 7.16 Tampilan Hasil Method tampil() GUI_ Nilai

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 19

Gambar 7.18 Tampilan Hasil Method tambah() GUI_ Nilai

Gambar 7.19 Tampilan Hasil Method ubah() GUI_ Nilai

Gambar 7.20 Tampilan Hasil Method hapus() GUI_ Nilai

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 20

Gambar 7.21 Tampilan Hasil Method batal() GUI_ Nilai


Analisa :
Pada program merupakan database GUI_nilai untuk membuat kumpulan
data yang disimpan dan dapat diolah. Pada program tersebut terdapat
beberapa method seperti tampil, insert dan update, Pada method tampil
merupakan method yang menampilkan data awal pada saat program pertama
kali dijalankan dengan memanggil konstruktor pada GUI_Nillai. Pada button
insert berfungsi apabila ada data baru yang diinputkan melalui tabel dan
secara otomatis juga diiputkan kedalam database, sedangkan pada button
update berfungsi apabila ada salah satu data yang diubah pada tabel.

VII.5 Tugas Rumah 1 :


Menerapkan CRUD Pada GUI_Bengkel
Structure tb_bengkel pada database data_bengkel

Gambar 7.22 Membuat tabel (tb_bengkel)


Source code pada GUI (import Library) :
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 21

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

Source code di bawah Konstruktor GUI_Bengkel :


public GUI_Bengkel1() {
initComponents();
tampil();
}

Source code method koneksi :


public Connection conn;

public void koneksi() throws SQLException {


try {
conn=null;
Class.forName("com.mysql.jdbc.Driver");
conn=
DriverManager.getConnection("jdbc:mysql://localhost/data_be
ngkel?user=root&password=");
}
catch (ClassNotFoundException ex){

Logger.getLogger(GUI_Bengkel1.class.getName()).log(Level.SE
VERE,null, ex);
}
catch (SQLException e){

Logger.getLogger(GUI_Bengkel1.class.getName()).log(Level.SE
VERE,null, e);
}
catch (Exception es){

Logger.getLogger(GUI_Bengkel1.class.getName()).log(Level.SE
VERE,null, es);
}
}

Source code di method tampil :


public void tampil(){
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("Nama");
tabelhead.addColumn("Motor");
tabelhead.addColumn("Total Pembayaran");
tabelhead.addColumn("Uang Pembayaran");
tabelhead.addColumn("Kembalian");
try {
koneksi();
String sql = "SELECT * FROM tb_bengkel";
Statement stat = conn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 22

tabelhead.addRow(new
Object[]{res.getString(1),res.getString(2),res.getString(3)
,res.getString(4), res.getString(5),});

}
tabel_data.setModel(tabelhead);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


public void refresh(){
new GUI_Bengkel1().setVisible(true);
this.setVisible(false);
}

Source code method tambah :


public void insert(){
String Nama = txtNama.getText();
String Motor = txtMotor.getText();
String TP = txtTP.getText();
String UP = txtUP.getText();
String K = txtK.getText();

try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_bengkel(Nama, Motor, Total, Bayar,
Kembalian)"+"VALUES('"+Nama+"','"+Motor+"','"+TP+"','"+UP+"
','"+K+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Bengkel!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}

Source code method ubah :


public void update(){
String Nama = txtNama.getText();
String Motor = txtMotor.getText();
String TP = txtTP.getText();
String UP = txtUP.getText();
String K = txtK.getText();
try {
Statement statement = conn.createStatement();
statement.executeUpdate("UPDATE tb_bengkel SET
Nama='"+Nama+"'," + "Motor='"+Motor+"'" +

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 23

",Total='"+TP+"',Bayar='"+UP+"',Kembalian='"+K+"'WHERE Nama
= '"+Nama+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update
Data Bengkel!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
refresh();
}

Source code method hapus :


public void delete(){
int ok=JOptionPane.showConfirmDialog(null,"Apakah
Anda yakin akan menghapus data
?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(ok==0){
try{
String sql="DELETE FROM tb_bengkel WHERE
Nama='"+txtNama.getText()+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();
JOptionPane.showMessageDialog(null,"Data
Berhasil di hapus");
batal();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Data
gagal di hapus");
}
}
refresh();
}

Source code method cari :


public void cari(){
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_bengkel
WHERE `Nama` LIKE '%"+txtCari.getText()+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner method
{
txtNama.setText(rs.getString(1));
txtMotor.setText(rs.getString(2));
txtTP.setText(rs.getString(3));
txtUP.setText(rs.getString(4));
txtK.setText(rs.getString(5));
}
else{

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 24

JOptionPane.showMessageDialog(null,
"Data yang Anda cari tidak ada");
}
}
}catch (Exception ex){
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
}

Tambahkan library mysql.connector.jar pada library dengan cara klik kanan


pada library, kemudian pilih Add JAR/Folder...

Gambar 7.23 Menambahkan Library Connector


Desain form GUI_Bengkel:

Gambar 7.24 Desain form GUI_Bengkel


Tabel 7.3 Properti Desain GUI_Bengkel (Database)

No Objek Properti Nilai


1 jLabel1 Text DATA SERVICE
2 jLabel2 Text Nama
3 jLabel3 Text Motor
4 jLabel4 Text Sevice
5 jLabel5 Text Total Pembayaran
6 jLabel6 Text Uang Pembayaran
7 jLabel7 Text Kembalian
Name
8 jTextField1
Text txtNama
Name
9 jTextField2
Text txtMotor
10 jTextField3 Name

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 25

Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5
Text txtCari
Name
12 jTextField6
Text txtK
Name btnProses
13 jButton1
Text PROSES
Name btnSimpan
14 jButton2
Text Simpan
Name btnUbah
15 jButton3
Text Ubah
Name btnHapus
16 jButton4
Text Hapus
Name btnBatal
17 jButton5
Text Batal
Name btnCari
18 jButton6
Text Cari
[0] = MENU
model [1] = Paket A
19 JComboBox
[2] = Pakeb B
Name cmb_pilih
20 jTable Name Tabel data

Source code pada tombol tambah :


insert();

Source code pada tombol Ubah :


update();

Source code pada tombol Hapus :


delete();

Source code pada tombol Cari :


cari();

Source code pada tombol Batal :


batal();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 26

Tampilan Hasil :

Gambar 7.25 Tampilan Hasil Method tampil() GUI_Bengkel

Gambar 7.26 Tampilan Hasil Method tambah() GUI_Bengkel

Gambar 7.27 Tampilan Hasil Method ubah() GUI_Bengkel

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 27

Gambar 7.28 Tampilan Hasil Method hapus() GUI_Bengkel

Gambar 7.29 Tampilan Hasil Method batal() GUI_Bengkel


Analisa :
Pada method void insert program akan menyimpan inputan dari si
pengguna/user yang akan disimpan pada variabel Nama, Motor , TP, UP dan
K. Kemudian ada method Exception yang di dalam method try terdapat fungsi
koneksi() yang digunakan untuk menyambungkan ke database dan juga
terdapat query sql INSERT INTO untuk memasukkan data ke database. Pada
method void update program akan menyimpan inputan dari si pengguna/user
yang akan disimpan pada variabel variabel Nama, Motor , TP, UP dan K.
Kemudian ada method Exception yang di dalam method try terdapat method
Statement yang digunakan untuk menyambungkan ke database dan juga
terdapat query sql update untuk memperbarui data ke database.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 28

VII.6 Kesimpulan
1. SQL (Structured Query Language) merupakan bahasa yang telah
distandarsisasikan dan digunakan dalam pengelolaan semua database
yang ada.
2. DDL adalah perintah - perintah yang digunakan untuk membangun isi
dari database. DDL bertugas untuk membuat objek SQL dan menyimpan
definisinya dalam tabel.
3. DML digunakan untuk menampilkan, mengubah, menambah dan
menghapus baris dalam tabel. Perintah - perintah yang dihubungkan
digolongkan dalam DML antara lain: Select : Perintah ini digunakan
untuk menampilkan isi tabel.Baik semua isi tabel atau sebagian isi tabel.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VIII - 1

BAB VIII
KESIMPULAN
Dengan adanya kegiatan praktikum OOP. Penulis dapat menyimpulkan
sebagai berikut :
1. Didalam pemrograman berorientasi objek ada beberapa hal dasar yang harus
dipahami yaitu Class, Attribute, Method dan Object.
2. Enkapsulasi merupakan proses pemaketan objek beserta methodnya untuk
menyembunyikan rincian implementasi dari pemakai/objek lainnya.
3. Dengan mendeklarasikan data dan method dengan tingkat akses public, maka
data dan method dapat diakses semua kelas yang ada di dalam program.
4. Inheritance (pewarisan) merupakan salah satu konsep dasar dari OOP.
Inheritance ini mengadopsi dunia rill dimana suatu entitas/objek dapat
mempunyai entitas turunan/objek turunan. Jadi konsep inheritance adalah
dimana sebuah kelas dapat mempunyai kelas turunan (subclass).
5. Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam OOP
adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk” method
yang berbeda- beda meskipun namanya sama.
6. Variable pada interface akan memiliki aturan static dan final sedangkan
method akan memiliki aturan public dan abstract.
7. Basis data (database) adalah kumpulan data yang disimpan secara sistematis
di dalam komputer yang dapat diolah atau dimanipulasi menggunakan
perangkat lunak (program aplikasi) untuk menghasilkan informasi.
8. Interface secara struktur serupa dengan class. Isi dari interface adalah method
abstract, artinya method hanya dideklarasikan dan tanpa badan method.
9. SQL (Structured Query Language) merupakan bahasa yang telah
distandarsisasikan dan digunakan dalam pengelolaan semua database yang
ada.
10. DDL adalah perintah - perintah yang digunakan untuk membangun isi dari
database. DDL bertugas untuk membuat objek SQL dan menyimpan
definisinya dalam tabel.
VIII - 2

DAFTAR PUSTAKA
Laboratorium Pemrograman dan RPL. 2020. Modul Semester Genap Object
Oriented Programming. Laboratorium Pemrograman Insitut Teknologi Nasional
Malang.

Husin B, Sadam. 2011. Pengenalan Konsep Dasar OOP dan Java. Padang. Diakses
tanggal 2 Oktober 2020

Ana, Hadiana. 2009. Cara Praktis Pemrograman Java


OOP/Swing/Database.Megatama. Bandung. Diakses tanggal 8 Oktober 2018

Gatewan, Wawan, 2016, Mengenal NetBeans IDE. Diakses 12 Desember 2018.

Kurniawan, B., 2008, Desain Database dengan PHP MY ADMIN, Elex Media
Komputindo,Jakarta.

Herlambang, Soendoro. Haryanto, Tanuwijaya. Tipe – Tipe data pada java


NetBeans IDE. 2005. Graha Ilmu: Yogyakarta

Didik Cara menggunakan Interface https://kodingin.com/cara-


menggunakaninterface-di-php-oop/ Diaksess 3 Desember 2019
LABORATORIUM PEMROGRAMAN & RPL
INSTITUT TEKNOLOGI NASIONAL
Kampus II : Jl. Raya Karanglo Km. 2 Malang

LEMBAR ASISTENSI PRAKTIKUM OBJECT ORIENTED PROGRAMMING


SEMESTER GANJIL TAHUN AKADEMIK 2020/2021
Nama : Mochammad Rizky A J
NIM : 1918026
Kelompok :-
Asistensi
No. Tanggal Paraf
Konsep Program Hasil Akhir
Konsep Dasar OOP
Tipe Data, Konstruktor
17-11-2020
Instruktur Enkapsulasi, Inheritance
1 10-12-2020 OK OK
Abstrak,Interface
21-12-2020
Polimorfisme, Exception
GUI Database
Dosen

Batas Akhir: 22-12-2020

Asisten, Malang , … Desember 2020


Dosen, Pembimbing,

(Sujud Satwikayana) (Yoseph Agus Pranoto, ST, MT)


1718082 NIP.P 1031000432

Anda mungkin juga menyukai