Disusun oleh :
Nama : Mochammad Rizky A J
NIM : 1918026
Jurusan : Teknik Informatika S-1
Disusun Oleh
NAMA : Mochammad Rizky A J
NIM : 1918026
PRODI : Teknik Informatika S-1
Mengetahui, Menyetujui,
Kepala Laboratorium Dosen Pembimbing
Pemrograman Komputer
KATA PENGANTAR
Dengan memanjatkan puji syukur kehadirat Allah SWT, karena atas berkah
rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Laporan Praktikum
Mata Kuliah Object Oriented Programming, guna persyaratan dalam menempuh
mata kuliah tersebut.
Laporan ini disusun berdasarkan percobaan dan teori dasar yang ada dalam
buku panduan praktikum, teori yang diperoleh praktikan dari perkuliahan, dan tidak
lupa yaitu Internet sehingga penulis dapat menambah tidak hanya menguasai teori
saja namun juga memahami serta mengaplikasikannya.
Terwujudnya laporan ini, tentunya tidak lepas dari bantuan-bantuan yang
telah penulis terima. Pada kesempatan ini, penulis menyampaikan terima kasih
yang sebesar-besarnya kepada yang terhormat:
1. Bapak Yoseph Agus Pranoto, ST, MT selaku dosen pembimbing
Praktikum Object Oriented Programming.
2. Bapak Yoseph Agus Pranoto, ST, MT. dan Agung Panji Sasmito, S.Pd,
M.Pd. selaku dosen mata kuliah Object Oriented Programming.
3. Bapak Ahmad Faisol, ST, MT selaku Ketua Pelaksana Praktikum Object
Oriented Programming Program Studi Teknik Informatika ITN Malang.
4. Instruktur Lab. Pemrograman Komputer Teknik Informatika yang telah
memberi petunjuk kepada penulis selama pelaksanaan praktikum.
5. Rekan-rekan yang telah membantu dalam pelaksanaan dan penyelesaian
laporan ini.
Harapan penulis, laporan praktikum ini bermanfaat bagi penulis sendiri
maupun pembaca sekalian.
Penulis
ii
DAFTAR ISI
DAFTAR GAMBAR
DAFTAR TABEL
BAB I
PENDAHULUAN
I.1 Latar Belakang
OOP (Object Oriented Programming) adalah suatu metode pemrograman
yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk
mempermudah pengembangan program dengan cara mengikuti model yang telah
ada di kehidupan sehari-hari. Jadi setiap bagian dari suatu permasalahan adalah
objek, nah objek itu sendiri merupakan gabungan dari beberapa objek yang lebih
kecil lagi. Saya ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu
sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda,
baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek
yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling
mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program,
sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek
itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.
OOP (Object Oriented Programming) sendiri menggunakan JAVA sebagai
build pemrogramnya, dan dia juga dapat berorientasi langsung dengan object yang
lebih nyata. Berbeda dengan DEV C++ yang menggunakan bahasa C++ sebagai
bahasa pemrogramannya dan object-nya hanya sebatas tulisan saja, serta Delphi
hampir sama dengan OOP, namun Delphi menggunakan bahasa C.
OOP (Object Oriented Programming) juga dapat dimanfaatkan untuk
mempermudah pengembangan program agar lebih selaras dengan yang diinginkan.
Selain itu, OOP dapat membuat kita berinteraksi dengan Objek Programing dan
dapat mengeplikasikan kehidupan sehari-hari ke dalam sebuah program.
Tanggal : 21-12-2020
I-2
I.3 Tujuan
1. Pratikan mampu project sederhana dengan menerapkan Object Oriented
Programing (OOP) pada script yang digunakan dalam project.
2. Pratikan mampumembuat program dengan menggunakan nahasa
pemrograman yang berbasis objek.
3. Pratikan mampu menerapkan Object Oriented Programing (OOP).
I.4 Manfaat
1. Praktikan dapat menggunakan Object Oriented Programing (OOP)
untuk membuat pekerjaan menjadi efisien.
2. Praktikan dapat menerapkan Object Oriented Programing (OOP) dalam
kehidupan sehari - hari.
3. Praktikan dapat dimudahkan dalam memecah masalah menggunakan
Object Oriented Programing (OOP).
Tanggal : 21-12-2020
II - 1
BAB II
KONSEP DASAR OOP
Jumlah Pertemuan : 2 x 60 menit
Tanggal : 21-12-2020
II - 2
yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim
pesan kepada objek yang lain.
B. Class & Object
a. Class merupakan rancangan dari sebuah objek yang mendefenisikan
atribut (data) dan method (perilaku) umum dari suatu objek tertentu.
• Driver Class : Class yang menggunakan main atau dapat di
running.
• Object Class : Class yang tidak ada main, biasanya digunakan
untuk mengisi suatu method yang nantinya akan di panggil di
Driver Class.
Contoh :
KELAS MANUSIA
Data/atribut : Tinggi, Berat Badan, Sidik Jari, Warna Rambut
Method : Cara Berjalan, Cara makan, Cara Marah
Class dideklarasikan sebagai berikut:
class nama_class{
//deklarasi atribut
//deklarasi method
}
Keterangan :
1. Class adalah kata kunci yang digunakan untuk mendeklrasikan
suatu kelas.
2. Nama_Class merupakan indentifier.
3. Atribut bisa berjumlah 0 atau lebih.
4. Method bisa berjumlah 0 atau lebih.
b. Attribute adalah data/variabel yang akan dimiliki oleh objek dari kelas
tersebut. Atribut dapat memiliki hak akses private, public maupun
protected (akan dijelaskan di bab 3).
Attribute dideklarasikan sebagai berikut:
Hak_akses tipe_data
nama_atribut;
Contoh :
Public int_jumlahRoda;
Nama Aslab Pengajar : TTD :
Sujud Satwikayana
Tanggal : 21-12-2020
II - 3
c. Method adalah aksi atau tindakan yang dapat dilakukan oleh objek
dari suatu kelas.
Method terdiri dari 2 jenis, yakni Method void dan Method Non Void.
1. Method Void (Procedure)
Merupakan method yang tidak memiliki nilai balik
Syntax :
Void cetak_nilai() //tipe_method nama_method
{
System.out.println(“HELLO WORLD !”);//badan
method
}
d. Object adalah realisasi dari class. Ketika kita membuat sebuah class
bukan berarti kita membuat sebuah objek. Ciri-ciri pembuatan objek
adalah dengan adanya operator “new”. Terdapat 2 cara dalam
pembuatan objek.
Object dideklarasikan sebagai berikut :
NamaClass namaObjek = new NamaKosntruktor();
Contoh :
Penilaian nilaiMHS = new Penilaian();
Tanggal : 21-12-2020
II - 4
Mahasiswa Class
+ String nim, nama, prodi, angktn; Attribute
+ void dataNIM(String Nim)
+ void dataNama(String Nama)
+ void dataProdi(String Prodi)
+ void dataAngkatan(String Angktn)
Method
+ String cetakNIM()
+ String cetakNama()
+ String cetakProdi()
+ String cetakAngkatan()
String cetakNIM(){
return nim;
Tanggal : 21-12-2020
II - 5
}
String cetakNama(){
return nama;
}
String cetakProdi(){
return prodi;
}
String cetakAngkatan(){
return angktn;
}
Tanggal : 21-12-2020
II - 6
Text
Name btnKTM
10 jButton1
Text Cetak KTM
Name memoKTM
11 jTextArea
Text
Hasil Tampilan :
Tanggal : 21-12-2020
II - 7
Analisa :
Pada program diatas mempunyai class Mahasiswa yang ber tipe data
String. Memiliki variabel nim, nama, prodi, dan angkatan. Pada method
terdapat fungsi void dan non void. Fungsi void digunakan untuk menyimpan
inputan yang berada pada GUI_Mahasiswa dan fungsi non void digunakan
untuk menampilkan hasil ahkir dari inputan ke dalam teks Area. Pada button
GUI_Mahasiswa kita berikan kode agar ketika kita tekan button maka secara
otomatis menampilkan apa yang telah di inputkan.
II.4 Tugas Rumah 1 :
Membuat class Keuangan_Bengkel dan GUI_ KeuanganBengkel
Judul : Pengolahan Keuangan Bengkel
Diagram Class (Class Keuangan_Bengkel) :
Keuangan_Bengkel Class
+ String Nama_Pelanggan,
Kode_Kendaraan, jenis_kendaraan, Attribute
Biaya_servis;
+ void dataNama(String Nama)
+ void dataKode(String Kode)
+ void dataJenis(String Jenis)
+ void dataServis(String Servis)
Method
+ String cetakNama()
+ String cetakKode()
+ String cetakJenis()
+ String cetakServis()
Tanggal : 21-12-2020
II - 8
String cetakNama(){
return Nama_Pelanggan;
}
String cetakKode(){
return Kode_Kendaraan;
}
String cetakjenis(){
return jenis_kendaraan;
}
String cetakServis(){
return Biaya_Servis;
}
}
Tanggal : 21-12-2020
II - 9
Text memoHasil
10 jTextArea
Name
Text btnProses
11 jButton1
Name Proses
Hasil Tampilan :
Tanggal : 21-12-2020
II - 10
Analisa :
Pada Program diatas di tombol button Proses dimana field akan
mengambil data dari obj dari class Keuangan_Bengkel, dimana di class
barang terdapat method yang mereturn Variabel yang sebenarnya di private
dimana jika Variabel private tidak bisa di akses dari class lain namun
adanya method ini agar bisa di akses.
II.5 Kesimpulan
1. Didalam pemrograman berorientasi objek ada beberapa hal dasar yang
harus dipahami yaitu Class, Attribute, Method dan Object.
2. Pada pemrograman berorientasi objek terdapat dua jenis method dalam
pembuatan program yaitu Method void dan Method non-void.
3. Atribut merupakan ciri-ciri yang ada pada suatu class, sementara method
adalah aksi yang bisa dilakukan oleh suatu class.
Tanggal : 21-12-2020
III - 1
BAB III
KONSTRUKTOR DAN ENKAPSULASI
Jumlah Pertemuan : 2 x 60 menit
Tanggal : 21-12-2020
III - 2
Keterangan:
a. “NamaClass” merupakan nama class dapat di ganti sesuai keinginan
b. “public NamaClass()” merupakan nama method konstruktor nama
harus sesuai dengan nama class yang di naungi.
c. Nantinya ketika penginisailasian object terjadi maka data dari atribut
akan otmatis terisi oleh data yang ada dalam method konstruktor.
C. Enkapsulasi
Enkapsulasi merupakan proses pemaketan objek beserta methodnya
untuk menyembunyikan rincian implementasi dari pemakai/objek lainnya.
Inti dari enkapsulasi atau pengkapsulan adalah ketidaktahuan apa yang ada
dalam suatu objek dan bagaimana pengimplementasiannya. Yang
dibutuhkan hanyalah apa kegunaan, bagaimana cara memakainya dan apa
yang akan terjadi.
Dengan enkapsulasi, maka programmer akan dibatasi dalam
mengakses suatu atribut yang dimiliki oleh suatu class. Kemampuan ini
ditujukan untuk mendapatkan desain suatu software yang baik dan untuk
keamanan software itu sendiri. Segala yang tidak perlu diketahui oleh yang
lain, tidak perlu dipublish.
Salah satu implementasi dari enkapsulasi adalah adanya setter dan
getter untuk suatu atribut dalam suatu kelas. Jika pada suatu kelas terdapat
atribut a dan b, maka terdapat method setA-getA dan setB-getB. Bentuk
lain dari enkapsulasi adalah memasukkan nilai atribut dengan
menggunakan konstruktor.
D. Hak Akses (Access Modifier)
a. Public
Dengan mendeklarasikan data dan method dengan tingkat akses
public, maka data dan method dapat diakses semua kelas yang ada di
dalam program, baik yang merupakan kelas turunan maupun kelas
yang tidak mempunyai hubungan sama sekali.
Bentuk cara deklarasi hak akses Public :
public String atribut1;//pada atribut
public int luas(){...}//pada method
Tanggal : 21-12-2020
III - 3
b. Private
Dengan mendeklarasikan data dan method menggunakan tingkat
akses private, maka data dan method tersebut hanya dapat diakses oleh
kelas tersebut. Sehingga data dan method tersebut tidak dapat diakses
oleh kelas lain.
Bentuk cara deklarasi hak akses Private :
private String atribut1;//pada atribut
private int luas(){...}//pada method
c. Protected
Dengan mendeklarasikan data dan method menggunakan tingkat
akses protected, maka data dan method tersebut hanya dapat diakses
oleh kelas yang memilikinya dan kelas-kelas yang masih memiliki
hubungan turunan.
Bentuk cara deklarasi hak akses Protected :
protected String atribut1;//pada atribut
protected int luas(){...}//pada method
d. Default (tidak ada modifier)
Untuk hak akses default ini, sebenarnya hanya ditujukan untuk class
yang ada dalam satu paket, atau istilahnya hak akses yang berlaku untuk
satu folder saja(tidak berlaku untuk class yang tidak satu
folder/package)
Bentuk cara deklarasi hak akses Default :
String atribut1;//pada atribut
int luas(){...}//pada method
Berikut adalah tabel hak akses dari tiap jenis Enkapsulasi :
Tabel 3.1 Hak akses pada enkapkulasi
HAK AKSES PUBLIC PROTECTED DEFAULT PRIVATE
Dari kelas yang √ √ √ √
sama
Dari kelas lain √ √ √ ×
didalam paket
Dari kelas lain diluar √ × × ×
paket
Dari kelas turunan √ √ √ ×
didalam paket
Dari kelas turunan √ × × ×
diluar paket
Tanggal : 21-12-2020
III - 4
public Data_Matkul(){
kode = "IF3304";
matkul = "OOP";
nama = "Rizky Aditya";
}
Tanggal : 21-12-2020
III - 5
Tanggal : 21-12-2020
III - 6
Tampilan Hasil :
Tanggal : 21-12-2020
III - 7
double tampilNA(){
return nilaiAkhir();
}
Tanggal : 21-12-2020
III - 8
Tanggal : 21-12-2020
III - 9
Name btnNA
10 jButton1
Text Hasil Nilai Akhir
Name memoNilai
11 jTextArea
Text
Text Praktikum
12 JCheckBox
Name cek_prak
Tampilan Hasil :
Tanggal : 21-12-2020
III - 10
Keuangan_Bengkel Class
+ String Id_Pelanggan, Kode_Kendaraan,
Attribute
No._Servis, Spare_Parts, Harga;
+ void dataId(String Id)
+ void dataNo(String No)
+ void dataSP(String SP)
+ void dataHg(String Hg)
Method
+ String cetakId()
+ String cetakNo()
+ String cetakSP()
+ String cetakHG()
String CetakId(){
return Id_Pelanggan;
}
String CetakNo(){
return No_Servis;
}
String CetakSP(){
return Spare_Parts;
}
String CetakHg(){
return Harga;
}
}
Tanggal : 21-12-2020
III - 11
Tanggal : 21-12-2020
III - 12
private void
btnProsesActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
memoHasil.setText(" ");
Keuangan_Bengkel data = new Keuangan_Bengkel();
data.dataId(txtId.getText());
data.dataNo(txtNo.getText());
data.dataSP(txtSP.getText());
data.dataHarga(txtHg.getText());
Tampilan Hasil :
Tanggal : 21-12-2020
III - 13
Keuangan_Bengkel Class
+ int Pendapatan_Servis, Pendapatan_Komisi, Beban_Gaji,
Beban_iklan, Beban_Gedung, Pajak_Penghasilan; Attribute
+ private int Jumlah_pendapatan, Jumlah_Beban, Laba_Bersih;
+ public void setPendapatan_Servis(int Pendapatan_Servis)
+ public void setPendapatan_Komisi(int Pendapatan_Komisi)
+ public void setPendapatan_Komisi(int Pendapatan_Komisi)
+ public void setBeban_Gaji(int Beban_Gaji)
+ public void setBeban_iklan(int Beban_iklan)
+ public void setBeban_Gedung(int Beban_Gedung)
+ public void setBeban_Gedung(int Beban_Gedung)
+ public void setPajak_Penghasilan(int Pajak_Penghasilan)
Tanggal : 21-12-2020
III - 14
double hasilJP(){
return Jumlah_Pendapatan();
}
Tanggal : 21-12-2020
III - 15
double hasilJB(){
return Jumlah_Beban();
}
double hasilLaba(){
return Laba_Bersih();
}
Tanggal : 21-12-2020
III - 16
Text
Name txtBi
11 jTextField4
Text
Name txtG
12 jTextField5
Text
Name txtPP
13 jTextField6
Text
Name btnHasil
14 jButton1
Text HITUNG
Name memoUang
15 jTextArea
Tetx
data.setPendapatan_Servis(Integer.parseInt(txtPS.getText()))
;
data.setPendapatan_Komisi(Integer.parseInt(txtPK.getText()))
;
data.setBeban_Gaji(Integer.parseInt(txtBG.getText()));
data.setBeban_iklan(Integer.parseInt(txtBI.getText()));
data.setBeban_Gedung(Integer.parseInt(txtG.getText()));
data.setPajak_Penghasilan(Integer.parseInt(txtPP.getText()))
;
Tanggal : 21-12-2020
III - 17
Tampilan Hasil :
Tanggal : 21-12-2020
III - 18
III.7 Kesimpulan
1. Enkapsulasi merupakan proses pemaketan objek beserta methodnya untuk
menyembunyikan rincian implementasi dari pemakai/objek lainnya.
2. Dengan mendeklarasikan data dan method dengan tingkat akses public,
maka data dan method dapat diakses semua kelas yang ada di dalam
program.
3. Dengan mendeklarasikan data dan method menggunakan tingkat akses
private, maka data dan method tersebut hanya dapat diakses oleh kelas
tersebut.
4. Untuk hak akses default ini, sebenarnya hanya ditujukan untuk class yang
ada dalam satu paket, atau istilahnya hak akses yang berlaku untuk satu
folder saja(tidak berlaku untuk class yang tidak satu folder/package).
Tanggal : 21-12-2020
IV - 1
BAB IV
INHERITANCE, OVERIDDING DAN OVERLOADING
Jumlah : 2 x 60 menit
Pertemuan
Tujuan Praktikum : 1. Praktikan mampu memahami tentang hak akses
(Enkapsulasi).
2. Praktikan mampu mengimplementasikan konsep
Inheritance kedalam program.
3. Praktikan mampu memahami dan membuat
method override.
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.
Tanggal : 21-12-2020
IV - 2
Tanggal : 21-12-2020
IV - 3
Contoh:
Agar kelas turunan / subclass dapat mewarisi atribut dan method dari
super class harus menggunakan keyword “extends” dan diikuti dengan
“nama_super_class”.
Tanggal : 21-12-2020
IV - 4
Contoh:
2. Overriding
Overriding method adalah kemampuan dari subclass untuk
memodifikasi method dari superclass-nya, dengan cara mendefinisikan
kembali method superclass-nya. Namun masih dengan nama dan
parameter yang sama tetapi isi (statement) berbeda.
Aturan Overriding:
a. Parameter yang terdapat pada method Overriding di subclass harus
sama dengan parameter yang terdapat pada parent class.
b. Aturan hak akses, hak akses method Overriding di subclass tidak
boleh lebih ketat di bandingkan dengan hak akses method pada
parent class.
Kedudukan Access Modifier, urutan tertinggi ke rendah: (Tertinggi)
Public → Default → Protected → Private (Terendah)
Tanggal : 21-12-2020
IV - 5
Contoh :
Source code pada Super Class :
Source code pada subclass dengan override method pada super class :
Tanggal : 21-12-2020
IV - 6
Tanggal : 21-12-2020
IV - 7
txtNP.setEnabled(true);
}
else
{
txtNP.setEnabled(false);
}
}
Tanggal : 21-12-2020
IV - 8
Text
Name txtNT
8 jTextField3
Text
jTextField4 Name txtNP
9
Text
Name btnNA
10 jButton1
Text Hasil Nilai Akhir
Name memoNilai
11 jTextArea
Text
Name cek_prak
12 JCheckBox
Text Praktikum
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
Tanggal : 21-12-2020
IV - 9
{
memoNilai.append("Nilai Akhir Mata Kuliah
\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.tampilNA());
}
Tampilan Hasil :
Tanggal : 21-12-2020
IV - 10
Tanggal : 21-12-2020
IV - 11
Tanggal : 21-12-2020
IV - 12
Tampilan Hasil :
Tanggal : 21-12-2020
IV - 13
Keuangan_Bengkel Class
+ public String Kode,Sparepart;
Attribute
+ double Harga;
+ public void setKode(String Kode)
+ public void setSparepart(String Sparepart)
+ public void setHarga(double Harga)
Method
+ public String getKode()
+ public String getSparepart()
+ public double getHarga()
Promo1 Promo1
+ double diskon1; + double diskon1;
+ public String getKode() + public String getKode()
Tanggal : 21-12-2020
IV - 14
Tanggal : 21-12-2020
IV - 15
if(cmb_pilih.getSelectedIndex()== 0){
txtHP.setText(Double.toString(data1.HargaPromo1()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Promo2 data2 = new Promo2();
data2.setHarga(Integer.parseInt(txtHA.getText()));
Nama Aslab Pengajar : TTD :
Sujud Satwikayana
Tanggal : 21-12-2020
IV - 16
txtHP.setText(Double.toString(data2.HargaPromo2()));
}
}
Tampilan Hasil :
Tanggal : 21-12-2020
IV - 17
SparePart Class
+ double Harga_Velg, diskon,hasil; Attribute
+ public void setHarga_Velg(double
Harga_Velg)
+ public void setDiskon(double diskon)
Ban
+ double Harga_Ban;
Tanggal : 21-12-2020
IV - 18
double Harga_Promo(){
hasil = getHarga_Velg() -
(getHarga_Velg()*(diskon/100));
return hasil;
}
}
@Override
public String kode() {
return "BT66E";
}
@Override
public String merk() {
return "Maxxis Extramax";
}
@Override
public double getDiskon() {
return diskon;
}
Nama Aslab Pengajar : TTD :
Sujud Satwikayana
Tanggal : 21-12-2020
IV - 19
@Override
public void setDiskon(double diskon) {
this.diskon = diskon;
}
@Override
double Harga_Promo(){
hasil = getHarga_Ban() -
(getHarga_Ban()*(diskon/100));
return hasil;
}
}
Tanggal : 21-12-2020
IV - 20
Text txtHA
Editbale Uncheck
Name
10 jTextField4
Text txtDiskon
Name
11 jTextField5
Text txtHA
[0] = Velg
Model [1] = Ban
12 JComboBox
Name Cmb_pilih
Name btnProses
13 jButton1
Text PROSES
data.setDiskon(Integer.parseInt(txtDiskon.getText()));
txtHP.setText(Double.toString(data.Harga_Promo()));
}if (cmb_pilih.getSelectedIndex()== 1){
Ban data2 = new Ban();
data2.Harga_Ban = 850000;
txtKode.setText(data2.kode());
txtMerk.setText(data2.merk());
txtHA.setText(Double.toString(data2.Harga_Ban));
data2.setDiskon(Integer.parseInt(txtDiskon.getText()));
txtHP.setText(Double.toString(data2.Harga_Promo()));
}
Tanggal : 21-12-2020
IV - 21
Tampilan Hasil :
Analisa :
Pada program diatas menerapkan method overriding pada classBan. Untuk
method overriding tersebut di berikan nama yang sama seperti method yang
telah tersedia di induk class yaitu double Harga_Promo() dan diatas method
tersebut diberikan kata kunci perintah @Override agar menunjukkan bahwa
method tersebut telah mengalami overriding seperti gambar diatas.
Tanggal : 21-12-2020
IV - 22
IV.7 Kesimpulan
1. Inheritance (pewarisan) merupakan salah satu konsep dasar dari OOP.
Inheritance ini mengadopsi dunia rill dimana suatu entitas/objek dapat
mempunyai entitas turunan/objek turunan. Jadi konsep inheritance
adalah dimana sebuah kelas dapat mempunyai kelas turunan (subclass).
2. Overriding adalah mendefenisikan suatu method di dalam kelas
turunan yang nama dan daftar parameternya sama persis dengan yang
terdapat dalam kelas induk, maka hal tersebut dikatakan telah melakukan
override (mengesampingkan) method yang tersimpan dalam kelas
induk.
3. Overloading adalah sebuah kemampuan yang membolehkan sebuah class
mempunyai 2 atau lebih method dengan nama yang sama, yang
membedakan adalah parameternya. Pada method overloading perbedaan
parameter mencakup : Jumlah parameter. Tipe data dari parameter.
Tanggal : 21-12-2020
V-1
BAB V
ABSTRACT, POLIMORFISME DAN EXCEPTION
HANDLING
Jumlah : 2 x 60 menit
Pertemuan
Tujuan Praktikum : 1. Praktikan dapat mengetahui fungsi atau kegunaan
kelas Abstrak dan kelas Interface.
2. Praktikan mampu membuat kelas Abstrak dan
kelas Interface pada java.
3. Praktikan mampu memahami dan
mengimplementasikan polimorfisme ke dalam
program.
Alat / bahan : 1. Seperangkat computer.
2. Perangkat lunak: Netbeans.
3. Modul Praktikum OOP 2020.
Contoh penerapan :
Tanggal : 21-12-2020
V-2
Contoh penerapan :
Tanggal : 21-12-2020
V-3
Sub Class 1
Tanggal : 21-12-2020
V-4
Sub Class 2
Main Class
Keterangan :
a. Instansiasi : pembuatan objek dari suatu class (objek “induk” dari
Super Class).
b. induk merupakan objek polimorfisme dari class Super_Class,
kemudian diisi dengan objek dari Sub_Class1
c. Method nama_method() adalah overriden method dari kelas
Super_Class, yang di override sub class.
d. Ketika dipanggil induk.nama_method(), yang dimaksud adalah
nama_method() dari Super_Class, namun ketika di running, yang
ditampilkan adalah method nama_method() dari Sub_Class1
(karena objek induk diinstasiasi sebagai objek dari Sub_Class).
Begitu juga pada Sub_Class2
2. Exception
Exception Handling merupakan mekanisme yang paling
diperlukan dalam menangani error yang terjadi pada saat runtime
(program berjalan) atau yang lebih dikenal dengan sebutan runtime
error.
Secara umum, adanya kesalahan / error yang terjadi pada program
pada saat runtime dapat menyebabkan program berhenti atau hang.
Tanggal : 21-12-2020
V-5
Tanggal : 21-12-2020
V-6
b) Multiple Catch
Dengan menggunakan multiple catch dapat menangani lebih
dari 1 exception.
Berikut bentuk penulisan Multiple catch :
c) Finally
Block finally adalah block yang di tambahkan di akhir block
try-catch. Finally akan selalu dijalankan setelah try-catch baik
terjadi exception atau tidak.
Berikut bentuk penulisan finally :
Tanggal : 21-12-2020
V-7
Tanggal : 21-12-2020
V-8
Tanggal : 21-12-2020
V-9
Tampilan Hasil :
Tanggal : 21-12-2020
V - 10
Penilaian Class
+ String NIM, kode_mk; Attribute
+ int nilaiTugas, nilaiPrak;
+ private double nilaiAkhirPrak()
+ double tampilNA() Method
+ double nilaiAkhir()
Penilaian_NonPrak
+ double nilaiAkhir()
double tampilNA(){
return nilaiAkhirPrak();
}
abstract double nilaiAkhir();
}
Tanggal : 21-12-2020
V - 11
nilai.NIM = txtNIM.getText();
nilai.kode_mk = txtKodeMK.getText();
if (cek_prak.isSelected()){
nilai.nilaiTugas =
Integer.parseInt(txtNT.getText());
nilai.nilaiPrak =
Integer.parseInt(txtNP.getText());
memoNilai.append("Nilai Akhir Mata Kuliah
\n");
Tanggal : 21-12-2020
V - 12
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("Nilai Praktikum :
"+nilai.nilaiPrak +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.tampilNA());
}else {
nilai.nilaiTugas =
Integer.parseInt(txtNT.getText());
memoNilai.append("Nilai Akhir Mata Kuliah
\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("NIM : "+nilai.NIM +"\n");
memoNilai.append("Kode MK : "+nilai.kode_mk
+"\n");
memoNilai.append("Nilai Tugas :
"+nilai.nilaiTugas +"\n");
memoNilai.append("---------------------------
-----------\n");
memoNilai.append("Nilai Akhir :
"+nilai.nilaiAkhir());
}
}
Tampilan Hasil :
Tanggal : 21-12-2020
V - 13
Analisa :
Program diatas menerapkan method polymorfis,e pada pada deklarasi
variabel nilai pada class Penilaian_NonPrak ,merupakan program untuk
menghitung nilai Mahasiswa, pada class “Penilaian_NonPrak.java”
merupakan subclass atau turunan dari kelas abstract Penilaian.java. Check
Box berfungsi untuk menentukan apakah Nilai praktikum ikut dalam
perhitungan atau tidak. Jika Nilai praktikum diikutkan maka yang dicetak
adalah nilaiAkhir(), tetapi jika Nilai praktikum tidak diikutkan, maka yang di
cetak adalah tampilNA().
Tanggal : 21-12-2020
V - 14
Tampilan Hasil :
Tanggal : 21-12-2020
V - 15
Tanggal : 21-12-2020
V - 16
Tanggal : 21-12-2020
V - 17
@Override
double Total_Pembayaran(){
return getKarburator() + getOli_mesin() +
getKelistrikan() + getSwitch_Rem();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
V - 18
@Override
double Total_Pembayaran(){
return getOli_mesin() + getKarburator();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
V - 19
Name
10 jTextField3 Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5
Text txtK
Name btnProses
13 jButton1
Text PROSES
[0] = Paket A
model [1] = Paket B
12 JComboBox
Name cmb_pilih
Name Hasil
13 jTextArea
Text
txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Servis_PaketB B = new Servis_PaketB();
txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}
if (cmb_pilih.getSelectedIndex() == 0 ){
txtTP.setText(Double.toString(A.Total_Pembayaran()));
A.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(A.Kembalian()));
Tanggal : 21-12-2020
V - 20
txtTP.setText(Double.toString(B.Total_Pembayaran()));
B.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(B.Kembalian()));
}
}
Tanggal : 21-12-2020
V - 21
Tampilan Hasil :
Analisa :
Pada program diatas terdapat class Data_Service sebagai super class yang
menerapkan method abstract serta class PaketA dan PaketB sebagai sub class,
dimana kelas abstrack harus menurunkan method ke subclassnya dimana
menurunkan 2 method abstract double Total Pembayaran dan abstract double
kembalian seperti gambar diatas.
Tanggal : 21-12-2020
V - 22
Tanggal : 21-12-2020
V - 23
Tanggal : 21-12-2020
V - 24
@Override
double Total_Pembayaran(){
return getKarburator() + getOli_mesin() +
getKelistrikan() + getSwitch_Rem();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
V - 25
@Override
double Total_Pembayaran(){
return getOli_mesin() + getKarburator();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
V - 26
Text txtMotor
Name
10 jTextField3 Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5
Text txtK
Name btnProses
13 jButton1
Text PROSES
[0] = Paket A
model [1] = Paket B
12 JComboBox
Name cmb_pilih
Name Hasil
13 jTextArea
Text
txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Servis_PaketB B;
B = new Servis_PaketB();
txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}
if (cmb_pilih.getSelectedIndex() == 0 ){
txtTP.setText(Double.toString(A.Total_Pembayaran()));
try{
Tanggal : 21-12-2020
V - 27
A.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(A.Kembalian()));
}
catch(NumberFormatException data1){
JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor +
"\n");
Hasil.append("Service Paket A : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + A.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + A.karburator + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem
Kelistrikan\t: Rp." + A.kelistrikan + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan
Switch Rem\t: Rp." + A.Switch_Rem + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}
}else if (cmb_pilih.getSelectedIndex() == 1 ){
Servis_PaketB B;
B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());
txtTP.setText(Double.toString(B.Total_Pembayaran()));
try{
B.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(B.Kembalian()));
}
catch(NumberFormatException data2){
JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");
Tanggal : 21-12-2020
V - 28
Tampilan Hasil :
Analisa :
Pada program diatas terdapat class Data_Service sebagai super class serta
class PaketA dan PaketB sebagai sub class, dimana kelas abstrack harus
menurunkan method ke subclassnya dimana menurunkan 2 method abstract
double Total Pembayaran dan abstract double kembalian seperti gambar
diatas. Serta menerapkan method Exception Handling ketika perintah yang
berada di dalam kondisi “Try” di jalankan terjadi suatu kesalahan karena pada
Uang pembayaran tidak disisi atau kosong, maka secara otomatis pesan
kesalahan seperti gambar diatas akan keluar dan program akan di alihkan
menuju ke kondisi “Catch”.
Nama Aslab Pengajar : TTD :
Sujud Satwikayana
Tanggal : 21-12-2020
V - 29
Tanggal : 21-12-2020
V - 30
Tanggal : 21-12-2020
V - 31
@Override
double Total_Pembayaran(){
return getKarburator() + getOli_mesin() +
getKelistrikan() + getSwitch_Rem();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
V - 32
@Override
double Total_Pembayaran(){
return getOli_mesin() + getKarburator();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
V - 33
Text txtUP
Name
12 jTextField5
Text txtK
Name btnProses
13 jButton1
Text PROSES
[0] = Paket A
model [1] = Paket B
12 JComboBox
Name cmb_pilih
Name Hasil
13 jTextArea
Text
txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 1){
Servis_PaketB B;
B = new Servis_PaketB();
txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}
if (cmb_pilih.getSelectedIndex() == 0 ){
txtTP.setText(Double.toString(A.Total_Pembayaran()));
try{
A.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(A.Kembalian()));
}
catch(NumberFormatException data1){
JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
Tanggal : 21-12-2020
V - 34
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor +
"\n");
Hasil.append("Service Paket A : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + A.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + A.karburator + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem
Kelistrikan\t: Rp." + A.kelistrikan + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan
Switch Rem\t: Rp." + A.Switch_Rem + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}
}else if (cmb_pilih.getSelectedIndex() == 1 ){
Servis_PaketB B;
B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());
txtTP.setText(Double.toString(B.Total_Pembayaran()));
try{
B.setPembayaran(Double.parseDouble(txtUP.getText()));
txtK.setText(Double.toString(B.Kembalian()));
}
catch(NumberFormatException data2){
JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + B.Jenis_Motor +
"\n");
Hasil.append("Service Paket B : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + B.oli_mesin + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + B.karburator + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Tanggal : 21-12-2020
V - 35
Tampilan Hasil :
Tanggal : 21-12-2020
V - 36
V.8 Kesimpulan
1. Abstract Class adalah sebuah class yang tidak bisa di-instansiasi (tidak
bisa dibuat menjadi objek) dan berperan sebagai ‘kerangka dasar’ bagi
class turunannya. Di dalam abstract class umumnya akan memiliki
abstract method.
2. Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam OOP
adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk”
method yang berbeda- beda meskipun namanya sama.
3. Exception Handling merupakan mekanisme yang paling diperlukan dalam
menangani error yang terjadi pada saat runtime (program berjalan) atau
yang lebih dikenal dengan sebutan runtime error.
Tanggal : 21-12-2020
VI - 1
BAB VI
INTERFACE DAN PENGENALAN DATABASE
Jumlah Pertemuan : 2 x 60 menit
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 :
Tanggal : 21-12-2020
VI - 3
Tanggal : 21-12-2020
VI - 4
Tanggal : 21-12-2020
VI - 5
Tanggal : 21-12-2020
VI - 6
Text Ubah
Name btnHapus
15 JButton4
Text Hapus
Name btnBatal
16 JButton5
Text Batal
Name btnCari
17 JButton6
Text Cari
Name btnNIM
18 JButton7
Text NIM
Name btnNIM
19 JButton8
Text NIM
20 JTable Name tabel_data
Tampilan Hasil:
Tanggal : 21-12-2020
VI - 7
Analisa :
Pada program diatas telah ditambahkan button NIM, kode MK, Simpan,
Ubah, Hapus, Batal, Cari. Dan ditambahkan juga method batal pada GUI yang
digunakan untuk menghapus semua data yang sudah diinputkan pada textfield
sehingga bisa diisi ulang dengan data baru.
Tanggal : 21-12-2020
VI - 8
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
Logger.getLogger(GUI_Mahasiswa1.class.getName()).log(Level.
SEVERE,null, ex);
}
catch (SQLException e){
Logger.getLogger(GUI_Mahasiswa1.class.getName()).log(Level.
SEVERE,null, e);
}
catch (Exception es){
Logger.getLogger(GUI_Mahasiswa1.class.getName()).log(Level.
SEVERE,null, es);
}
}
Tanggal : 21-12-2020
VI - 9
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}
Tanggal : 21-12-2020
VI - 10
refresh();
}
Tanggal : 21-12-2020
VI - 11
Tanggal : 21-12-2020
VI - 12
Name btnCari
15 jButton5
Text Cari
Name btnNilai
16 jButton5
Text Form Nilai
17 JTable Name tabel_data
Tampilan Hasil:
Tanggal : 21-12-2020
VI - 13
Tanggal : 21-12-2020
VI - 14
Tanggal : 21-12-2020
VI - 15
Tanggal : 21-12-2020
VI - 16
@Override
public double oli_mesin() {
return 75000;
}
@Override
public double karburator() {
return 50000;
}
@Override
public double kelistrikan() {
return 150000;
}
@Override
public double Switch_Rem() {
return 250000;
}
@Override
double Total_Pembayaran(){
return karburator() + oli_mesin() + kelistrikan() +
Switch_Rem();
}
Tanggal : 21-12-2020
VI - 17
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
@Override
public double oli_mesin() {
return 75000;
}
@Override
public double karburator() {
return 50000;
}
@Override
double Total_Pembayaran(){
return oli_mesin() + karburator();
}
@Override
double Kembalian(){
return getPembayaran() - Total_Pembayaran();
}
}
Tanggal : 21-12-2020
VI - 18
Tanggal : 21-12-2020
VI - 19
[0] = MENU
model [1] = Paket A
15 JComboBox
[2] = Paket B
Name cmb_pilih
Name Hasil
16 jTextArea
Text
txtTP.setText(Double.toString(A.Total_Pembayaran()));
}else if (cmb_pilih.getSelectedIndex() == 2){
Servis_PaketB B;
B = new Servis_PaketB();
txtTP.setText(Double.toString(B.Total_Pembayaran()));
}
}
if (cmb_pilih.getSelectedIndex() == 1 ){
Tanggal : 21-12-2020
VI - 20
txtTP.setText(Double.toString(A.Total_Pembayaran()));
try{
A.setPembayaran(Double.parseDouble(txtUP.getText()));
if (A.Pembayaran < A.Total_Pembayaran()){
JOptionPane.showMessageDialog(getRootPane(),"UangyaKurang",
"MAAF :)",2);
}else{
txtK.setText(Double.toString(A.Kembalian()));
}
}
catch(NumberFormatException data1){
JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
A.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + A.Jenis_Motor +
"\n");
Hasil.append("Service Paket A : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + A.oli_mesin() + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + A.karburator() + ",-" + "\n");
Hasil.append(" Pemeriksaan Sistem
Kelistrikan\t: Rp." + A.kelistrikan() + ",-" + "\n");
Hasil.append(" Pemeriksaan dan Penyetelan
Switch Rem\t: Rp." + A.Switch_Rem() + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
A.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
A.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
A.Kembalian() + ",-" + "\n");
}
}else if (cmb_pilih.getSelectedIndex() == 2 ){
Servis_PaketB B;
B = new Servis_PaketB();
B.setNama_Pelanggan(txtNama.getText());
B.setJenis_Motor(txtMotor.getText());
txtTP.setText(Double.toString(B.Total_Pembayaran()));
try{
B.setPembayaran(Double.parseDouble(txtUP.getText()));
if (B.Pembayaran < B.Total_Pembayaran()){
Tanggal : 21-12-2020
VI - 21
JOptionPane.showMessageDialog(getRootPane(),"UangyaKurang",
"MAAF :)",2);
}else{
txtK.setText(Double.toString(B.Kembalian()));
}
}
catch(NumberFormatException data2){
JOptionPane.showMessageDialog(getRootPane(),"HARUS
DIISI!!!!","BAHAYA!!!",2);
}finally{
Hasil.append("\t DATA
SERVICE\n");
Hasil.append("Nama Pelanggan : " +
B.Nama_Pelanggan + "\n");
Hasil.append("Motor : " + B.Jenis_Motor +
"\n");
Hasil.append("Service Paket B : \n");
Hasil.append(" Pemeriksaan Oli Mesin\t\t:
Rp." + B.oli_mesin() + ",-" + "\n");
Hasil.append(" Pembersihan Karburator\t\t:
Rp." + B.karburator() + ",-" + "\n");
Hasil.append("\t\t\t ____________+\n");
Hasil.append("Total Pembayaran\t\t: Rp." +
B.Total_Pembayaran() + ",-" + "\n");
Hasil.append("Uang Pembayaran \t: Rp." +
B.Pembayaran + ",-" + "\n");
Hasil.append("\t\t___________-\n");
Hasil.append("Kembalian\t\t: Rp." +
B.Kembalian() + ",-" + "\n");
}
}else {
JOptionPane.showMessageDialog(getRootPane(),
"Pilih MENU!!", "WARNING",2);
}
}
Tampilan Hasil :
Tanggal : 21-12-2020
VI - 22
Analisa :
Pada program diatas terdapat class Data_Service sebagai super class
serta class PaketA dan PaketB sebagai sub class, dimana kelas abstrack harus
menurunkan method ke subclassnya dimana menurunkan 2 method abstract
double Total Pembayaran dan abstract double kembalian ,serta PaketA dan
PaketB memeliki struktur yang sama dengan interface Data_Perbaikan, karena
implements dari interface tersebut maka tiap method harus di Override.
Tanggal : 21-12-2020
VI - 23
Logger.getLogger(GUI_sparepart.class.getName()).log(Level.S
EVERE,null, ex);
}
catch (SQLException e){
Logger.getLogger(GUI_sparepart.class.getName()).log(Level.S
EVERE,null, e);
}
catch (Exception es){
Logger.getLogger(GUI_sparepart.class.getName()).log(Level.S
EVERE,null, es);
}
}
Tanggal : 21-12-2020
VI - 24
Tanggal : 21-12-2020
VI - 25
int ok=JOptionPane.showConfirmDialog(null,"Apakah
Anda yakin akan menghapus data
?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(ok==0){
try{
String sql="DELETE FROM tb_sparepart WHERE
No='"+txtNo.getText()+"'";
java.sql.PreparedStatement
stmt=conn.prepareStatement(sql);
stmt.executeUpdate();
JOptionPane.showMessageDialog(null,"Data
Berhasil di hapus");
batal();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Data
gagal di hapus");
}
}
refresh();
}
Tanggal : 21-12-2020
VI - 26
Tanggal : 21-12-2020
VI - 27
Name btnHapus
11 jButton3
Text Hapus
Name btnBatal
12 jButton4
Text Batal
Name btnCari
13 jButton5
Text Cari
Name btnNilai
14 jButton5
Text Form Nilai
15 JTable Name tabel_data
Tanggal : 21-12-2020
VI - 28
Tanggal : 21-12-2020
VI - 29
Tanggal : 21-12-2020
VI - 30
VI.7 Kesimpulan
1. Interface merupakan prototype atau template untuk sebuah class, deskripsi
ini hampir serupa dengan class abstrak.
2. Variable pada interface akan memiliki aturan static dan final sedangkan
method akan memiliki aturan public dan abstract.
3. Basis data (database) adalah kumpulan data yang disimpan secara
sistematis di dalam komputer yang dapat diolah atau dimanipulasi
menggunakan perangkat lunak (program aplikasi) untuk menghasilkan
informasi.
Tanggal : 21-12-2020
VII - 1
BAB VII
PENERAPAN DATABASE BAGIAN 2
Jumlah Pertemuan : 2 x 60 menit
Tanggal : 21-12-2020
VII - 2
Tanggal : 21-12-2020
VII - 3
berupa angka. Pada tipe data angka terbagi menjadi beberapa jenis
seperti pada kolom tabel dibawah ini.
Tanggal : 21-12-2020
VII - 4
3. Tipe Waktu
Tipe Date digunakan untuk menyimpan data tanggal dengan
format tahun, bulan, tanggal. Beberapa jenis tipe data date yang dapat
digunakan.
Tanggal : 21-12-2020
VII - 5
Tanggal : 21-12-2020
VII - 6
Logger.getLogger(GUI_Matkul.class.getName()).log(Level.SEVE
RE,null, ex);
}
catch (SQLException e) {
Logger.getLogger(GUI_Matkul.class.getName()).log(Level.SEVE
RE,null, e);
}
catch (Exception es) {
Logger.getLogger(GUI_Matkul.class.getName()).log(Level.SEVE
RE,null, es);
}
}
Tanggal : 21-12-2020
VII - 7
jumlah_sks)"+"VALUES('"+kode_mk+"','"+nama_mk+"','"+jumlah_
sks+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Matkul!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}
JOptionPane.showMessageDialog(null,"Data Berhasil di
hapus");
batal();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Data gagal di
hapus");
}
Tanggal : 21-12-2020
VII - 8
}
refresh();
}
Tanggal : 21-12-2020
VII - 9
Tanggal : 21-12-2020
VII - 10
Tanggal : 21-12-2020
VII - 11
Tampilan Hasil:
Tanggal : 21-12-2020
VII - 12
Tanggal : 21-12-2020
VII - 13
Tanggal : 21-12-2020
VII - 14
try {
conn=null;
Class.forName("com.mysql.jdbc.Driver");
conn=
DriverManager.getConnection("jdbc:mysql://localhost/oop_191
8026?user=root&password=");
}
catch (ClassNotFoundException ex){
Logger.getLogger(GUI_Nilai1.class.getName()).log(Level.SEVE
RE,null, ex);
}
catch (SQLException e){
Logger.getLogger(GUI_Nilai1.class.getName()).log(Level.SEVE
RE,null, e);
}
catch (Exception es){
Logger.getLogger(GUI_Nilai1.class.getName()).log(Level.SEVE
RE,null, es);
}
}
}
tabel_data.setModel(tabelhead);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}
Tanggal : 21-12-2020
VII - 15
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_nilai(nim,kode_mk,
n_tugas,n_prak,n_akhir)"+"VALUES('"+Nim+"','"+KodeMK+"','"+
NT+"','"+NP+"','"+NA+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Nilai!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}
try {
Statement statement =
conn.createStatement();
statement.executeUpdate("UPDATE tb_nilai
SET nim='"+Nim+"'," +
"kode_mk='"+KodeMK+"'"+",n_tugas='"+NT+"',n_prak='"+NP+"',n
_akhir='"+NA+"' WHERE nim ='"+nim_lama+"' AND
kode_mk='"+kode_lama+"'");
statement.close();
conn.close();
Tanggal : 21-12-2020
VII - 16
JOptionPane.showMessageDialog(null, "Update
Data Nilai!");
} catch (Exception e) {
System.out.println("Error : "+e);
}
refresh();
}
Tanggal : 21-12-2020
VII - 17
System.out.println("Error."+ex);
}
}
Tanggal : 21-12-2020
VII - 18
Tampilan Hasil :
Tanggal : 21-12-2020
VII - 19
Tanggal : 21-12-2020
VII - 20
Tanggal : 21-12-2020
VII - 21
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
Logger.getLogger(GUI_Bengkel1.class.getName()).log(Level.SE
VERE,null, ex);
}
catch (SQLException e){
Logger.getLogger(GUI_Bengkel1.class.getName()).log(Level.SE
VERE,null, e);
}
catch (Exception es){
Logger.getLogger(GUI_Bengkel1.class.getName()).log(Level.SE
VERE,null, es);
}
}
Tanggal : 21-12-2020
VII - 22
tabelhead.addRow(new
Object[]{res.getString(1),res.getString(2),res.getString(3)
,res.getString(4), res.getString(5),});
}
tabel_data.setModel(tabelhead);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "BELUM
TERKONEKSI");
}
}
try {
koneksi();
Statement statement = conn.createStatement();
statement.executeUpdate("INSERT INTO
tb_bengkel(Nama, Motor, Total, Bayar,
Kembalian)"+"VALUES('"+Nama+"','"+Motor+"','"+TP+"','"+UP+"
','"+K+"')");
statement.close();
JOptionPane.showMessageDialog(null, "Berhasil
Memasukan Data Bengkel!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan Input!");
}
refresh();
}
Tanggal : 21-12-2020
VII - 23
",Total='"+TP+"',Bayar='"+UP+"',Kembalian='"+K+"'WHERE Nama
= '"+Nama+"'");
statement.close();
conn.close();
JOptionPane.showMessageDialog(null, "Update
Data Bengkel!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
refresh();
}
Tanggal : 21-12-2020
VII - 24
JOptionPane.showMessageDialog(null,
"Data yang Anda cari tidak ada");
}
}
}catch (Exception ex){
JOptionPane.showMessageDialog(null, "Terjadi
Kesalahan!");
}
}
Tanggal : 21-12-2020
VII - 25
Text txtTP
Editbale Uncheck
Name
11 jTextField4
Text txtUP
Name
12 jTextField5
Text txtCari
Name
12 jTextField6
Text txtK
Name btnProses
13 jButton1
Text PROSES
Name btnSimpan
14 jButton2
Text Simpan
Name btnUbah
15 jButton3
Text Ubah
Name btnHapus
16 jButton4
Text Hapus
Name btnBatal
17 jButton5
Text Batal
Name btnCari
18 jButton6
Text Cari
[0] = MENU
model [1] = Paket A
19 JComboBox
[2] = Pakeb B
Name cmb_pilih
20 jTable Name Tabel data
Tanggal : 21-12-2020
VII - 26
Tampilan Hasil :
Tanggal : 21-12-2020
VII - 27
Tanggal : 21-12-2020
VII - 28
VII.6 Kesimpulan
1. SQL (Structured Query Language) merupakan bahasa yang telah
distandarsisasikan dan digunakan dalam pengelolaan semua database
yang ada.
2. DDL adalah perintah - perintah yang digunakan untuk membangun isi
dari database. DDL bertugas untuk membuat objek SQL dan menyimpan
definisinya dalam tabel.
3. DML digunakan untuk menampilkan, mengubah, menambah dan
menghapus baris dalam tabel. Perintah - perintah yang dihubungkan
digolongkan dalam DML antara lain: Select : Perintah ini digunakan
untuk menampilkan isi tabel.Baik semua isi tabel atau sebagian isi tabel.
Tanggal : 21-12-2020
VIII - 1
BAB VIII
KESIMPULAN
Dengan adanya kegiatan praktikum OOP. Penulis dapat menyimpulkan
sebagai berikut :
1. Didalam pemrograman berorientasi objek ada beberapa hal dasar yang harus
dipahami yaitu Class, Attribute, Method dan Object.
2. Enkapsulasi merupakan proses pemaketan objek beserta methodnya untuk
menyembunyikan rincian implementasi dari pemakai/objek lainnya.
3. Dengan mendeklarasikan data dan method dengan tingkat akses public, maka
data dan method dapat diakses semua kelas yang ada di dalam program.
4. Inheritance (pewarisan) merupakan salah satu konsep dasar dari OOP.
Inheritance ini mengadopsi dunia rill dimana suatu entitas/objek dapat
mempunyai entitas turunan/objek turunan. Jadi konsep inheritance adalah
dimana sebuah kelas dapat mempunyai kelas turunan (subclass).
5. Poly artinya banyak, morfisme artinya bentuk. Polimorfisme dalam OOP
adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk” method
yang berbeda- beda meskipun namanya sama.
6. Variable pada interface akan memiliki aturan static dan final sedangkan
method akan memiliki aturan public dan abstract.
7. Basis data (database) adalah kumpulan data yang disimpan secara sistematis
di dalam komputer yang dapat diolah atau dimanipulasi menggunakan
perangkat lunak (program aplikasi) untuk menghasilkan informasi.
8. Interface secara struktur serupa dengan class. Isi dari interface adalah method
abstract, artinya method hanya dideklarasikan dan tanpa badan method.
9. SQL (Structured Query Language) merupakan bahasa yang telah
distandarsisasikan dan digunakan dalam pengelolaan semua database yang
ada.
10. DDL adalah perintah - perintah yang digunakan untuk membangun isi dari
database. DDL bertugas untuk membuat objek SQL dan menyimpan
definisinya dalam tabel.
VIII - 2
DAFTAR PUSTAKA
Laboratorium Pemrograman dan RPL. 2020. Modul Semester Genap Object
Oriented Programming. Laboratorium Pemrograman Insitut Teknologi Nasional
Malang.
Husin B, Sadam. 2011. Pengenalan Konsep Dasar OOP dan Java. Padang. Diakses
tanggal 2 Oktober 2020
Kurniawan, B., 2008, Desain Database dengan PHP MY ADMIN, Elex Media
Komputindo,Jakarta.