Anda di halaman 1dari 166

LAPORAN PRAKTIKUM

OBJECT ORIENTED PROGRAMMING


SEMESTER GANJIL TAHUN AKADEMIK 2020/2021

Disusun oleh:
Nama : Daniel Putera Alamsyah
NIM : 1918081
Prodi : 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 : Daniel Putera Alamsyah
NIM : 1918081
PRODI : Teknik Informatika S-1

Mengetahui, Menyetujui,
Kepala Laboratorium Dosen Pembimbing
Rekayasa Perangkat Lunak

(Ahmad Faisol, ST, MT) (Agung Panji Sasmito, S.Pd, M.Pd)


NIP.P.1031000431 NIP.P 1031500499

PROGRAM STUDI TEKNIK INFORMATIKA S-1


FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT TEKNOLOGI NASIONAL MALANG
2020
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 Agung Panji Sasmito, S.Pd, M.Pd 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 dan RPL 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-5
II.3 Tugas Praktikum 1 :.................................................................................. II-5
II.4 Tugas Rumah 1 : ....................................................................................... II-8
II.5 Kesimpulan ............................................................................................. II-12
BAB III KONSTRUKTOR DAN ENKAPSULASI .......................................... III-1
III.1 Landasan Teori ....................................................................................... III-1
III.2 Langkah – Langkah Praktikum .............................................................. III-4
III.3 Tugas Praktikum 1 : ............................................................................... III-4
III.4 Tugas Praktikum 2 : ............................................................................... III-7
III.5 Tugas Rumah 1 : .................................................................................... III-8
III.6 Tugas Rumah 2 : .................................................................................. III-12
III.7 Kesimpulan .......................................................................................... III-17
BAB IV INHERITANCE, OVERIDDING DAN OVERLOADING............... IV-1
IV.1 Landasan Teori....................................................................................... IV-1
IV.2 Langkah – Langkah Praktikum .............................................................. IV-4
IV.3 Tugas Praktikum 1 : ............................................................................... IV-4
IV.4 Tugas Praktikum 2 : ............................................................................... IV-8
IV.5 Tugas Rumah 1 : .................................................................................. IV-11
IV.6 Tugas Rumah 2 : .................................................................................. IV-16
IV.7 Kesimpulan .......................................................................................... IV-20
iii

BAB V ABSTRACT, POLIMORFISME DAN EXCEPTION HANDLING ... V-1


V.1 Landasan Teori ......................................................................................... V-1
V.2 Langkah – Langkah Praktikum ................................................................ V-6
V.3 Tugas Praktikum 1 : ................................................................................. V-7
V.4 Tugas Praktikum 2 : ................................................................................. V-9
V.5 Tugas Praktikum 3 : ............................................................................... V-13
V.6 Tugas Rumah 1 : .................................................................................... V-14
V.6 Tugas Rumah 2 : .................................................................................... V-19
V.7 Tugas Rumah 3 : .................................................................................... V-24
V.8 Kesimpulan............................................................................................. V-29
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-5
VI.4 Tugas Praktikum 2 : ............................................................................... VI-9
VI.5 Tugas Rumah 1 : .................................................................................. VI-18
VI.6 Tugas Rumah 2 : .................................................................................. VI-25
VI.7 Kesimpulan .......................................................................................... VI-33
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-23
VII.6 Tugas Rumah 2 : ................................................................................VII-30
VII.5 Kesimpulan ........................................................................................VII-37
BAB VIII KESIMPULAN .............................................................................. VIII-1
DAFTAR PUSTAKA ..................................................................................... VIII-2
iv

DAFTAR GAMBAR

Gambar 2.1 Tampilan NetBeans ......................................................................... II-4


Gambar 2.1 Desain GUI_Mahasiswa.java .......................................................... II-6
Gambar 2.2 Hasil Tampilan GUI_Mahasiswa.java ............................................ II-8
Gambar 2.3 Desain GUI_Toko_Buku.java ....................................................... II-10
Gambar 2.4 Hasil Tampilan GUI_Toko_Buku.java ......................................... II-12
Gambar 3.1 Desain GUI_Matkul.java ............................................................... III-5
Gambar 3.2 Hasil Tampilan GUI_Matkul.java .................................................. III-6
Gambar 3.3 Desain GUI_Nilai.java ................................................................... III-8
Gambar 3.6 Desain GUI_Toko_Buku.java (Enkapsulasi) ............................... III-10
Gambar 3.7 Hasil Tampilan GUI_Toko_Buku.java (Enkapsulasi) ................. III-11
Gambar 3.4 Desain GUI_Toko_Buku.java (Konstruktor) ............................... III-14
Gambar 3.5 Hasil tampilan GUI_Toko_Buku.java (Konstruktor) .................. III-17
Gambar 4.1 Desain GUI_Nilai.java (Inheritance) ............................................. IV-5
Gambar 4.2 Tampilan Hasil GUI_Nilai.java (Inheritance) ............................... IV-7
Gambar 4.3 Desain GUI_Mahasiswa ................................................................. IV-8
Gambar 4.4 Desain GUI_Mahasiswa (jTable) ................................................... IV-8
Gambar 4.5 Tampilan Hasil GUI_Mahasiswa (jTable) ................................... IV-10
Gambar 4.6 Desain GUI_Toko_Buku.java (Inheritance) ................................ IV-13
Gambar 4.7 Hasil tampilan GUI_Toko_Buku.java (Inheritance) ................... IV-15
Gambar 4.8 Desain GUI_Toko_Buku.java (Overload Override) .................... IV-18
Gambar 4.9 Hasil Tampilan GUI_Toko_Buku.java (Overload) Override) ..... IV-20
Gambar 5.1 Desain form GUI_Matkul.java ........................................................ V-7
Gambar 5.2 Desain form GUI_Matkul.java (JTable) ......................................... V-7
Gambar 5.3 Tampilan Hasil GUI_Matkul (jTable)............................................. V-9
Gambar 5.4 Desain form GUI_Nilai.java (Polimorfisme) ................................ V-10
Gambar 5.5 Hasil Tampilan GUI_Nilai (Polymorfisme) .................................. V-12
v

Gambar 5.6 Desain form GUI_MenuUtama.java ............................................. V-13


Gambar 5.7 Desain form GUI_Toko_Buku (Abstract) ..................................... V-16
Gambar 5.7 Tampilan Hasil GUI_Toko_Buku (Abstract)................................ V-18
Gambar 5.8 Desain form GUI_Toko_Buku (Exception Handling) .................. V-21
Gambar 5.9 Tampilan Hasil GUI_Toko_Buku (Exception Handling) ............. V-23
Gambar 5.8 Desain form GUI_Toko_Buku (Exception Handling) .................. V-26
Gambar 5.9 Tampilan Hasil GUI_Toko_Buku (Exception Handling) ............. V-29
Gambar 6.1 Desain lama form GUI_Nilai.java ................................................. VI-5
Gambar 6.2 Desain form GUI_Nilai.java (JTable) ............................................ VI-5
Gambar 6.3 Tampilan Hasil GUI_Nilai (jTable) ............................................... VI-8
Gambar 6.4 Membuat database oop_1918081 ................................................... VI-9
Gambar 6.5 Membuat tabel (tb_mahasiswa) ..................................................... VI-9
Gambar 6.7 Menambahkan Library Connector ................................................. VI-9
Gambar 6.6 Desain form GUI_Mahasiswa ...................................................... VI-14
Gambar 6.8 Tampilan Hasil Method insert() GUI_Mahasiswa ....................... VI-16
Gambar 6.7 Tampilan Hasil Method tampil() GUI_Mahasiswa...................... VI-16
Gambar 6.9 Tampilan Hasil Method update() GUI_Mahasiswa ..................... VI-16
Gambar 6.10 Tampilan Hasil Method delete() GUI_Mahasiswa .................... VI-17
Gambar 6.11 Tampilan Hasil Method batal() GUI_Mahasiswa ...................... VI-17
Gambar 6.12 Desain form GUI_Toko_Buku (Interface) ................................. VI-21
Gambar 6.13 Tampilan Hasil GUI_Toko_Buku. (Interface) ........................... VI-23
Gambar 6.14 Membuat database toko_buku_db .............................................. VI-25
Gambar 6.15 Membuat tabel (tb_buku) ........................................................... VI-25
Gambar 6.16 Menambahkan Library Connector ............................................. VI-30
Gambar 6.17 Desain form GUI_Toko_Buku ................................................... VI-30
Gambar 6.18 Tampilan Hasil Method tampil() GUI_Toko_Buku................... VI-32
Gambar 7.1 Tabel Type data numerik...............................................................VII-3
Gambar 7.2 Tabel Type data string ...................................................................VII-3
Gambar 7.3 Tabel Type data date .....................................................................VII-4
Gambar 7.5 Membuat tabel (tb_matkul) ...........................................................VII-5
Gambar 7.6 Menambahkan Library Connector ................................................VII-5
Gambar 7.3 Desain form GUI_ Matkul ............................................................VII-9
vi

Gambar 7.7 Tampilan Hasil Method tampil() GUI_ Matkul ..........................VII-11


Gambar 7.8 Tampilan Hasil Method tambah() GUI_ Matkul.........................VII-11
Gambar 7.9 Tampilan Hasil Method ubah() GUI_ Matkul.............................VII-12
Gambar 7.10 Tampilan Hasil Method hapus() GUI_ Matkul .........................VII-12
Gambar 7.11 Tampilan Hasil Method batal() GUI_ Matkul...........................VII-13
Gambar 7.12 Membuat tabel (tb_matkul) .......................................................VII-14
Gambar 7.13 Menambahkan Library Connector ............................................VII-14
Gambar 7.14 Desain form GUI_ Nilai ............................................................VII-19
Gambar 7.15 Tampilan Hasil Method tampil() GUI_ Nilai ............................VII-21
Gambar 7.16 Tampilan Hasil Method tambah() GUI_ Nilai ..........................VII-22
Gambar 7.17 Tampilan Hasil Method ubah() GUI_ Nilai ..............................VII-22
Gambar 7.18 Tampilan Hasil Method hapus() GUI_ Nilai.............................VII-22
Gambar 7.19 Tampilan Hasil Method batal() GUI_ Nilai ..............................VII-23
Gambar 7.20 Membuat database toko_buku_db .............................................VII-23
Gambar 7.21 Membuat tabel (tb_buku) ..........................................................VII-24
Gambar 7.22 Menambahkan Library Connector ............................................VII-27
Gambar 7.23 Desain form GUI_Toko_Buku ..................................................VII-28
Gambar 7.24 Tampilan Hasil Method tampil() GUI_Toko_Buku..................VII-30
Gambar 7.25 Membuat tabel (tb_transaksi) ....................................................VII-31
Gambar 7.26 Menambahkan Library Connector ............................................VII-34
Gambar 7.27 Desain form GUI_Transaksi .....................................................VII-34
Gambar 7.28 Tampilan Hasil Method tampil() GUI_Transaksi .....................VII-36
vii

DAFTAR TABEL

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


Tabel 2.1 Properti Desain GUI_Toko_Buku.java ............................................. II-11
Tabel 3.1 Properti Desain GUI_Matkul ............................................................ III-5
Tabel 3.2 Properti Desain GUI_Toko_Buku.java ........................................... III-10
Tabel 3.3 Properti Desain GUI_Toko_Buku.java ........................................... III-15
Tabel 4.1 Properti Desain GUI_Nilai ............................................................... IV-5
Tabel 4.2 Properti Desain GUI_Mahasiswa (jTable)........................................ IV-8
Tabel 4.3 Properti Desain GUI_Toko_Bukujava ............................................ IV-13
Tabel 4.4 Properti Desain GUI_Toko_Buku.java ........................................... IV-18
Tabel 5.1 Properti Desain GUI_Matkul (JTable) ............................................... V-7
Tabel 5.2 Properti Desain GUI_Nilai (Polimorfisme) ...................................... V-10
Tabel 5.3 Properti Desain GUI_ MenuUtama .................................................. V-13
Tabel 5.4 Properti Desain GUI_Toko_Buku .................................................... V-16
Tabel 5.5 Properti Desain GUI_Toko_Buku .................................................... V-21
Tabel 5.6 Properti Desain GUI_Toko_Buku .................................................... V-27
Tabel 6.1 Properti Desain GUI_Nilai(JTable) .................................................. VI-5
Tabel 6.4 Properti Desain GUI_Toko_Buku ................................................... VI-21
Tabel 7.4 Properti Desain GUI_ Matkul ..........................................................VII-9
Tabel 7.5 Properti Desain GUI_ Nilai (Database) .........................................VII-19
Tabel 7.7 Properti Desain GUI_Transaksi ......................................................VII-35
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.
Pemrograman Berorientasi Objek (Object Oriented Programming atau
OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek.
Objek adalah struktur data yang terdiri dari bidang data dan metode bersama
dengan interaksi mereka untuk merancang aplikasi dan program komputer.
Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas
atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap
objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek
lainnya. Pada jaman sekarang, banyak bahasa pemrograman yang mendukung
OOP.
OOP adalah paradigma pemrograman yang cukup dominan saat ini,
karena mampu memberikan solusi kaidah pemrograman modern. Meskipun
demikian, bukan berarti bahwa pemrograman prosedural sudah tidak layak
lagi. OOP diciptakan karena dirasakan masih adanya keterbatasan pada bahasa
pemrograman tradisional. Konsep dari OOP sendiri adalah semua pemecahan
masalah dibagi ke dalam objek. Dalam OOP data dan fungsi-fungsi yang akan
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
I-2

mengoperasikannya digabungkan menjadi satu kesatuan yang dapat disebut


sebagai objek. Proses perancangan atau desain dalam suatu pemrograman
merupakan proses yang tidak terpisah dari proses yang mendahului, yaitu
analisis dan proses yang mengikutinya. Pembahasan mengenai orientasi objek
tidak akan terlepas dari konsep objek seperti inheritance atau penurunan,
encapsulation atau pembungkusan, dan polymorphism atau kebanyakrupaan.
Konsep-konsep ini merupakan fundamental dalam orientasi objek yang perlu
sekali dipahami serta digunakan dengan baik, dan menghindari penggunaannya
yang tidak tepat.
Model data berorientasi objek dikatakan dapat memberi fleksibilitas
yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik
piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa
OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan
sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

I.2 Rumusan Masalah


1. Apa yang di maksud OOP (Object Oriented Programing)
2. Apa saja konsep dasar dari pemrograman berorientasi objek (OOP)?
3. Bahasa apakah yang mendukung OOP?

I.3 Tujuan
1. Praktikan Dapat mengetahui pengertian OOP (Object Oriented
Programming) secara umum.
2. Praktikan Dapat mengetahui konsep dasar dari pemrograman berorientasi
objek (OOP).
3. Praktikan Dapat mengetahui bahasa yang mendukung OOP.

I.4 Manfaat
1. Praktikan mampu mengetahui OOP secara umum.
2. Praktikan mampu mengetahui konsep dasar dalam OOP.
3. Praktikan mampu mengetahui bahasa pemrograman 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, objek itu sendiri merupakan
gabungan dari beberapa attribute yang lebih kecil lagi. Contoh saja seperti
mobil, mobil merupakan suatu objek. Mobil terbentuk dari beberapa
attribute yang lebih kecil seperti roda, kursi, kemudi, mesin dll. Mobil
sebagai objek yang terbentuk dari attribute yang saling berhubungan dan
berinteraksi. Begitu juga dengan program, sebuah objek yang besar
dibentuk dari beberapa attribute dan method, attribute itu saling
berkomunikasi dan berinteraksi.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 2

B. Class & Object


a. Class merupakan rancangan dari sebuah objek yang mendefenisikan
atribut (ciri/variabel) dan method (perilaku) umum dari suatu objek
tertentu.
1. Drive Class : Class yang menggunakan main atau dapat di running.
2. Object Class : Class yang tidak ada main, biasanya berisi method dan
attribute yang nantinya akan di panggil di Driver Class.
Contoh :
KELAS KENDARAAN
Object : Mobil.
Attribute : Roda, kemudi, kursi, mesin, warna.
Method : Maju, mundur, putar balik, berhenti.

Class dideklarasikan sebagai berikut:


class NamaClass{
//deklarasi
atribut
//deklarasi
method
}

Keterangan :

• Class adalah kata kunci yang digunakan untuk mendeklarasikan


suatu kelas.
• NamaClass merupakan indentifier.
• Atribut dan Method bisa berjumlah 0 atau lebih.
b. Atribut adalah data/variabel yang akan dimiliki oleh objek dari kelas
tersebut. Atribut dapat memiliki hak akses private, public maupun
protected .
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. Method Void
(Procedure) dideklarasikan sebagai berikut:
Void cetakHalo() //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.
Method Non-Void (Fungsi) dideklarasikan sebagai berikut:
int jumlahRoda(int x) //tipe_method nama_method(parameter)
{ return x;//nilai kembalian }

Keterangan:
Terdapat script “return x;” yang berarti mengembalikan nilai
variable “x” sesuai dengan nilai yang tersimpan pada variable “x”.
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”. Object dideklarasikan sebagai
berikut:
NamaClass namaObjek = new NamaKonstruktor();

Contoh:
Penilaian nilaiMhs = new Penilaian();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 4

C. Compile dan Eksekusi Program menggunakan Netbeans

Gambar 2.1 Tampilan NetBeans


Netbeans merupakan text editor yang biasa digunakan untuk meng-
compile dan mengeksekusi bahasa pemograman java. Dengan Netbeans
IDE proses pengerjaan program akan menjadi lebih mudah dengan
penggunaan tombol CTRL+SPACE, bila kita tidak hafal dengan
penulisan source code yang benar dalam program java. Setelah
memasukkan code program java, selanjutnya kita perlu meng-compile
dan menjalankan program java dengan Hotkey F9 untuk compile dan
Hotkey F6 untuk Eksekusi.
a. Struktur Dalam Java

public class Belajar //nama kelas harus sama dengan nama file
{
//method utama dalam java public static
void main (String[]args)
{
//isi program utama
System.out.println("Praktikum Hari Pertama");
System.out.println("di Lab Pemrograman dan RPL "); }
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 5

Method main() didefenisikan sebagai public static void main, berikut


penjelasannya :
1. Public, berarti metode ini dapat dipanggil dari luar kelas.
2. Static, menunjukan metode ini bersifat sama untuk semua kelas.
3. Void, berarti metode ini tidak mengembalikan nilai.
4. Argument args[], adalah array objek string yang berisikan argument
baris perintah.

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)

+ String cetakNIM() Method


+ String cetakNama()
+ String cetakProdi()
+ String cetakAngkatan()

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 6

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;
}
String cetakNama(){
return nama;
}
String cetakProdi(){
return prodi;
}
String cetakAngkatan(){
return angktn;
}
}

Desain form (GUI_Mahasiswa.java):

Gambar 2.1 Desain GUI_Mahasiswa.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 7

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
Name txtAng
9 jTextField4
Text
Name btnKTM
10 jButton1
Text Cetak KTM
Name memoKTM
11 jTextArea
Text

Source code pada button 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");
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 8

Tampilan Hasil :

Gambar 2.2 Hasil Tampilan GUI_Mahasiswa.java

Analisa:
Pada source code diatas telah dideklarasikan object “mhs” dari class
Mahasiswa, method dataNim(String Nim) yang terdapat pada object mhs
mangambil data dari isi textField Nim. Sehingga pada saat button Cetak KTM
di klik, maka method cetakNim() pada object mhs akan mengembalikan nilai
variable nim yang nantinya ditampilkan pada memoKTM. Proses yang sama
juga terjadi pada method dataNama(String Nama), dataProdi(String Prodi) dan
dataAngkatan(String Angktn).

II.4 Tugas Rumah 1 :


Membuat GUI_Toko_Buku
Judul : Sistem Informasi Toko Buku
Diagram Class:
Toko
 String kd_buku, judul, pengarang,
penerbit, genre, harga, stock

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 9

+ void data_kd_buku(String kd_buku)


+ void data_judul(String judul)
+ void data_pengarang(String
pengarang)
+ void data_penerbit(String penerbit)
+ void data_genre(String genre)
+ void data_harga(String harga)
+ void data_stock(String stock)

+ String cetak_kd_buku()
+ String cetak_judul()
+ String cetak_pengarang()
+ String cetak_penerbit()
+ String cetak_genre()
+ String cetak_harga()
+ String cetak_stock()

Source code Object Class:


public class toko {
String kd_buku, judul, pengarang, penerbit, genre, harga,
stock;

void data_kd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
void data_judul(String judul){
this.judul = judul;
}
void data_pengarang(String pengarang){
this.pengarang = pengarang;
}
void data_penerbit(String penerbit){
this.penerbit = penerbit;
}
void data_genre(String genre){
this.genre = genre;
}
void data_harga(String harga){
this.harga = harga;
}
void data_stock(String stock){
this.stock = stock;
}

String cetak_kd_buku(){
return kd_buku;
}
String cetak_judul(){
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
II - 10

return judul;
}
String cetak_pengarang(){
return pengarang;
}
String cetak_penerbit(){
return penerbit;
}
String cetak_genre(){
return genre;
}
String cetak_harga(){
return harga;
}
String cetak_stock(){
return stock;
}
}

Desain form (GUI_Toko_Buku.java):

Gambar 2.3 Desain GUI_Toko_Buku.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 11

Tabel 2.1 Properti Desain GUI_Toko_Buku.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
6 jTextField1 Text
Name txtNim
7 jTextField2 Text
Name txtNama
8 jTextField3 Text
Name txtProdi
9 jTextField4 Text

Source code Button Cetak pada GUI:


private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
toko tk = new toko();
tk.data_kd_buku(kd_buku.getText());
tk.data_judul(judul.getText());
tk.data_pengarang(pengarang.getText());
tk.data_penerbit(penerbit.getText());
tk.data_genre(genre.getText());
tk.data_harga(harga.getText());
tk.data_stock(stock.getText());

txt_kd.setText(tk.cetak_kd_buku());
txt_judul.setText(tk.cetak_judul());
txt_pengarang.setText(tk.cetak_pengarang());
txt_penerbit.setText(tk.cetak_penerbit());
txt_genre.setText(tk.cetak_genre());
txt_harga.setText(tk.cetak_harga());
txt_stock.setText(tk.cetak_stock());
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
II - 12

Hasil Tampilan:

Gambar 2.4 Hasil Tampilan GUI_Toko_Buku.java

Analisa:
Gambar diatas merupakan bagian awal dari program untuk input data
Toko Buku. Users akan mengisikan data juga sudah klik tombol button proses
dan akan menampilkan output dari data yang diinputkan dengan memasukkan
script atau perintah yang diberikan di tombol button dengan cara menakan
dua kali atau double click kemudian masukan script seperti diatas.

II.5 Kesimpulan
1. OOP (Object Oriented Programming) adalah suatu metode pemrograman
yang berorientasi kepada objek.
2. Class merupakan rancangan dari sebuah objek yang mendefenisikan atribut
(ciri/variabel) dan method (perilaku) umum dari suatu objek tertentu.
3. Atribut adalah data/variabel yang akan dimiliki oleh objek dari kelas
tersebut. Atribut dapat memiliki hak akses private, public maupun
protected .

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 ;

public 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. Pengertian 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.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 3

ANALOGI SINGKAT:
Seperti halnya obat kapsul yang terdiri dari pembungkus dan isi,
pasien hanya mengetahui manfaat/fungsi dari obat kapsul tanpa
mengetahui apa saja kandungan terdapat dalam obat kapsul.
Contoh:
Int Luas(int sisi){ // pembungkus

// isi
int L;
L =
sisi*sisi;
return
L;
}

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 methode

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 methode

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 4

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 methode

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 methode

III.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

III.3 Tugas Praktikum 1 :


Implementasi Method Konstruktor pada projek Praktikum GUI_Matkul
Diagram Class:
Data_Matkul
 String kode_mk,nama_mk,dosen

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 5

public Data_Matkul(String kd,String


mk, String dsn)

Source code pada Class Data_Matkul :


public class Data_Matkul {
String kode_mk,nama_mk,dosen;

public Data_Matkul(String kd,String mk, String dsn){


this.kode_mk = kd;
this.nama_mk = mk;
this.dosen = dsn;
}
}

Desain form GUI_Matkul:

Gambar 3.1 Desain GUI_Matkul.java

Tabel 3.1 Properti Desain GUI_Matkul

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
6 jTextField1 Name txtNim

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 6

Text
Name txtNama
7 jTextField2
Text
Name txtProdi
8 jTextField3
Text
Name txtAng
9 jTextField4
Text
Name btnKTM
10 jButton1
Text CETAK DATA MATA KULIAH
Name memoKTM
11 jTextArea
Text

Source code pada button “Cetak Data Matakuliah”:


private void
btnCetakActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Data_Matkul dm = new Data_Matkul ();
memoCetak.append(dm.getkode_mk()+"\n");
memoCetak.append(dm.getnama_mk()+"\n");
memoCetak.append(dm.getdosen());
}

Tampilan Hasil:

Gambar 3.2 Hasil Tampilan GUI_Matkul.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 7

Analisa :
Program diatas membuat Objek secara Global dengan nama MK dari
class Data_Matkul. Pada method Konstruktornya kirimkan parameter “001”,
“oop”, “pak yoseph” kedalam Konstruktor class Data_Matkul untuk
melakukan inisialisasi attribute. Kemudian pada textField txtKodeMK,
txtMK, txtDosen diset dengan nilai dari attribute kode_mk, nama_mk dan
dosen.

III.4 Tugas Praktikum 2 :


Implementasi Enkapsulasi Pada Projek Praktikum “Class Penilaian”
Diagram Class:
Penilaian
 String NIM, kode_mk
 int nilaiTugas, nilaiPrak
+ private double nilaiAkhirPrak()
+ double tampilNA()

Source code pada Class Penilaian :


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

private double nilaiAkhirPrak(){


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

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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 8

Desain form GUI_Nilai:

Gambar 3.3 Desain GUI_Nilai.java

III.5 Tugas Rumah 1 :


Menerapkan Enkapsulasi serta membuat GUI_Toko_Buku
Judul : Sistem Informasi Toko Buku
Diagram Class:
toko_buku
 String kd_buku, judul, pengarang,
penerbit, genre, harga, stock
+ void data_kd_buku(String kd_buku)
+ void data_judul(String judul)
+ void data_pengarang ( String
pengarang )
+ void data_penerbit(String penerbit)
+ void data_genre(String genre)
+ void data_harga(String harga)
+ void data_stock(String stock)
+ String cetak_kd_buku()
+ String cetak_judul()
+ String cetak_pengarang()
+ String cetak_penerbit()
+ String cetak_genre()

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 9

+ String cetak_harga()
+ String cetak_stock()

Source code pada Class toko_buku.java :


public class toko_buku {
String kd_buku, judul, pengarang, penerbit, genre, harga,
stock;

public toko_buku(){
this.kd_buku = "BK001";
this.judul = "Belajar OOP";
this.pengarang = "Daniel Putera Alamsyah";
this.penerbit = "Erlangga";
this.genre = "Meneganggakan, seru";
this.harga = "Rp. 199.000,-";
this.stock = "15";
}

void data_kd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
void data_judul(String judul){
this.judul = judul;
}
void data_pengarang(String pengarang){
this.pengarang = pengarang;
}
void data_penerbit(String penerbit){
this.penerbit = penerbit;
}
void data_genre(String genre){
this.genre = genre;
}
void data_harga(String harga){
this.harga = harga;
}
void data_stock(String stock){
this.stock = stock;
}

String cetak_kd_buku(){
return this.kd_buku;
}
String cetak_judul(){
return this.judul;
}
String cetak_pengarang(){
return this.pengarang;
}
String cetak_penerbit(){
return this.penerbit;
}
String cetak_genre(){
return this.genre;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
III - 10

}
String cetak_harga(){
return this.harga;
}
String cetak_stock(){
return this.stock;
}

Desain form (GUI_Toko_Buku.java):

Gambar 3.6 Desain GUI_Toko_Buku.java (Enkapsulasi)

Tabel 3.2 Properti Desain GUI_Toko_Buku.java


No Objek Properti Nilai
1 jLabel1 Text TOKO BUKU
2 jLabel2 Text Kode Buku
3 jLabel3 Text Judul
4 jLabel4 Text Pengarang
5 jLabel5 Text Penerbit
6 jLabel6 Text Genre
7 jLabel7 Text Harga
8 jLabel8 Text Stock
9 jTextField1 Name kd_buku
Text
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
III - 11

10 jTextField2 Name judul


Text
11 jTextField3 Name pengarang
Text
12 jTextField4 Name penerbit
Text
13 jTextField5 Name genre
Text
14 jTextField6 Name harga
Text
15 jTextField7 Name stock
Text
16 jButton1 Name jButton1
Text Proses
17 jTextArea Name memo_toko_buku
Text

Tampilan Hasil :

Gambar 3.7 Hasil Tampilan GUI_Toko_Buku.java (Enkapsulasi)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 12

Analisa :
Pada program diatas terdapat method konstruktor pada class toko_buku
yang masing-masing sudah diberikan nilai atau value atau inisialisasi.
Kemudian saat program atau aplikasi dijalankan dengan menekan run atau
shortcut shft+f6 program akan jalan dan dengan otmatis data usah terisi dari
saat kita melakukan inisialisasi pada method konsturktor. Dan setalah
mengkilk tombol button nya atau tombol proses program akan menampilkan
data yang sudah diinputkan saat inisialisasi dari awal.
III.6 Tugas Rumah 2 :
Implementasi Method Konstruktor pada GUI_Toko_Buku
Judul : Sistem Informasi Toko Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, jumlah_beli,
bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setbayar(String bayar)
+ public String getkd_buku()
+ public String getjudul()
+ public String getpengarang()
+ public String getpenerbit()

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 13

+ public String getgenre()


+ public String getharga()
+ public String getbayar()
+ public String getjumlah_beli()
+ public String getharga_total()

Source code pada object Class toko_buku :


public class toko_buku {
public long harga_total, kembalian;
private String kd_buku, judul, pengarang, penerbit,
genre, harga, jumlah_beli, bayar;
public toko_buku(){
this.kd_buku = "BK001";
this.judul = "Belajar OOP";
this.pengarang = "Daniel Putera Alamsyah";
this.penerbit = "Erlangga";
this.genre = "Meneganggakan";
this.harga = "199000";
this.jumlah_beli = "10";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}
public void setpenerbit(String penerbit){
this.penerbit = penerbit;
}
public void setgenre(String genre){
this.genre = genre;
}
public void setharga(String harga){
this.harga = harga;
}
public void setbayar(String bayar){
this.bayar = bayar;
}

public String getkd_buku(){


return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 14

}
public String getpenerbit(){
return this.penerbit;
}
public String getgenre(){
return this.genre;
}
public String getharga(){
return this.harga;
}
public String getbayar(){
return this.bayar;
}
public String getjumlah_beli(){
return this.jumlah_beli;
}
i{
harga_total =
Long.parseLong(getharga())*Long.parseLong(getjumlah_beli())
;
return Long.toString(harga_total);
}
public String getkembalian (){
kembalian=(Long.parseLong(getbayar())-
Long.parseLong(getharga_total()));
return Long.toString(kembalian);
}

Desain form (GUI_Toko_Buku.java) :

Gambar 3.4 Desain GUI_Toko_Buku.java (Konstruktor)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 15

Tabel 3.3 Properti Desain GUI_Toko_Buku.java

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT
6 jLabel6 Text GENRE
7 jLabel7 Text HARGA
8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 Jlabel10 Text BAYAR
11 Jlabel1 Text KEMBALIAN
12 jTextField1 Name txt_kd_buku
Text
13 jTextField2 Name txt_judul
Text
14 jTextField3 Name txt_pengarang
Text
15 jTextField4 Name txt_penerbit
Text
16 jTextField5 Name txt_genre
Text
17 jTextField6 Name txt_harga
Text
18 jTextField7 Name txt_jumlah_beli
Text
19 jTextField8 Name txt_total
Text
20 jTextField9 Name txt_bayar

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 16

Text
21 jTextField10 Name txt_kembalian
Text
22 jButton1 Name jButton1
Text TOTAL HARGA
23 jButton1 Name JButton2
Text KEMBALIAN

Source code pada button ……….:


public class GUI_Toko_Buku extends javax.swing.JFrame {
toko_buku tkbk = new toko_buku();
/**
* Creates new form GUI_Toko_Buku
*/
public GUI_Toko_Buku() {
initComponents();
txt_kode_buku.setText(tkbk.getkd_buku());
txt_judul.setText(tkbk.getjudul());
txt_pengarang.setText(tkbk.getpengarang());
txt_penerbit.setText(tkbk.getpenerbit());
txt_genre.setText(tkbk.getgenre());
txt_harga.setText(tkbk.getharga());
txt_jumlah_beli.setText(tkbk.getjumlah_beli());
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txt_total.setText(tkbk.getharga_total());
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
toko_buku obj = new toko_buku();
obj.setbayar(txt_bayar.getText());
txt_kembalian.setText(obj.getkembalian());
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
III - 17

Tampilan Hasil :

Gambar 3.5 Hasil tampilan GUI_Toko_Buku.java (Konstruktor)

Analisa :
Pada program diatas terdapat method konstruktor pada class
toko_buku yang masing-masing sudah diberikan nilai atau value atau
inisialisasi. Kemudian saat program atau aplikasi dijalankan dengan menekan
run atau shortcut shft+f6 program akan jalan dan dengan otmatis data usah
terisi dari saat kita melakukan inisialisasi pada method konsturktor. Dan
setalah mengkilk tombol button nya atau tombol proses program akan
menampilkan data yang sudah diinputkan saat inisialisasi dari awal.

III.7 Kesimpulan
1. Konsktruktor adalah method yang pertama kali dijalankan pada saat
sebuah objek pertama kali diciptakan.
2. Syarat penulisan method konstruktor ini harus sama dengan nama class
yang di naungi.
3. Method Konstruktor digunakan untuk inisialisasi atau mempersiapkan
data untuk objek.
4. 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.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
III - 18

5. 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
6. Dalam enkapsulasi terdapat 4 access modifier, public maka data dan
method dapat diakses semua kelas yang ada di dalam program, private
maka data dan method tersebut hanya dapat diakses oleh kelas tersebut,
protected maka data dan method tersebut hanya dapat diakses oleh kelas
yang memilikinya dan kelas-kelas yang masih memiliki hubungan
turunan, terakhir default sebenarnya hanya ditujukan untuk class yang ada
dalam satu paket.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 1

BAB IV
INHERITANCE, OVERIDDING DAN OVERLOADING
Jumlah Pertemuan : 2 x 60 menit
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 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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 2

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.
c. Reusability : menggunakan kembali atribut dan method dari super
class di sub class.
B. 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.
Contoh:
public class contohOverloading {
public void
jumlah (int a, int b){
System.out.println("Jumlah 2 angka ="+ (a +
b));
}

//overloading perbedaan jumlah


parameter public void jumlah (int a,
int b, int c){
System.out.println("Jumlah 3 angka =" +
(a + b + c)); }

//overloading perbedaan tipe data


parameter public void jumlah (double a,
int b){
System.out.println("Jumlah 2 angka
(double+int)= "+ (a + b)); }

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 3

//overloading perbedaan urutan tipe data


parameter public void jumlah (int b, double
a){
System.out.println("Jumlah 2 angka
(int+double)= "+ (a + b));
}
}

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)
Contoh:
Source code pada Super Class:
public class Method_Overload {
//method untuk overriding int volume(){
int p=2,l=3,t=4; return p*l*t;
}
}

Source code pada subclass dengan override method pada super


class:
public class Method_Override extends
Method_Overload{
@Override
int volume(){
int s=7;
return s*s*s;
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 4

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.

IV.3 Tugas Praktikum 1 :


Menerapkan Inheritance pada Project Praktikum (Class Penilaian_NonPrak)
Diagram Class:
Penilaian_NonPrak
 int nilaiTugas,nilaiPrak
 String kode_mk,NIM
+ double tampilNA()+ void

Source code pada Penilaian :


public class Penilaian_NonPrak {
int nilaiTugas,nilaiPrak;
String kode_mk,NIM;
double tampilNA(){
return (nilaiTugas);
}
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 5

Desain form (GUI_Nilai.java):

Gambar 4.1 Desain GUI_Nilai.java (Inheritance)


Tabel 4.1 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
Name btnNA
10 jButton1
Text Hasil Nilai Akhir
Name memoNilai
11 jTextArea
Text

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 6

Text Praktikum
12 JCheckBox
Name cek_prak

Source code pada GUI_Nilai:


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{
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());
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 7

Tampilan Hasil:

Gambar 4.2 Tampilan Hasil GUI_Nilai.java (Inheritance)

Analisa :
Pada program penilaian diatas dapat kita gunakan untuk menghitung
hasil nilai akhir dan terdapat dua pilihan tanpa nilai pratikum dan dengan
menggunakan nilai pratikum, jika program menggunakan nilai pratikum maka
centang checkbox pratikum dan sebaliknya jiga tidak ingin menghitung dengan
nilai pratikum bisa menghilangkan centang pada checkbox

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 8

IV.4 Tugas Praktikum 2 :


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

Gambar 4.3 Desain GUI_Mahasiswa


Desain baru form (GUI_Mahasiswa.java) :

Gambar 4.4 Desain GUI_Mahasiswa (jTable)


Tabel 4.2 Properti Desain GUI_Mahasiswa (jTable)

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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 9

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

Source code pada method batal():


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

Source code pada button Batal:


batal();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 10

Tampilan Hasil:

Gambar 4.5 Tampilan Hasil GUI_Mahasiswa (jTable)


Analisa :
Pada class Mahasiswa terdapat method void dataNim(String Nim),
dataNama(String Nama), dataProdi(String Prodi), dataAngkatan(String
Angktn) yang berfungsi memberikan nilai pada variable sesuai dengan nilai
dari parameter fungsi. Terdapat syntax “this.nim = Nim”, maksud dari this
adalah mengacu pada class itu sendiri (class Mahasiswa). Sedangkan pada
method cetakNim(), cetakNama(), cetakProdi() dan cetakAngkatan()
berfungsi mengembalikan nilai dari variable.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 11

IV.5 Tugas Rumah 1 :


Implementasi Inhetitance pada GUI_Toko_Buku
Judul : Sistem Informasi Toko Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, diskon,
jumlah_beli, bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setdiskon(String diskon)
+ public void setbayar(String bayar)

Source code Object Class(toko_buku.java):


public class toko_buku {
public long harga_total, kembalian;
public String kd_buku, judul, pengarang, penerbit, genre,
harga, diskon, jumlah_beli, bayar;
public toko_buku(){
this.kd_buku = "BK001";
this.judul = "Belajar OOP";
this.pengarang = "Daniel Putera Alamsyah";
this.penerbit = "Erlangga";
this.genre = "Meneganggakan";
this.harga = "199000";
this.jumlah_beli = "10";
this.diskon = "10";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 12

}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}
public void setpenerbit(String penerbit){
this.penerbit = penerbit;
}
public void setgenre(String genre){
this.genre = genre;
}
public void setharga(String harga){
this.harga = harga;
}
public void setdiskon(String diskon){
this.diskon = diskon;
}
public void setbayar(String bayar){
this.bayar = bayar;
}
}

Source code Object Class(transaksi.java):


public class transaksi extends toko_buku{
public String getkd_buku(){
return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;
}
public String getpenerbit(){
return this.penerbit;
}
public String getgenre(){
return this.genre;
}
public String getharga(){
return this.harga;
}
public String getbayar(){
return this.bayar;
}
public String getjumlah_beli(){
return this.jumlah_beli;
}
public String getdiskon(){
return this.diskon;
}
public String getharga_total(){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 13

harga_total =
Long.parseLong(getharga())*Long.parseLong(getjumlah_beli())
;
return Long.toString(harga_total);
}
public String getkembalian (){
kembalian=(Long.parseLong(getbayar())-
Long.parseLong(getharga_total()));
return Long.toString(kembalian);
}
}

Desain form (GUI_Toko_Buku.java) :

Gambar 4.6 Desain GUI_Toko_Buku.java (Inheritance)


Tabel 4.3 Properti Desain GUI_Toko_Bukujava

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT
6 jLabel6 Text GENRE
7 jLabel7 Text HARGA
8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 Jlabel10 Text BAYAR
11 Jlabel1 Text KEMBALIAN

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 14

12 jTextField1 Name txt_kd_buku


Text
13 jTextField2 Name txt_judul
Text
14 jTextField3 Name txt_pengarang
Text
15 jTextField4 Name txt_penerbit
Text
16 jTextField5 Name txt_genre
Text
17 jTextField6 Name txt_harga
Text
18 jTextField7 Name txt_jumlah_beli
Text
19 jTextField8 Name txt_total
Text
20 jTextField9 Name txt_bayar
Text
21 jTextField10 Name txt_kembalian
Text
22 jButton1 Name jButton1
Text TOTAL HARGA
23 jButton1 Name JButton2
Text KEMBALIAN

Source code Button:


public class GUI_Toko_Buku extends javax.swing.JFrame {
toko_buku tkbk = new toko_buku();
/**
* Creates new form GUI_Toko_Buku
*/
public GUI_Toko_Buku() {
initComponents();
txt_kode_buku.setText(tkbk.getkd_buku());
txt_judul.setText(tkbk.getjudul());
txt_pengarang.setText(tkbk.getpengarang());
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 15

txt_penerbit.setText(tkbk.getpenerbit());
txt_genre.setText(tkbk.getgenre());
txt_harga.setText(tkbk.getharga());
txt_jumlah_beli.setText(tkbk.getjumlah_beli());
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txt_total.setText(tkbk.getharga_total());
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
toko_buku obj = new toko_buku();
obj.setbayar(txt_bayar.getText());
txt_kembalian.setText(obj.getkembalian());}

Tampilan Hasil :

Gambar 4.7 Hasil tampilan GUI_Toko_Buku.java (Inheritance)

Analisa :
Jika program dijalankan akan muncul program toko buku yang
didalamnya mengisikan data setelah data sudah terisi kemudian klik button
total harga kemudian untuk menampikan total yang harus dibayarkan dengan
perhitungan harga buku dikali dengan jumlah beli maka akan ketemu hasilnya
yaitu total harga kemudian mengisi bayar setelah mengisi data klik button
kembalian maka akan muncul kembalian dari perhitungan bayar dikurangan
dengan total maka akan mengkasilkan kembalian yang script tersebut
diletakkan didalam toko_buku.java

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 16

IV.6 Tugas Rumah 2 :


Menerapkan Overloading dan Overriding serta membuat GUI_Toko_Buku
Judul : Sistem Informasi Toko Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, diskon,
jumlah_beli, bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setdiskon(String diskon)
+ public void setbayar(String bayar)

Source code Object Class(toko_buku.java):


public class toko_buku {
public long harga_total, kembalian;
public String kd_buku, judul, pengarang, penerbit, harga,
jumlah_beli, bayar;
public toko_buku(){
this.kd_buku = "BK001";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 17

public void setpenerbit(String penerbit){


this.penerbit = penerbit;
}
public void setharga(String harga){
this.harga = harga;
}
public void setbayar(String bayar){
this.bayar = bayar;
}
public void setjumlahbeli(String jumlah_beli){
this.jumlah_beli = jumlah_beli;
}

public String getbayar(){


return this.bayar;
}
public String getharga(){
return this.harga;
}
public String getkd_buku(){
return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;
}
public String getpenerbit(){
return this.penerbit;
}
public String getjumlah_beli(){
return this.jumlah_beli;
}
}

Source code Object Class(transaksi.java):


public class transaksi extends toko_buku{
@Override
public String getbayar(){
return this.bayar;
}
@Override
public String getjudul(){
judul = "Belajar OOP";
return this.judul;
}
@Override
public String getpengarang(){
pengarang = "Daniel Putera Alamsyah";
return this.pengarang;
}
@Override
public String getpenerbit(){
penerbit = "Erlangga";
return this.penerbit;
}
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 18

@Override
public String getharga(){
harga = "199999";
return this.harga;
}
@Override
public String getjumlah_beli(){
jumlah_beli = "10";
return this.jumlah_beli;
}
public String getharga_total(){
harga_total =
Long.parseLong(getharga())*Long.parseLong(getjumlah_beli())
;
return Long.toString(harga_total);
}
public String getkembalian (){
kembalian=(Long.parseLong(getbayar())-
Long.parseLong(getharga_total()));
return Long.toString(kembalian);
}
}

Desain form (GUI_Toko_Buku.java):

Gambar 4.8 Desain GUI_Toko_Buku.java (Overload Override)


Tabel 4.4 Properti Desain GUI_Toko_Buku.java

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 19

5 jLabel5 Text PENERBIT


7 jLabel7 Text HARGA
8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 jTextField1 Name txt_kd_buku
Text
11 jTextField2 Name txt_judul
Text
12 jTextField3 Name txt_pengarang
Text
13 jTextField4 Name txt_penerbit
Text
14 jTextField6 Name txt_harga
Text
15 jTextField7 Name txt_jumlah_beli
Text
16 jTextField8 Name txt_total
Text
17 JTextField9 Text txt_cari
Name
18 jTable1 Name jTable1
19 jButton1 Name jButton1
Text TOTAL HARGA
20 jButton2 Name jButton1
Text CARI
21 jButton3 Name jButton1
Text INSERT
22 jButton4 Name jButton1
Text UPDATE
23 jButton5 Name jButton1
Text DELETE
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 20

24 jButton6 Name jButton1


Text RESET

Tampilan Hasil :

Gambar 4.9 Hasil Tampilan GUI_Toko_Buku.java (Overload)

Analisa : Override)

Jika program dijalankan akan muncul program toko buku yang


didalamnya mengisikan data setelah data sudah terisi kemudian klik button
total harga kemudian untuk menampikan total harga, kemudian terdapat
tombol RESET yang bertujuan untuk mereset TextField.

IV.7 Kesimpulan
1. Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana
sebuah class dapat ‘menurunkan’ properti dan method yang dimilikinya
kepada class lain.
2. 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.
3. Konsep inheritance digunakan untuk memanfaatkan fitur ‘code reuse’ untuk
menghindari duplikasi kode program.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 21

4. Method Overloading adalah sebuah kemampuan yang membolehkan


sebuah class mempunyai 2 atau lebih method dengan nama yang sama,
namun parameter yang berbeda.
5. Overriding method adalah kemampuan dari subclass untuk memodifikasi
method dari superclass-nya, dengan cara mendefinisikan kembali method
superclass-nya.
6. Parameter yang terdapat pada method Overriding di subclass harus sama
dengan parameter yang terdapat pada parent class.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
V-1

BAB V
ABSTRACT, POLIMORFISME DAN EXCEPTION
HANDLING
Jumlah Pertemuan : 2 x 60 menit

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 Java:
Akses_modifier abstract class namaClassAbstrak
{
.........// isi
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 2

Contoh penerapan:

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:
abstract tipe_data namaMethodAbstract(parameter);
//non-void abstract void
namaMethodAbstract(parameter); // void
Contoh penerapan:

Abstract class digunakan di dalam inheritance (pewarisan class) untuk


‘memaksakan’implementasi method yang sama bagi seluruh class yang
diturunkan dariabstract 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.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 3

e. Abstract method tidak boleh mempunyai body method dan demikian


juga sebaliknya bahwa method yang tidak ditulis body methodnya maka
harus dideklarasikan sebagai abstract method.
B. Pengertian dasar Polimorfisme dan Exception.
Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam OOP
adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk” method
yang berbedabeda 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
Public Super_Class(){ Void nama_method(){
isi
}
}

Sub Class 1
Public Sub_Class1 extend Super_Class(){
@override
Void nama_method(){
Isi2
}}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 4

Sub Class 2
Public Sub_Class2 extend Super_Class(){
@override
Void nama_method(){
Isi3
}
}

Main Class
public class main {
public static void main(String[] args) {
Super_Class induk; // instansiasi super class
induk = new Sub_Class1();
// memanggil method dari class Sub_Class1
induk.nama_method();
induk = new Sub_Class2();
// memanggil method dari class Sub_Class2
induk.nama_method();
}
}

Keterangan:
1 Instansiasi : pembuatan objek dari suatu class (objek “induk” dari Super
Class).
2 induk merupakan objek polimorfisme dari class Super_Class, kemudian
diisi dengan objek dari Sub_Class1
3 Method nama_method() adalah overriden method dari kelas
Super_Class, yang di override sub class.
4 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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 5

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. Untuk itulah
diperlukan mekanisme untuk memastikan bahwa program tetap dapat
berjalan meskipun terdapat kesalahan yang terjadi. Secara umum, Exception
Handling dapat dilakukan menggunakan keyword try-catch
Pada dasarnya ada 3 jenis exception berdasarkan kategorinya:
1. Checked Exception, adalah exception yang terjadi saat compile time.
Compile time error terjadi apabila exceptions ini tidak ditangani
menggunakan block trycatch atau menggunakan keyword throws.
Contoh: FileNotFoundException.
2. 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.
3. 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
1. 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:

try {
//Protected code
} catch (ExceptionType nama_variabel) {
//Catch Block
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 6

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

try {
//Protected code
} catch (ExceptionType nama_variabel) { //Catch
Block
} catch (ExceptionType nama_variabel) {
//Catch Block
}
3. 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:

try {
//Protected code
} catch (ExceptionType nama_variabel){ //Catch
Block
} finally {
//finally Block
}

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
IV - 7

V.3 Tugas Praktikum 1 :


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

Gambar 5.1 Desain form GUI_Matkul.java


Desain baru form (GUI_Matkul.java) :

Gambar 5.2 Desain form GUI_Matkul.java (JTable)

Tabel 5.1 Properti Desain GUI_Matkul (JTable)

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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 8

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 batal():


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

Source code pada button Batal:


batal();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 9

Tampilan Hasil:

Gambar 5.3 Tampilan Hasil GUI_Matkul (jTable)


Analisa :
Program diatas membuat Objek secara Global dengan nama MK dari
class Data_Matkul. Pada method Konstruktornya kirimkan parameter “001”,
“oop”, “pak yoseph” kedalam Konstruktor class Data_Matkul untuk
melakukan inisialisasi attribute. Kemudian pada textField txtKodeMK, txtMK,
txtDosen diset dengan nilai dari attribute kode_mk, nama_mk dan dosen.

V.4 Tugas Praktikum 2 :


Menerapkan Polimorfisme pada GUI_Nilai
Diagram Class:
penilaian
 String nim,kode mk;
 Int nilai tugas,nilai prak;
+ void datanim(String nim)
+ void datakode mk(String kode mk)
+ void datanilai tugas,prak(int nilai
tugas,prak)
+ String cetaknim()
+ String cetakkode mk()
+ string cetaknilai tugas,prak()

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 10

Source code pada Super Class Penilaian.java :


public abstract class Penilaian {
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 tampilNA(){
return (nilaiTugas);
}
}

Desain form (GUI_Nilai.java) :

Gambar 5.4 Desain form GUI_Nilai.java (Polimorfisme)


Tabel 5.2 Properti Desain GUI_Nilai (Polimorfisme)

No Objek Properti Nilai


1 jLabel1 Text PROGRAM PENILAIAN
2 jLabel2 Text NIM
3 jLabel3 Text Kode MK
4 jLabel4 Text Nilai Tugas

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 11

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
Name btnNA
10 jButton1
Text Hasil Nilai Akhir
Name memoNilai
11 jTextArea
Text
Text Praktikum
12 JCheckBox
Name cek_prak

Source code pada Button Hasil Nilai Akhir.java :


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{
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");
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 12

memoNilai.append("Nilai Akhir : "+nilai.tampilNA());


}

Tampilan Hasil:

Gambar 5.5 Hasil Tampilan GUI_Nilai (Polymorfisme)

Analisa :
Pada program penilaian diatas dapat kita gunakan untuk menghitung
hasil nilai akhir dan terdapat dua pilihan tanpa nilai pratikum dan dengan
menggunakan nilai pratikum, jika program menggunakan nilai pratikum maka
centang checkbox pratikum dan sebaliknya jiga tidak ingin menghitung dengan
nilai pratikum bisa menghilangkan centang pada checkbox

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 13

V.5 Tugas Praktikum 3 :


Membuat GUI_MenuUtama
Desain form (GUI_MenuUtama.java) :

Gambar 5.6 Desain form GUI_MenuUtama.java


Tabel 5.3 Properti Desain GUI_ MenuUtama

No Objek Properti Nilai


DATA MATA
1 jLabel1 Text
KULIAH
[1] = Home
jMenu
[2] = Form
2 jMenuBar [1] = GUI Mahasiswa
jMenuItem [2] = GUI Mata Kuliah
[3] = GUI Nilai

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 14

V.6 Tugas Rumah 1 :


Menerapkan Class Abstract pada GUI_Toko_Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, diskon,
jumlah_beli, bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setdiskon(String diskon)
+ public void setbayar(String bayar)

Source code pada Super Class toko_buku:


public class toko_buku {
public long harga_total, kembalian;
public String kd_buku, judul, pengarang, penerbit,
harga, jumlah_beli, bayar;
public toko_buku(){
this.kd_buku = "BK001";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}
public void setpenerbit(String penerbit){
this.penerbit = penerbit;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 15

}
public void setharga(String harga){
this.harga = harga;
}
public void setbayar(String bayar){
this.bayar = bayar;
}
public void setjumlahbeli(String jumlah_beli){
this.jumlah_beli = jumlah_beli;
}

public String getbayar(){


return this.bayar;
}
public String getharga(){
return this.harga;
}
public String getkd_buku(){
return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;
}
public String getpenerbit(){
return this.penerbit;
}
public String getjumlah_beli(){
return this.jumlah_beli;
}
}

Source code Object Class(transaksi.java):


public abstract class transaksi extends toko_buku{

/**
*
* @return
*/
@Override
public abstract String getbayar();
@Override
public abstract String getjudul();
@Override
public abstract String getpengarang();
@Override
public abstract String getpenerbit();
@Override
public abstract String getharga ();
@Override
public abstract String getjumlah_beli ();

/**
*

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 16

* @return
*/
public abstract String getharga_total();

/**
*
* @return
*/
public abstract String getkembalian ();
}

Desain form GUI_Toko_buku:

Gambar 5.7 Desain form GUI_Toko_Buku (Abstract)


Tabel 5.4 Properti Desain GUI_Toko_Buku

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT
7 jLabel7 Text HARGA
8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 jTextField1 Name txt_kd_buku
Text
11 jTextField2 Name txt_judul
Text

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 17

12 jTextField3 Name txt_pengarang


Text
13 jTextField4 Name txt_penerbit
Text
14 jTextField6 Name txt_harga
Text
15 jTextField7 Name txt_jumlah_beli
Text
16 jTextField8 Name txt_total
Text
17 JTextField9 Text txt_cari
Name
18 jTable1 Name jTable1
19 jButton1 Name jButton1
Text TOTAL HARGA
20 jButton2 Name jButton1
Text CARI
21 jButton3 Name jButton1
Text INSERT
22 jButton4 Name jButton1
Text UPDATE
23 jButton5 Name jButton1
Text DELETE
24 jButton6 Name jButton1
Text RESET

Source code GUI_Toko_Buku:


transaksi2 tkbk = new transaksi2();
public GUI_Toko_Buku() {
initComponents();
txt_kode_buku.setText(tkbk.getkd_buku());
txt_judul.setText(tkbk.getjudul());
txt_pengarang.setText(tkbk.getpengarang());
txt_penerbit.setText(tkbk.getpenerbit());
txt_harga.setText(tkbk.getharga());
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 18

txt_jumlah_beli.setText(tkbk.getjumlah_beli());
}
public void reset(){
txt_kode_buku.setText("");
txt_judul.setText("");
txt_pengarang.setText("");
txt_penerbit.setText("");
txt_harga.setText("");
txt_total.setText("");
txt_jumlah_beli.setText("");
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txt_total.setText(tkbk.getharga_total());
}

Tampilan Hasil:

Gambar 5.7 Tampilan Hasil GUI_Toko_Buku (Abstract)

Analisa:
Jika program dijalankan akan muncul program toko buku yang
didalamnya mengisikan data setelah data sudah terisi kemudian klik button
total harga kemudian untuk menampikan total harga, kemudian terdapat
tombol RESET yang bertujuan untuk mereset TextField.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 19

V.6 Tugas Rumah 2 :


Menerapkan Exception Handling pada GUI_Toko_Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, diskon,
jumlah_beli, bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setdiskon(String diskon)
+ public void setbayar(String bayar)

Source code pada Super Class toko_buku:


public class toko_buku {
public long harga_total, kembalian;
public String kd_buku, judul, pengarang, penerbit,
harga, jumlah_beli, bayar;
public toko_buku(){
this.kd_buku = "BK001";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}
public void setpenerbit(String penerbit){
this.penerbit = penerbit;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 20

}
public void setharga(String harga){
this.harga = harga;
}
public void setbayar(String bayar){
this.bayar = bayar;
}
public void setjumlahbeli(String jumlah_beli){
this.jumlah_beli = jumlah_beli;
}

public String getbayar(){


return this.bayar;
}
public String getharga(){
return this.harga;
}
public String getkd_buku(){
return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;
}
public String getpenerbit(){
return this.penerbit;
}
public String getjumlah_beli(){
return this.jumlah_beli;
}
}

Source code Object Class(transaksi2.java):


public class transaksi extends toko_buku{
@Override
public String getbayar(){
return this.bayar;
}
@Override
public String getjudul(){
judul = "Belajar OOP";
return this.judul;
}
@Override
public String getpengarang(){
pengarang = "Daniel Putera Alamsyah";
return this.pengarang;
}
@Override
public String getpenerbit(){
penerbit = "Erlangga";
return this.penerbit;
}
@Override

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 21

public String getharga(){


harga = "199999";
return this.harga;
}
@Override
public String getjumlah_beli(){
jumlah_beli = "10";
return this.jumlah_beli;
}
public String getharga_total(){
harga_total =
Long.parseLong(getharga())*Long.parseLong(getjumlah_beli()
);
return Long.toString(harga_total);
}
public String getkembalian (){
kembalian=(Long.parseLong(getbayar())-
Long.parseLong(getharga_total()));
return Long.toString(kembalian);
}
}

Desain form GUI_Toko_Buku

Gambar 5.8 Desain form GUI_Toko_Buku (Exception Handling)

Tabel 5.5 Properti Desain GUI_Toko_Buku

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 22

7 jLabel7 Text HARGA


8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 jTextField1 Name txt_kd_buku
Text
11 jTextField2 Name txt_judul
Text
12 jTextField3 Name txt_pengarang
Text
13 jTextField4 Name txt_penerbit
Text
14 jTextField6 Name txt_harga
Text
15 jTextField7 Name txt_jumlah_beli
Text
16 jTextField8 Name txt_total
Text
17 JTextField9 Text txt_cari
Name
18 jTable1 Name jTable1
19 jButton1 Name jButton1
Text TOTAL HARGA
20 jButton2 Name jButton1
Text CARI
21 jButton3 Name jButton1
Text INSERT
22 jButton4 Name jButton1
Text UPDATE
23 jButton5 Name jButton1
Text DELETE

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 23

24 jButton6 Name jButton1


Text RESET

Source code GUI_Toko_Buku:


transaksi2 tkbk = new transaksi2();
public GUI_Toko_Buku() {
initComponents();
txt_kode_buku.setText(tkbk.getkd_buku());
txt_judul.setText(tkbk.getjudul());
txt_pengarang.setText(tkbk.getpengarang());
txt_penerbit.setText(tkbk.getpenerbit());
txt_harga.setText(tkbk.getharga());
txt_jumlah_beli.setText(tkbk.getjumlah_beli());
}
public void reset(){
txt_kode_buku.setText("");
txt_judul.setText("");
txt_pengarang.setText("");
txt_penerbit.setText("");
txt_harga.setText("");
txt_total.setText("");
txt_jumlah_beli.setText("");
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txt_total.setText(tkbk.getharga_total());
}

Tampilan Hasil:

Gambar 5.9 Tampilan Hasil GUI_Toko_Buku (Exception Handling)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 24

Analisa:
Jika program dijalankan akan muncul menu utama dan terdapat dua
menu yaitu menu Home dan Form. Didalam menu Form terdapat Menu Bar
yang berisi Data Buku yang jika dijalankan akan mengarah ke
GUI_Toko_Buku yang didalamnya mengisikan data setelah data sudah terisi
kemudian klik button total harga kemudian untuk menampikan total harga,
kemudian terdapat tombol RESET yang bertujuan untuk mereset TextField.

V.7 Tugas Rumah 3 :


Menerapkan Exception Handling pada GUI_Toko_Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, diskon,
jumlah_beli, bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setdiskon(String diskon)
+ public void setbayar(String bayar)

Source code pada Super Class toko_buku:


public class toko_buku {
public long harga_total, kembalian;
public String kd_buku, judul, pengarang, penerbit,
harga, jumlah_beli, bayar;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
IV - 25

public toko_buku(){
this.kd_buku = "BK001";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}
public void setpenerbit(String penerbit){
this.penerbit = penerbit;
}
public void setharga(String harga){
this.harga = harga;
}
public void setbayar(String bayar){
this.bayar = bayar;
}
public void setjumlahbeli(String jumlah_beli){
this.jumlah_beli = jumlah_beli;
}

public String getbayar(){


return this.bayar;
}
public String getharga(){
return this.harga;
}
public String getkd_buku(){
return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;
}
public String getpenerbit(){
return this.penerbit;
}
public String getjumlah_beli(){
return this.jumlah_beli;
}
}

Source code Object Class(transaksi2.java):


public class transaksi extends toko_buku{
@Override
public String getbayar(){
return this.bayar;
}
@Override

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 26

public String getjudul(){


judul = "Belajar OOP";
return this.judul;
}
@Override
public String getpengarang(){
pengarang = "Daniel Putera Alamsyah";
return this.pengarang;
}
@Override
public String getpenerbit(){
penerbit = "Erlangga";
return this.penerbit;
}
@Override
public String getharga(){
harga = "199999";
return this.harga;
}
@Override
public String getjumlah_beli(){
jumlah_beli = "10";
return this.jumlah_beli;
}
public String getharga_total(){
harga_total =
Long.parseLong(getharga())*Long.parseLong(getjumlah_beli()
);
return Long.toString(harga_total);
}
public String getkembalian (){
kembalian=(Long.parseLong(getbayar())-
Long.parseLong(getharga_total()));
return Long.toString(kembalian);
}
}

Desain form GUI_Toko_Buku

Gambar 5.8 Desain form GUI_Toko_Buku (Exception Handling)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 27

Tabel 5.6 Properti Desain GUI_Toko_Buku

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT
7 jLabel7 Text HARGA
8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 jTextField1 Name txt_kd_buku
Text
11 jTextField2 Name txt_judul
Text
12 jTextField3 Name txt_pengarang
Text
13 jTextField4 Name txt_penerbit
Text
14 jTextField6 Name txt_harga
Text
15 jTextField7 Name txt_jumlah_beli
Text
16 jTextField8 Name txt_total
Text
17 JTextField9 Text txt_cari
Name
18 jTable1 Name jTable1
19 jButton1 Name jButton1
Text TOTAL HARGA
20 jButton2 Name jButton1

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 28

Text CARI
21 jButton3 Name jButton1
Text INSERT
22 jButton4 Name jButton1
Text UPDATE
23 jButton5 Name jButton1
Text DELETE
24 jButton6 Name jButton1
Text RESET

Source code GUI_Toko_Buku:


transaksi2 tkbk = new transaksi2();
public GUI_Toko_Buku() {
initComponents();
txt_kode_buku.setText(tkbk.getkd_buku());
txt_judul.setText(tkbk.getjudul());
txt_pengarang.setText(tkbk.getpengarang());
txt_penerbit.setText(tkbk.getpenerbit());
txt_harga.setText(tkbk.getharga());
txt_jumlah_beli.setText(tkbk.getjumlah_beli());
}
public void reset(){
txt_kode_buku.setText("");
txt_judul.setText("");
txt_pengarang.setText("");
txt_penerbit.setText("");
txt_harga.setText("");
txt_total.setText("");
txt_jumlah_beli.setText("");
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txt_total.setText(tkbk.getharga_total());
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 29

Tampilan Hasil:

Gambar 5.9 Tampilan Hasil GUI_Toko_Buku (Exception Handling)

Analisa:
Jika program dijalankan akan muncul menu utama dan terdapat dua
menu yaitu menu Home dan Form. Didalam menu Form terdapat Menu Bar
yang berisi Data Buku yang jika dijalankan akan mengarah ke
GUI_Toko_Buku yang didalamnya mengisikan data setelah data sudah terisi
kemudian klik button total harga kemudian untuk menampikan total harga,
kemudian terdapat tombol RESET yang bertujuan untuk mereset TextField.

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
2. Abstract Method adalah sebuah ‘method dasar’ yang harus
direpresentasikan ulang di dalam class anak (child class).
3. Abstract class digunakan di dalam inheritance (pewarisan class) untuk
‘memaksakan’implementasi method yang sama bagi seluruh class yang
diturunkan dariabstract class.Abstract class digunakan untuk membuat
struktur logika penurunan di dalam pemrograman objek.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
IV - 30

4. Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam OOP


adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk”
method yang berbedabeda meskipun namanya sama. “Bentuk” di sini dapat
kita artikan: isinya berbeda (overriding), parameternya berbeda dan tipe
datanya berbeda (overlading).
5. 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.
6. Polymorphism sering dikaitkan dengan penggunaan lebih dari satu method
dengan nama sama.

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. 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
hak_akses interface nama_interface{
static final type_data nama_variabel = nilai;
static final type_data nama_variabel = nilai;
abstract type_method nama_method(parameter);
abstract type_method nama_method(parameter);
}

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:

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 3

1. Sebuah class dapat implements 2 interface secara langsung


public class nama_class implements interface_1, interface_2

2. Sebuah Interface dapat extends dari interface lain :


public interface nama_interface extends interface_1

3. Sebuah Class dapat extends dari kelas lain :


public class nama_class extends class_1

D. Pengenalan Database.
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.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 4

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:
1. 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.
2. 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.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 5

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

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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 6

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
Name btnUbah
14 JButton3
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
19 JButton8 Name btnNIM

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 7

Text NIM
20 JTable Name tabel_data

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 8

Source code pada method batal():


public GUI_Nilai() {
initComponents();
txtNP.setEnabled(false);
}
public void batal(){
txtNIM.setText("");
txtKodeMK.setText("");
txtNT.setText("");
txtNP.setText("");
txtCari.setText("");
}

Source code pada button Batal:


private void
btnBatalActionPerformed(java.awt.event.ActionEvent evt)
{
batal();
}

Tampilan Hasil:

Gambar 6.3 Tampilan Hasil GUI_Nilai (jTable)

Analisa :
Pada program penilaian diatas dapat kita gunakan untuk menghitung
hasil nilai akhir dan terdapat dua pilihan tanpa nilai pratikum dan dengan
menggunakan nilai pratikum, jika program menggunakan nilai pratikum
maka centang checkbox pratikum dan sebaliknya jiga tidak ingin menghitung
dengan nilai pratikum bisa menghilangkan centang pada checkbox

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 9

VI.4 Tugas Praktikum 2 :


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

Gambar 6.4 Membuat database oop_1918081


Membuat database oop_1918081
Structure tb_mahasiswa pada database oop_1918081

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.7 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_Mahasiswa:


public Connection conn;

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 10

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
8081?user=root&password=");
}
catch (ClassNotFoundException ex){

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

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

Logger.getLogger(GUI_Mahasiswa.class.getName()).log(Level.S
EVERE,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);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VI - 11

public void refresh(){


new GUI_Mahasiswa().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!");
}
refresh();
}

Source code method hapus :

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 12

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()+"%'"+
"OR nama
LIKE'%"+txtCari.getText()+"%'"+
"OR prodi
LIKE'%"+txtCari.getText()+"%'"+
"OR angkatan
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 - 13

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 14

Desain form GUI Mahasiswa:

Gambar 6.6 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
12 jButton2 Name btnUbah

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 15

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

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
VI - 16

Tampilan Hasil:

Gambar 6.7 Tampilan Hasil Method tampil() GUI_Mahasiswa

Gambar 6.8 Tampilan Hasil Method insert() GUI_Mahasiswa

Gambar 6.9 Tampilan Hasil Method update() GUI_Mahasiswa

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 17

Gambar 6.10 Tampilan Hasil Method delete() GUI_Mahasiswa

Gambar 6.11 Tampilan Hasil Method batal() GUI_Mahasiswa

Analisa:
Program diatas jika dijalankan maka semua fungsi tombol pada
GUI_Mahasiswa dapat digunakan kecuali button form nilai. Tampilan awal
jika dijalankan program akan menampilaan data yang berapa didatabase
untuk menampilakn menggunakan fingsi tampil(); dan akan menampilkan
database pada tabel. Terdapat tombol ubah yang digunakan untuk merubah
data pada tabel menggunakan fungsi update dan tombol hapus yang
digunakan untuk menghapus data pada tabel menggunakan fungsi delete dan
untuk menghubungkan data dengan program sebelumnya dihubungkan
menggunakan script conn agar bisa menghubungkan database dengan
program.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 18

VI.5 Tugas Rumah 1 :


Menerapkan Interface pada GUI_Toko_Buku
Diagram Class:
toko_buku
 long harga_total, kembalian
 String kd_buku, judul, pengarang,
penerbit, genre, harga, diskon,
jumlah_beli, bayar
+ public void setkd_buku(String
kd_buku)
+ public void setjudul(String judul)
+ public void setpengarang(String
pengarang)
+ public void setpenerbit(String
penerbit)
+ public void setgenre(String genre)
+ public void setharga(String harga)
+ public void setdiskon(String diskon)
+ public void setbayar(String bayar)

Source code interface(bayar.java):


public interface bayar {
public String dibayar();
public String total ();
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 19

Source code Object Class(toko_buku.java):


public class toko_buku {
public long harga_total, kembalian;
public String kd_buku, judul, pengarang, penerbit,
harga, jumlah_beli, bayar, pesan;
public toko_buku(){
this.kd_buku = "BK001";
}

public void setkd_buku(String kd_buku){


this.kd_buku = kd_buku;
}
public void setjudul(String judul){
this.judul = judul;
}
public void setpengarang(String pengarang){
this.pengarang = pengarang;
}
public void setpenerbit(String penerbit){
this.penerbit = penerbit;
}
public void setharga(String harga){
this.harga = harga;
}
public void setpesan(String pesan){
this.pesan = pesan;
}
public void setbayar(String bayar){
this.bayar = bayar;
}
public void setjumlahbeli(String jumlah_beli){
this.jumlah_beli = jumlah_beli;
}

public String getpesan(){


return this.pesan;
}
public String getbayar(){
return this.bayar;
}
public String getharga(){
return this.harga;
}
public String getkd_buku(){
return this.kd_buku;
}
public String getjudul(){
return this.judul;
}
public String getpengarang(){
return this.pengarang;
}
public String getpenerbit(){
return this.penerbit;
}
public String getjumlah_beli(){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 20

return this.jumlah_beli;
}}
Source code Object Class(transaksi.java):
public abstract class transaksi extends toko_buku{
@Override
public abstract String getbayar();
@Override
public abstract String getjudul();
@Override
public abstract String getpengarang();
@Override
public abstract String getpenerbit();
@Override
public abstract String getharga ();
@Override
public abstract String getjumlah_beli ();

/**
*
* @return
*/
public abstract String getharga_total();

/**
*
* @return
*/
public abstract String getkembalian ();
}
Source code Object Class(transaksi2.java):
public class transaksi2 extends toko_buku implements bayar{
@Override
public String getbayar(){
return this.bayar;
}
@Override
public String getjudul(){
judul = "Belajar OOP";
return this.judul;
}
@Override
public String getpengarang(){
pengarang = "Daniel Putera Alamsyah";
return this.pengarang;
}
@Override
public String getpenerbit(){
penerbit = "Erlangga";
return this.penerbit;
}
@Override
public String getharga(){
harga = "199999";
return this.harga;
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 21

@Override
public String getjumlah_beli(){
jumlah_beli = "10";
return this.jumlah_beli;
}
public String getharga_total(){
harga_total =
Long.parseLong(getharga())*Long.parseLong(getjumlah_beli()
);
return Long.toString(harga_total);
}
public String getkembalian (){
kembalian=(Long.parseLong(getbayar())-
Long.parseLong(getharga_total()));
return Long.toString(kembalian);
}

@Override
public String dibayar() {
return this.bayar;
}

@Override
public String total() {
return this.total();
}
}

Desain form (GUI_Toko_Buku.java):

Gambar 6.12 Desain form GUI_Toko_Buku (Interface)


Tabel 6.4 Properti Desain GUI_Toko_Buku

No Objek Properti Nilai


1 jLabel1 Text TOKO BUKU
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 22

4 jLabel4 Text PENGARANG


5 jLabel5 Text PENERBIT
7 jLabel7 Text HARGA
8 jLabel8 Text JUMLAH BELI
9 JLabel9 Text TOTAL
10 jTextField1 Name txt_kd_buku
Text
11 jTextField2 Name txt_judul
Text
12 jTextField3 Name txt_pengarang
Text
13 jTextField4 Name txt_penerbit
Text
14 jTextField6 Name txt_harga
Text
15 jTextField7 Name txt_jumlah_beli
Text
16 jTextField8 Name txt_total
Text
17 JTextField9 Text txt_cari
Name
18 jTable1 Name jTable1
19 jButton1 Name jButton1
Text TOTAL HARGA
20 jButton2 Name jButton1
Text CARI
21 jButton3 Name jButton1
Text INSERT
22 jButton4 Name jButton1
Text UPDATE

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 23

23 jButton5 Name jButton1


Text DELETE
24 jButton6 Name jButton1
Text RESET

Source code GUI_Toko_Buku:


transaksi2 tkbk = new transaksi2();
public GUI_Toko_Buku() {
initComponents();
txt_kode_buku.setText(tkbk.getkd_buku());
txt_judul.setText(tkbk.getjudul());
txt_pengarang.setText(tkbk.getpengarang());
txt_penerbit.setText(tkbk.getpenerbit());
txt_harga.setText(tkbk.getharga());
txt_jumlah_beli.setText(tkbk.getjumlah_beli());
}
public void reset(){
txt_kode_buku.setText("");
txt_judul.setText("");
txt_pengarang.setText("");
txt_penerbit.setText("");
txt_harga.setText("");
txt_total.setText("");
txt_jumlah_beli.setText("");
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txt_total.setText(tkbk.getharga_total());
}

Tampilan Hasil:

Gambar 6.13 Tampilan Hasil GUI_Toko_Buku. (Interface)

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 24

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 25

Analisa:
Jika program dijalankan akan muncul menu utama dan terdapat dua menu
yaitu menu Home dan Form. Didalam menu Form terdapat Menu Bar yang
berisi Data Buku yang jika dijalankan akan mengarah ke GUI_Toko_Buku
yang didalamnya mengisikan data setelah data sudah terisi kemudian klik
button total harga kemudian untuk menampikan total harga, kemudian terdapat
tombol RESET yang bertujuan untuk mereset TextField.
VI.6 Tugas Rumah 2 :
Menerapkan CRUD Pada GUI_Toko_Buku
Membuat Database toko_buku_db

Gambar 6.14 Membuat database toko_buku_db

Structure tb_buku pada database toko_buku_db

Gambar 6.15 Membuat tabel (tb_buku)

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 - 26

Source code method koneksi :


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

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

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

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

Source code di method tampil:


public void tampil() {
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("KODE BUKU");
tabelhead.addColumn("JUDUL");
tabelhead.addColumn("PENARANG");
tabelhead.addColumn("PENERBIT");
tabelhead.addColumn("HARGA");
try {
koneksi();
String sql = "SELECT * FROM tb_buku";
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
VI - 27

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 28

Source code method refresh :


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

Source code method get :


public void get(){
kode_buku = txt_kode_buku.getText();
judul = txt_judul.getText();
pengarang = txt_pengarang.getText();
penerbit = txt_penerbit.getText();
harga = txt_harga.getText();
cari = txt_cari.getText();
// Integer harga
=Integer.parseInt(txt_harga.getText());
}

Source code method tambah :


public void insert(){
get();
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_buku(kode_buku, judul, pengarang, penerbit, harga)"

+"VALUES('"+kode_buku+"','"+judul+"','"+pengarang+"','"+pe
nerbit+"','"+harga+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Buku!");
} 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_buku set
kode_buku='"+kode_buku+"',judul =
'"+judul+"',pengarang='"+pengarang+"',penerbit='"+penerbit
+"',harga='"+harga+"' where kode_buku='"+kode_buku+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update
Data Buku!");
} catch (Exception e) {

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 29

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_buku WHERE
kode_buku='"+kode_buku+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();

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

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


}
}
refresh();
}

Source code method cari :


public void cari(){
get();
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_buku WHERE
kode_buku LIKE '%"+cari+"%'"+
"OR judul LIKE'%"+cari+"%'"+
"OR pengarang
LIKE'%"+cari+"%'"+
"OR penerbit
LIKE'%"+cari+"%'"+
"OR harga LIKE'"+cari+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner
method
{

txt_kode_buku.setText(rs.getString(1));

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 30

txt_judul.setText(rs.getString(2));

txt_pengarang.setText(rs.getString(3));

txt_penerbit.setText(rs.getString(4));

txt_harga.setText(rs.getString(5));
}
else{

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 6.16 Menambahkan Library Connector


Desain form GUI_Toko_Buku:

Gambar 6.17 Desain form GUI_Toko_Buku

Tabel 6.4 Properti Desain GUI_Toko_Buku


No Objek Properti Nilai
TOKO BUKU
1 jLabel1 Text
SEJAHTERA
2 jLabel2 Text KODE BUKU
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VI - 31

3 jLabel3 Text JUDUL


4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT
7 jLabel7 Text HARGA
8 jTextField1 Name txt_kd_buku
Text
9 jTextField2 Name txt_judul
Text
10 jTextField3 Name txt_pengarang
Text
11 jTextField4 Name txt_penerbit
Text
12 jTextField6 Name txt_harga
Text
13 JTextField9 Text txt_cari
Name
14 jTable1 Name jTable1
15 JButton1 Name jButton1
Text CARI
16 JButton2 Name JButton2
Text INSERT
17 JButton3 Name JButton3
Text UPDATE
18 JButton4 Name JButton4
Text DELETE
19 JButton5 Name JButton5
Text RESET
20 JButton6 Name JButton5
Text TRANSAKSI

Source code pada tombol Tambah:

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 32

insert();

Source code pada tombol Ubah:


update();

Source code pada tombol Hapus:


delete();

Source code pada tombol cari:


cari();

Source code pada tombol Reset:


reset();

Tampilan Hasil:

Gambar 6.18 Tampilan Hasil Method tampil() GUI_Toko_Buku

Analisa:
Program diatas jika dijalankan maka semua fungsi tombol pada
GUI_Mahasiswa dapat digunakan kecuali button transaksi. Tampilan awal
jika dijalankan program akan menampilaan data yang berapa didatabase
untuk menampilakn menggunakan fingsi tampil(); dan akan menampilkan
database pada tabel. Terdapat tombol ubah yang digunakan untuk merubah
data pada tabel menggunakan fungsi update dan tombol hapus yang
digunakan untuk menghapus data pada tabel menggunakan fungsi delete serta
terdapat tombol untuk pencarian yang berfungsi untuk melakukan pencarian

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VI - 33

dengan fungsi cari dan untuk menghubungkan data dengan program


sebelumnya dihubungkan menggunakan script conn agar bisa
menghubungkan database dengan program.

VI.7 Kesimpulan
1. Interface merupakan prototype atau template untuk sebuah class, deskripsi
ini hampir serupa dengan class abstrak. Interface merupakan class memiliki
struktur yang istimewa.
2. Variable pada interface akan memiliki aturan static dan final sedangkan
method akan memiliki aturan public dan abstract.
3. Jika sebuah class tidak diperkenankan melakukan pewarisan (extends)
lebih dari 1 class, maka interface diperbolehkan melakukan hal tersebut.
4. 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.
5. Pendefinisian basis data meliputi spesifikasi berupa tipe data, struktur data
dan juga batasan-batasan pada data yang akan disimpan.
6. 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 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 :
1. Create : Perintah ini digunakan untuk membuat databs, tabel, dan
objek lain dalam database.
2. 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.
3. 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.
1. Insert : Perintah ini untuk mengisi atau menambahkan isi tabel.
Pengisian dapat dilakukan untuk seluruh field atau hanya sebagian
filed saja.
2. Update : Seperti terlihat pada perintahnya. Perintah ini digunakan
untuk mengubah item - item tertentu dalam satu tabel.
3. 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
berupa angka. Pada tipe data angka terbagi menjadi beberapa jenis
seperti pada kolom tabel dibawah ini.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 3

Gambar 7.1 Tabel Type data numerik

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 Tabel Type data string

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 4

3. Tipe Data Date


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

Gambar 7.3 Tabel Type data date


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

Gambar 7.4 Tabel Type data date

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 “oop_191081” dan table “tb_matkul”, meng-koneksikan
GUI_Matkul dengan database.
Structure tb_matkul pada database oop_1918081

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
8081?user=root&password=");
}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 6

catch (ClassNotFoundException ex){

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

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

Logger.getLogger(GUI_Mahasiswa.class.getName()).log(Level.S
EVERE,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);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


public void refresh(){
new GUI_Mahasiswa().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();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 7

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!");
}
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();

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 8

}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()+"%'"+
"OR nama
LIKE'%"+txtCari.getText()+"%'"+
"OR prodi
LIKE'%"+txtCari.getText()+"%'"+
"OR angkatan
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
VII - 9

Desain form GUI Matkul:

Gambar 7.3 Desain form GUI_ Matkul

Tabel 7.4 Properti Desain GUI_ Matkul

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
11 jButton1 Name btnSimpan

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 10

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

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 - 11

Tampilan Hasil:

Gambar 7.7 Tampilan Hasil Method tampil() GUI_ Matkul

Gambar 7.8 Tampilan Hasil Method tambah() GUI_ Matkul

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 12

Gambar 7.9 Tampilan Hasil Method ubah() GUI_ Matkul

Gambar 7.10 Tampilan Hasil Method hapus() GUI_ Matkul

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 13

Gambar 7.11 Tampilan Hasil Method batal() GUI_ Matkul


Analisa:
Program diatas jika dijalankan maka semua fungsi tombol pada
GUI_Mahasiswa dapat digunakan. Tampilan awal jika dijalankan program
akan menampilaan data yang berapa didatabase untuk menampilakn
menggunakan fingsi tampil(); dan akan menampilkan database pada tabel.
Terdapat tombol ubah yang digunakan untuk merubah data pada tabel
menggunakan fungsi update dan tombol hapus yang digunakan untuk
menghapus data pada tabel menggunakan fungsi delete dan untuk
menghubungkan data dengan program sebelumnya dihubungkan
menggunakan script conn agar bisa menghubungkan database dengan
program.

VII.4 Tugas Praktikum 2 :


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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 14

Gambar 7.12 Membuat tabel (tb_matkul)

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


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

Gambar 7.13 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_Nilai:


public class GUI_Nilai extends javax.swing.JFrame {
String nim1,kd_mk1,n1,n2,n3;
public Connection conn;

public GUI_Nilai() {
initComponents();
tampil();
tampil_mhs();
tampil_mk();
}

Source code method koneksi :


public void koneksi() throws SQLException {

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 15

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

Logger.getLogger(GUI_Nilai.class.getName()).log(Level.SEVER
E,null,ex);
} catch (SQLException e) {

Logger.getLogger(GUI_Nilai.class.getName()).log(Level.SEVER
E,null,e);
} catch (Exception es) {

Logger.getLogger(GUI_Nilai.class.getName()).log(Level.SEVER
E,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)});
}
jTable1.setModel(tabelhead);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


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

Source code method tambah :


Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 16

public void insert(){


String Nim = (String) jComboBox1.getSelectedItem();
String KodeMK = (String)
jComboBox2.getSelectedItem();
String NT = jTextField3.getText();
String NP = jTextField4.getText();
String NA = jTextField5.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!"+e);
} refresh();
}

Source code method ubah :


public void update(){
String Nim = (String) jComboBox1.getSelectedItem();
String KodeMK = (String)
jComboBox2.getSelectedItem();
String NT = jTextField3.getText();
String NP = jTextField4.getText();
String NA = jTextField5.getText();

String nim_lama = nim1;


String kode_lama = kd_mk1;
try {
koneksi();
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();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Nilai!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!"+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);

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 17

if(ok==0){
try{
String sql="DELETE FROM tb_nilai
WHERE nim='"+jComboBox1.getSelectedItem()+"' AND
kode_mk='"+jComboBox2.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"+e);
}
} refresh();
}

Source code method cari :


public void cari(){
try{
try (
Statement statement = conn.createStatement()) {
String sql="SELECT * FROM tb_nilai
WHERE `nim` LIKE '%"+jTextField6.getText()+"%'";
ResultSet rs =
statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner
method
{

jComboBox1.setSelectedItem(rs.getString(1));

jComboBox2.setSelectedItem(rs.getString(2));

jTextField3.setText(rs.getString(3));

jTextField4.setText(rs.getString(4));

jTextField5.setText(rs.getString(5));
} else{
JOptionPane.showMessageDialog(null,
"Data yang Anda cari tidak ada");
}
}
}catch (Exception ex){
System.out.println("Error."+ex);
}
}

Source code method tampil_mhs :


public void tampil_mhs(){

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 18

try {
koneksi();
String sql = "SELECT nim FROM Mahasiswa order by
nim asc";
Statement stt = conn.createStatement();
ResultSet res = stt.executeQuery(sql);
while(res.next()){
Object[] ob = new Object[3];
ob[0] = res.getString(1);
jComboBox1.addItem(ob[0].toString());
}
res.close();
stt.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

Source code method tampil_mk :


public void tampil_mk(){
try {
koneksi();
String sql = "SELECT kode_mk FROM Matkul order
by kode_mk asc";
Statement stt = conn.createStatement();
ResultSet res = stt.executeQuery(sql);
while(res.next()){
Object[] ob = new Object[3];
ob[0] = res.getString(1);
jComboBox2.addItem(ob[0].toString());
}
res.close();
stt.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

Source code method batal dan itempilih :


public void batal(){
jComboBox1.setSelectedIndex(0);
jComboBox2.setSelectedIndex(0);
jTextField3.setText("");
jTextField4.setText("");
jTextField5.setText(""); }
void itempilih(){
jComboBox1.setSelectedItem(nim1);
jComboBox2.setSelectedItem(kd_mk1);
jTextField3.setText(n1);
jTextField4.setText(n2);
jTextField5.setText(n3); }

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 19

Desain form GUI_Nilai:

Gambar 7.14 Desain form GUI_ Nilai


Tabel 7.5 Properti Desain GUI_ Nilai (Database)

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
12 JCheckBox Text Praktikum

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 20

Name cek_prak
Name btnSimpan
13 JButton2
Text Simpan
Name btnUbah
14 JButton3
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 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();

Source code pada tombol simpan:


private void
btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
Penilaian nilai; // instansiasi

nilai = new Penilaian_nonprak();


Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 21

if (jCheckBox1.isSelected()){
nilai.nilaiTugas =
Integer.parseInt(jTextField3.getText());
nilai.nilaiPrak =
Integer.parseInt(jTextField4.getText());

jTextField5.setText(Double.toString(nilai.tampilNA()));
}else {
nilai.nilaiTugas =
Integer.parseInt(jTextField3.getText());

jTextField5.setText(Double.toString(nilai.nilaiAkhir()));
}

Source code pada tombol tabel_datamouse:


private void
tabel_dataMouseClicked(java.awt.event.MouseEvent evt) {
int tabel = tabel_data.getSelectedRow(); //0
nim1 = tabel_data.getValueAt(tabel, 0).toString();
kd_mk1 = tabel_data.getValueAt(tabel,
1).toString();
N1 = tabel_data.getValueAt(tabel, 2).toString();
N2 = tabel_data.getValueAt(tabel, 3).toString();
N3 = tabel_data.getValueAt(tabel, 4).toString();
itempilih();
}

Source code pada tombol NIM:


new GUI_Mahasiswa().setVisible(true);

Source code pada tombol kode mk:


new GUI_Matkul ().setVisible(true);

Tampilan Hasil:

Gambar 7.15 Tampilan Hasil Method tampil() GUI_ Nilai

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 22

Gambar 7.16 Tampilan Hasil Method tambah() GUI_ Nilai

Gambar 7.17 Tampilan Hasil Method ubah() GUI_ Nilai

Gambar 7.18 Tampilan Hasil Method hapus() GUI_ Nilai

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 23

Gambar 7.19 Tampilan Hasil Method batal() GUI_ Nilai

Analisa:
Program diatas jika dijalankan maka semua fungsi tombol pada
GUI_Niai dapat digunakan. Tampilan awal jika dijalankan program akan
menampilaan data yang berapa didatabase untuk menampilakn menggunakan
fungsi tampil(); dan akan menampilkan database pada tabel. Terdapat tombol
ubah yang digunakan untuk merubah data pada tabel menggunakan fungsi
update dan tombol hapus yang digunakan untuk menghapus data pada tabel
menggunakan fungsi delete dan untuk menghubungkan data dengan program
sebelumnya dihubungkan menggunakan script conn agar bisa
menghubungkan database dengan program.

VII.5 Tugas Rumah 1 :


Menerapkan CRUD Pada GUI_Toko_Buku
Membuat Database toko_buku_db

Gambar 7.20 Membuat database toko_buku_db

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 24

Structure tb_buku pada database toko_buku_db

Gambar 7.21 Membuat tabel (tb_buku)

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;

Source code method koneksi :


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

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

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

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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 25

Source code di method tampil:


public void tampil() {
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("KODE BUKU");
tabelhead.addColumn("JUDUL");
tabelhead.addColumn("PENARANG");
tabelhead.addColumn("PENERBIT");
tabelhead.addColumn("HARGA");
try {
koneksi();
String sql = "SELECT * FROM tb_buku";
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");
}
}

Source code method refresh :


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

Source code method get :


public void get(){
kode_buku = txt_kode_buku.getText();
judul = txt_judul.getText();
pengarang = txt_pengarang.getText();
penerbit = txt_penerbit.getText();
harga = txt_harga.getText();
cari = txt_cari.getText();
// Integer harga
=Integer.parseInt(txt_harga.getText());
}

Source code method tambah :


public void insert(){
get();
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_buku(kode_buku, judul, pengarang, penerbit, harga)"

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 26

+"VALUES('"+kode_buku+"','"+judul+"','"+pengarang+"','"+pe
nerbit+"','"+harga+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Buku!");
} 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_buku set
kode_buku='"+kode_buku+"',judul =
'"+judul+"',pengarang='"+pengarang+"',penerbit='"+penerbit
+"',harga='"+harga+"' where kode_buku='"+kode_buku+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update
Data Buku!");
} 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_buku WHERE
kode_buku='"+kode_buku+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();

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

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


}

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 27

}
refresh();
}

Source code method cari :


public void cari(){
get();
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_buku WHERE
kode_buku LIKE '%"+cari+"%'"+
"OR judul LIKE'%"+cari+"%'"+
"OR pengarang
LIKE'%"+cari+"%'"+
"OR penerbit
LIKE'%"+cari+"%'"+
"OR harga LIKE'"+cari+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner
method
{

txt_kode_buku.setText(rs.getString(1));

txt_judul.setText(rs.getString(2));

txt_pengarang.setText(rs.getString(3));

txt_penerbit.setText(rs.getString(4));

txt_harga.setText(rs.getString(5));
}
else{

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.22 Menambahkan Library Connector


Nama Aslab Pengajar : TTD :
Sujud Satwikayana

Tanggal : 21-12-2020
VII - 28

Desain form GUI_Toko_Buku:

Gambar 7.23 Desain form GUI_Toko_Buku

Tabel 7.6 Properti Desain GUI_Toko_Buku


No Objek Properti Nilai
TOKO BUKU
1 jLabel1 Text
SEJAHTERA
2 jLabel2 Text KODE BUKU
3 jLabel3 Text JUDUL
4 jLabel4 Text PENGARANG
5 jLabel5 Text PENERBIT
7 jLabel7 Text HARGA
8 jTextField1 Name txt_kd_buku
Text
9 jTextField2 Name txt_judul
Text
10 jTextField3 Name txt_pengarang
Text
11 jTextField4 Name txt_penerbit
Text
12 jTextField6 Name txt_harga
Text
13 JTextField9 Text txt_cari
Name

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 29

14 jTable1 Name jTable1


15 JButton1 Name jButton1
Text CARI
16 JButton2 Name JButton2
Text INSERT
17 JButton3 Name JButton3
Text UPDATE
18 JButton4 Name JButton4
Text DELETE
19 JButton5 Name JButton5
Text RESET
20 JButton6 Name JButton5
Text TRANSAKSI

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 Reset:


reset();

Tampilan Hasil:

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 30

Gambar 7.24 Tampilan Hasil Method tampil() GUI_Toko_Buku

Analisa:
Program diatas jika dijalankan maka semua fungsi tombol pada
GUI_Mahasiswa dapat digunakan kecuali button transaksi. Tampilan awal
jika dijalankan program akan menampilaan data yang berapa didatabase
untuk menampilakn menggunakan fingsi tampil(); dan akan menampilkan
database pada tabel. Terdapat tombol ubah yang digunakan untuk merubah
data pada tabel menggunakan fungsi update dan tombol hapus yang
digunakan untuk menghapus data pada tabel menggunakan fungsi delete serta
terdapat tombol untuk pencarian yang berfungsi untuk melakukan pencarian
dengan fungsi cari dan untuk menghubungkan data dengan program
sebelumnya dihubungkan menggunakan script conn agar bisa
menghubungkan database dengan program.

VII.6 Tugas Rumah 2 :


Menerapkan CRUD Pada GUI_Transaksi
Structure tb_transaksi pada database toko_buku_db

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 31

Gambar 7.25 Membuat tabel (tb_transaksi)

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;

Source code method koneksi :


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

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

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

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

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 32

Source code di method tampil:


public void tampil() {
DefaultTableModel tabelhead = new
DefaultTableModel();
tabelhead.addColumn("KODE TRANSAKSI");
tabelhead.addColumn("KODE BUKU");
tabelhead.addColumn("HARGA");
tabelhead.addColumn("JUMLAH BELI");
tabelhead.addColumn("TOTAL");
tabelhead.addColumn("BAYAR");
tabelhead.addColumn("KEMBALIAN");
try {
koneksi();
String sql = "SELECT * FROM tb_transaksi";
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), res.getString(6),
res.getString(7)});
}
tabel_data.setModel(tabelhead);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}

Source code method refresh :


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

Source code method get :


public void get(){
kode_transaksi = txt_kode_transaksi.getText();
kode_buku = (String)
txt_kode_buku.getSelectedItem();
harga = txt_harga.getText();
jumlah_beli = txt_jumlah_beli.getText();
total = txt_total.getText();
bayar = txt_bayar.getText();
kembalian = txt_kembalian.getText();
cari = txt_cari.getText();
// Integer harga
=Integer.parseInt(txt_harga.getText());
}

Source code method tambah :

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 33

public void insert(){


get();
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_transaksi(kode_transaksi, kode_buku, harga, jumlah_beli,
total, bayar, kembalian)"

+"VALUES('"+kode_transaksi+"','"+kode_buku+"','"+harga+"',
'"+jumlah_beli+"','"+total+"','"+bayar+"','"+kembalian+"')
");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Transaksi!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}

Source code method cari :


public void cari(){
get();
try{
try (Statement statement =
conn.createStatement()) {
String sql="SELECT * FROM tb_transaksi
WHERE kode_transaksi LIKE '%"+cari+"%'"+
"OR kode_buku
LIKE'%"+cari+"%'"+
"OR harga LIKE'%"+cari+"%'"+
"OR jumlah_beli
LIKE'%"+cari+"%'"+
"OR total LIKE'%"+cari+"%'"+
"OR bayar LIKE'%"+cari+"%'"+
"OR kembalian
LIKE'"+cari+"%'";
ResultSet
rs=statement.executeQuery(sql); //menampilkan data dari sql
query
if(rs.next()) // .next() = scanner
method
{

txt_kode_transaksi.setText(rs.getString(1));

txt_kode_buku.setSelectedItem(rs.getString(2));

txt_harga.setText(rs.getString(3));

txt_jumlah_beli.setText(rs.getString(4));

txt_total.setText(rs.getString(5));

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 34

txt_bayar.setText(rs.getString(6));

txt_kembalian.setText(rs.getString(7));
}
else{

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.26 Menambahkan Library Connector


Desain form GUI_Transaksi:

Gambar 7.27 Desain form GUI_Transaksi

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 35

Tabel 7.7 Properti Desain GUI_Transaksi

No Objek Properti Nilai


1 jLabel1 Text TRANSAKSI
KODE
2 jLabel2 Text
TRANSAKSI
3 jLabel3 Text HARGA
4 jLabel4 Text JUMLAH BELI
5 jLabel5 Text TOTAL
7 jLabel7 Text BAYAR
8 JLabel8 Text KEMBALIAN
9 jTextField1 Name txt_kode_transaksi
Text
10 jTextField2 Name txt_harga
Text
11 jTextField3 Name txt_jumlah_beli
Text
12 jTextField4 Name txt_total
Text
13 jTextField6 Name txt_bayar
Text
14 JTextField7 Name txt_kembalian
Text
15 JTextField8 Text txt_cari
Name
16 jTable1 Name tabel_data
17 JButton1 Name jButton1
Text CARI
18 JButton2 Name JButton2
Text KODE BUKU
19 JButton3 Name JButton3

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 36

Text HITUNG
20 JButton4 Name JButton4
Text HITUNG
21 JButton5 Name JButton5
Text SIMPAN DATA
22 JButton6 Name JButton6
Text RESET
23 JButton7 Name JButton7
Text DATA BUKU

Source code pada tombol Tambah:


insert();

Source code pada tombol cari:


cari();

Source code pada tombol Reset:


reset();

Tampilan Hasil:

Gambar 7.28 Tampilan Hasil Method tampil() GUI_Transaksi

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VII - 37

Analisa:
Pada program diatas dijak dijalankan maka yang akan ditampilkan
adalah GUI_Menu_Utama yang didalam menu terdapat subform yang berisi
link menuju form GUI_Toko_Buku dan GUI_Transaksi. Didalam
GUI_Toko_Buku program akan menampilaan data yang berapa didatabase
untuk menampilakn menggunakan fungsi tampil(); dan akan menampilkan
database pada tabel. Terdapat tombol ubah yang digunakan untuk merubah data
pada tabel menggunakan fungsi update dan tombol hapus yang digunakan
untuk menghapus data pada tabel menggunakan fungsi delete serta terdapat
tombol untuk pencarian yang berfungsi untuk melakukan pencarian dengan
fungsi cari dan untuk menghubungkan data dengan program sebelumnya
dihubungkan menggunakan script conn agar bisa menghubungkan database
dengan program. Sama halnya dengan form GUI_Transksi akan menampilkan
data transaksi yang diambil dari data transaksi di database yang akan
menampilkan data dan melakukan proses perhitungan dan data tersebut akan
disimpan ke dalam table di phpmyadmin dan kemudian data dalam
phpmyadmin akan dipanggil didalam form GUI_Transaksi dan ditampilakn
didalam tabel.
VII.5 Kesimpulan
1. SQL (Structured Query Language) merupakan bahasa yang telah
distandarsisasikan dan digunakan dalam pengelolaan semua database yang
ada.
2. Didalam SQL terdapat 3 sub bahasa, yaitu: Data Definition Language (DDL)
yang digunakan untuk membangun objek - objek dalam database seperti tabel
dan indeks;
3. 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
VIII - 1

BAB VIII
KESIMPULAN
Dengan adanya kegiatan praktikum OOP. Penulis dapat menyimpulkan
sebagai berikut :
1. Ada beberapa konsep dasar dari pemrograman orientasi Objek (Object
Oriented Programming ) yaitu class, attribute, method dan object.
2. Dalam method terdapat method getter digunakan untuk mengambil nilai pada
suatu atribut dan method setter digunakan untuk memberi nilai pada suatu
atribut.
3. Konstruktor adalah method khusus yang didefinisikan di dalam kelas dan
dipanggil secara otomatis setiap kali terjadi inisisalisasi objek.
4. Terdapat 4 hak akses penting dalam enkapsulasi yaitu public, private, protected
dan default.
5. Dalam pewarisan (inheritance) merupakan mekanisme membuat kelas baru
dari kelas yang sudah ada atau ssuperclass dan subclass (turunan).
6. Method 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
7. Overriding adalah method subclass sama dengan method super class,
parameternya sama tetapi pernyataan atau implementasinya berbeda. Aturan
Overriding:
8. 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.
9. Polimorfisme adalah kemampuan suatu objek untuk mengungkap banyak hal
melalui satu cara yang sama. 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. Polimorfisme dapat
berupa overloading atau overriding.

Nama Aslab Pengajar : TTD :


Sujud Satwikayana

Tanggal : 21-12-2020
VIII-2

10. Exception Handling adalah event yang terjadi ketika program menemui
kesalahan pada saat instruksi program dijalankan. Banyak hal yang dapat
menimbulkan event ini, misalnya crash, harddisk rusak dengan tiba-tiba,
sehingga program-program tidak bisa mengakses file-file tertentu
11. Interface adalah prototype atau template untuk sebuah class, deskripsi ini
hampir serupa dengan class abstrak. class abstrak merupakan Class yang
diimlementasikan secara parsial
12. 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
DAFTAR PUSTAKA
Laboratorium Pemrograman dan RPL. 2020. Modul Semester Ganjil Object
Oriented Programming. Laboratorium Pemrograman Insitut Teknologi Nasional
Malang.
Dian, Muhar. 2017. PetaniCode. November 10. Accessed Desember 9, 2018.
https://www.petanikode.com/java-oop/.
Karim, Damas Amirul. 2017. kodedasar. Maret 27. Accessed Desember 7, 2018.
https://www.kodedasar.com/belajar-java/.
Kurniawan, Wisnu. 2016. medium. Oktober 6. Accessed Desember 2018, 2.
https://medium.com/@wisnukurniawan/pengenalan-konsep-penyusun-
oop-pada-java-programming-f3083522954c.
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/2020

Nama : Daniel Putera Alamsyah


NIM : 1918081
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:

Asisten, Malang , … Desember 2020


Dosen, Pembimbing,

(Sujud Satwikayana) (Agung Panji Sasmito, S.Pd, M.Pd)


NIP.P 1031500499
NIM : 1718082

Anda mungkin juga menyukai