modul pemrograman berorientasi objek ii [d.iii]...barang, jika data barang tidak ditemukan, maka...
TRANSCRIPT
Modul Pemrograman Berorientasi Objek II [D.III]
1
Disusun Oleh:
Dinda Ayu Muthia, M.Kom
Oky Irnawati, S.Kom
Akademi Manajemen Informatika & Komputer
Bina Sarana Informatika
2015
Modul Pemrograman Berorientasi Objek II [D.III]
2
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah SWT, yang telah memberikan rahmat
dan hidayahnya sehingga modul Pemrograman Berorientasi Objek II ini dapat terselesaikan
dengan baik. Selanjutnya modul ini disusun untuk memberikan gambaran bagi mahasiswa
yang mempelajari program Netbeans IDE 7.0.1. Dengan menggunakan metode “Belajar
Cepat Dan Menyenangkan” karena modul ini disertai contoh kasus, sehingga lebih
memudahkan anda dalam memahami bahasa pemrograman Java menggunakan program
Netbeans IDE 7.0.1.
Tak lupa penulis mengucapkan banyak terima kasih kepada semua pihak yang
telah membantu dengan tenaga dan pikirannya, terima kasih juga kepada rekan–rekan
instruktur, dosen dan semuanya yang tidak bisa disebutkan satu persatu, yang selalu
mendukung penulis sehingga modul ini sehingga dapat selesai sesuai yang kita inginkan
semua.
Penulis menyadari masih banyak kekurangan dalam penyusunan modul ini. Untuk
itu saran dan kritik yang membangun sangat penulis harapkan guna perbaikan dan
pengembangan modul ini ke depan.
Akhir kata penulis berharap semoga modul Pemrograman Berorientasi Objek II ini
dapat dipergunakan sebaik-baiknya dan dapat dijadikan referensi untuk mahasiswa umum
yang ingin mempelajari bahasa pemrograman Java menggunakan program Netbeasn IDE 7.0.1.
Jakarta, Januari 2015
Penulis
Modul Pemrograman Berorientasi Objek II [D.III]
3
DAFTAR ISI
Cover ........................................................................................................................................ 1
Kata Pengantar ......................................................................................................................... 2
Daftar Isi .................................................................................................................................. 3
Pertemuan 1 Penjelasan tugas dan diagram UML dari studi kasus ......................................... 4
Pertemuan 2 Pembuatan database, objek tabel, menu utama, dan interface ............................ 10
Pertemuan 3 Pembuatan controller dan form master barang ................................................... 24
Pertemuan 4 Pembuatan controller dan form master user ...................................................... 37
Pertemuan 5 Pembuatan controller dan form transaksi penjualan ........................................... 45
Pertemuan 6 Pembuatan laporan dan form laporan ................................................................. 55
Pertemuan 7 Pembuatan form log in ........................................................................................ 70
Pertemuan 8 UTS ..................................................................................................................... 73
Pertemuan 9-14 UAS ............................................................................................................... 74
DAFTAR PUSTAKA
Modul Pemrograman Berorientasi Objek II [D.III]
4
Pertemuan 1
Penjelasan Tugas dan Diagram UML
dari Studi Kasus
1. Penjelasan Tugas
a. Software yang Digunakan
1) Apache2Triad/Xampp
2) Netbeans IDE 7.0.1
3) iReport 4.0.1
b. Penjelasan Tugas Individu
1) Mahasiswa diminta untuk membuat form master barang, form master user, form
transaksi penjualan, dan form laporan.
2) Masing-masing form bernilai 100, sehingga di akhir pertemuan, jika mahasiswa
mengerjakan semua form dengan baik dan running dengan benar, maka nilai tugasnya
menjadi (100+100+100+100)/4=100.
c. Penjelasan Tugas Kelompok
1) Mahasiswa diminta untuk membuat project berupa program bisnis menggunakan
Netbeans IDE.
2) Project dikerjakan secara berkelompok
3) Desain database dan program dipresentasikan saat UTS
4) Project akan dipresentasikan setelah UTS dan nilainya akan menjadi nilai UAS
5) Penilaian project dilihat dari presentasi dan jalannya program.
6) Penilaian diambil secara individu dan kelompok.
d. Kriteria Penilaian UTS
1) Penilaian secara kelompok:
a) Penilaian rancangan database = 10%
b) Penilaian diagram UML (Use case dan Class diagram) = 30%
c) Penilaian rancangan form = 60%
2) Penilaian secara individu:
a) Range nilai: 0-100
b) Nilai individu diketahui pada saat tanya jawab, ketika kelompok mereka
melakukan presentasi.
c) Nilai rata-rata per individu=(total nilai kelompok + nilai individu) / 2.
d) Nilai rata-rata per individu yang diinput di web sebagai nilai UTS.
e. Kriteria Penilaian UAS
1) Penilaian secara kelompok:
a) Penilaian database = 10% (Pembuatan database, tabel, index)
b) Penilaian form, coding dan report = 60% (Pembuatan form, penggunaan objek dan
properties, koneksi database, sintaks program dan prosedur, logika program)
c) Penilaian testing, presentasi = 30% (Eksekusi program, kesesuaian tampilan, cara
Modul Pemrograman Berorientasi Objek II [D.III]
5
presentasi)
2) Penilaian secara individu:
a) Range nilai: 0-100
b) Nilai individu diketahui pada saat tanya jawab, ketika kelompok mereka melakukan
presentasi.
c) Nilai rata-rata per individu=(total nilai kelompok + nilai individu) / 2.
d) Nilai rata-rata per individu yang diinput di web sebagai nilai UAS.
f. Contoh Penilaian
Database : 10% x 100 =10
Form. Coding, report : 60% x 100 = 60
Testing, Presentasi : 30% x 100 = 30
TOTAL NILAI KELOMPOK : 100
NILAI INDIVIDU : 100
Nilai rata-rata per individu: (100+100)/2 =100
Nilai UAS mahasiswa tersebut = 100
g. Project Program
1) Pembayaran
2) Simpan-pinjam
3) Pembelian
4) Penggajian
5) Peminjaman – pengembalian
6) Penerimaan karyawan
7) Absensi pegawai
8) Persedian barang
9) kunjungan pasien
10) perpustakaan
Modul Pemrograman Berorientasi Objek II [D.III]
6
2. Diagram UML dari Studi Kasus
a. Use Case Diagram
User
Mengelola Data
Master
Menginput Data
Transaksi
Melihat Laporan
Mengelola Data
Barang«extends»
Mengelola Data User
«extends»
Gambar 2.1. Use Case Diagram
Penjelasan gambar:
User berhubungan secara langsung dengan case Mengelola Data Master, di mana
data master terdiri dari Barang dan User, sehingga ia bisa melakukan input, update,
maupun delete terhadap data yang ada.
User dapat menginput data transaksi penjualan.
User dapat melihat laporan, yang terdiri dari laporan barang, laporan user, dan laporan
transaksi penjualan.
Modul Pemrograman Berorientasi Objek II [D.III]
7
b. Class Diagram
+save()
+update()
+delete()
+findBarang()
+nomorOtomatis()
+cetak()
-KodeBarang
-NamaBarang
-Harga
-Stok
Barang
+save()
+update()
+delete()
+findUser()
+cetak()
-KodeUser
-NamaUser
-Password
-HakAkses
User
+save()
+findTransaksi()
+nomor()
+cetak()
-NoTrans
-Tanggal
-Total
Transaksi
+saveDetail()
-Id
-NoTrans
-KodeBarang
-Harga
-Qty
-Subtotal
DetailTransaksi
1..*1
1
1..*
1..*1
1..*
1
Gambar 2.2. Class Diagram
Penjelasan gambar:
User boleh menginput satu atau banyak data barang. Sedangkan satu data barang
diinput oleh satu orang user saja.
User boleh menginput satu kali atau sebanyak mungkin transaksi penjualan.
Sedangkan dalam satu transaksi boleh diinput oleh satu orang user saja.
Detail transaksi merupakan Agregasi Komposit, dalam artian Transaksi memiliki
Detail transaksi atau Detail transaksi tidak akan ada kalau kelas Transaksi tidak ada.
Dalam satu detail transaksi harus tercatat kode barang minimal satu atau banyak.
Modul Pemrograman Berorientasi Objek II [D.III]
8
c. Sequence Diagram
Gambar 2.3. Sequence Diagram
Penjelasan gambar:
User berinteraksi langsung dengan tampilan layar, pada contoh di atas, User
berinteraksi dengan form transaksi. Hal yang pertamadilakukanadalah membuka form
transaksi, lalu input kode barang, proses pencarian kode barang melalui controller
barang menuju ke entitas Barang, kemudian nama dan harga barang ditampilkan pada
form.
Selanjutnya User menginput jumlah beli (qty) dan dilakukan perhitungan subtotal dan
total. Setelah itu data tersebut masuk disimpan dalam entitas DetailTransaksi melalui
controller detail.
Setelah semua data diinput, maka semua data transaksi disimpan dalam entitas
Transaksi melalui controller transaksi.
sd Form Transaksi
User
FormTransaksi BarangController Barang TransaksiController TransaksiDetailController DetailTransaksi
Buka_Form() ShowForm(Object obj)
Input_Kode_Barang() findBarang(String kode) findBarang(String kode)
Input_Qty() Hitung_Subtotal_dan_Total()
simpanDetail()
saveDetail(Detailtransaksi
detail)
Simpan_Transaksi() simpan() save(Transaksi trans)
Modul Pemrograman Berorientasi Objek II [D.III]
9
d. State Diagram
Input Kode Barang
Tampil Nama Barang
Tampil Harga
Data Barang
Tidak Ditemukan
Data Barang
Ditemukan
Input Qty
Hitung Subtotal dan Total
Tampil Subtotal
Tampil Total
Simpan Detail
Input Uang Bayar
Tampil Uang Kembali
Simpan Data
Gambar 2.4. State Diagram
Penjelasan gambar:
Saat membuka form transaksi, hal yang pertama dilakukan adalah menginput kode
barang, jika data barang tidak ditemukan, maka akan kembali ke input kode barang,
namun jika data barang ditemukan, maka akan tampil nama dan harga barang.
Input jumlah beli (Qty), kemudian proses perhitungan subtotal dan total dilakukan,
lalu hasil subtotal dan total ditampilkan pada form. Selanjutnya data detail transaksi
tersebut disimpan ke dalam entitas DetailTransaksi.
Input uang bayar, tampil uang kembali, lalu proses yang terakhir adalah menyimpan
data transaksi ke dalam entitas Transaksi.
Modul Pemrograman Berorientasi Objek II [D.III]
10
Pertemuan 2
Pembuatan Database, Objek Tabel,
Menu Utama, dan Interface
1. Membuat Database
Buatlah database dengan nama DbPenjualan pada command prompt.
a. Tabel : Barang
Field Type Length Keterangan
KodeBarang Varchar 5 Primary Key
NamaBarang Varchar 20
Harga Double
Stok Int
b. Tabel : User
Field Type Length Keterangan
KodeUser Varchar 3 Primary Key
NamaUser Varchar 20
Password Varchar 10
HakAkses Varchar 5
Modul Pemrograman Berorientasi Objek II [D.III]
11
c. Tabel : Transaksi
Field Type Length Keterangan
NoTrans Varchar 5 Primary Key
Tanggal Date
Total Double
d. Tabel : DetailTransaksi
/
Field Type Length Extra Keterangan
Id Int 11 Auto Increment Primary Key
NoTrans Varchar 5 Foreign Key
KodeBarang Varchar 5 Foreign Key
Harga Double
Qty Int
Subtotal Double
Modul Pemrograman Berorientasi Objek II [D.III]
12
Keterangan:
1) Foreign Key(NoTrans) References Transaksi(NoTrans)
Field NoTrans yang ada di tabel DetailTransaksi adalah foreign key (kunci tamu)
yang mereferensi field NoTrans yang ada di tabel Transaksi.
2) on delete set null
Jika data NoTrans di tabel Transaksi dihapus, maka data Notrans pada tabel
DetailTransaksi akan diset nilainya menjadi null.
3) on update cascade
Jika data NoTrans di tabel Transaksi di-update, maka data Notrans pada tabel
DetailTransaksi akan ikut ter-update.
2. Pembuatan Objek Tabel
a. Pembuatan Project
1) Buatlah folder di C:/penjualan_nim
2) File New Project
3) Next
4) Project Name: Penjualan
5) Finish.
Modul Pemrograman Berorientasi Objek II [D.III]
13
6) Tambahkan Library dengan cara klik kanan pada Libraries Add Library MySQL
JDBC Driver Add Library
b. Pembuatan Persistence (Java Persistence API)
Java Persistence API (JPA) adalah framework dari bahasa pemrograman Java yang
mengatur penggunaan data berelasi dalam aplikasi yang menggunakan Java Standard dan
enterprise. Berikut adalah langkah-langkah dalam menggunakan JPA:
1) Klik kanan pada projek Penjualan New Other Persistence Persistence
Unit Next
2) Pada Database Connection pilih New Database Connection
Modul Pemrograman Berorientasi Objek II [D.III]
14
3) Driver: MySQL (Connector/J driver) Next
4) Database: DbPenjualan (Isilah password jika menggunakan Apache2Triad, lalu
centang pilihan Remember Password) Test Connection Finish
5) Table Generation Strategy: None Finish. Sehingga terbentuk file persistence.xml.
c. Pembuatan Objek POJO (Plain Old Java Object) atau Entitas
Setelah membuat koneksi Persistence, maka yang harus dibuat selanjutnya adalah objek
dari tabel-tabel yang ada di database DbPenjualan. Langkah-langkahnya adalah:
1) Buatlah package dengan nama: data dengan cara mengklik kanan pada package
penjualan New Java Package
Modul Pemrograman Berorientasi Objek II [D.III]
15
Package Name: penjualan.data Finish.
2) Membuat objek (POJO) atau entitas dengan cara klik kanan pada package
penjualan.data New Entity Classes From Database.
3) Akan diminta untuk mengkoneksikan dengan database klik Ok (Untuk yang
menggunakan Apache, harap diisi dulu passwordnya).
Modul Pemrograman Berorientasi Objek II [D.III]
16
4) Klik Add All >> untuk memasukkan semua tabel yang ada pada database Next.
5) Tekan tombol Finish jika muncul tampilan seperti di bawah ini:
M
a
k
a
akan otomatis tiap table akan dibuatkan masing-masing file-nya di dalam package
penjualan.data.
Modul Pemrograman Berorientasi Objek II [D.III]
17
3. Pembuatan Menu Utama
Untuk membuat form menu utama, langkah-langkahnya adalah:
a. Buatlah package dengan nama yang akan menampung semua form yang dibuat dengan
cara mengklik kanan pada package penjualan New Package Package Name:
penjualan.form Finish.
b. Buatlah form di dalam package penjualan.form dengan cara mengklik kanan pada
package tersebut New JFrame Form Class Name: FormUtama Finish.
Modul Pemrograman Berorientasi Objek II [D.III]
18
c. Pilih Menu Bar dari palette, klik pada form.
d. Edit text pada File menjadi Master. Change variable name menjadi masterMN
e. Edit text pada Edit menjadi Transaksi. Change variable name menjadi transaksiMN
f. Klik kanan pada menu Add Menu
g. Tambahkan menu Laporan. Change variable name menjadi laporanMN
h. Tambahkan menu Log Out. Change variable name menjadi logoutMN
i. Untuk menu Master dibuat submenu yang terdiri dari Barang dan User
j. Klik kanan pada menu Master Add Form Palette Menu Item
Modul Pemrograman Berorientasi Objek II [D.III]
19
k. Edit text menjadi Barang, change variable name menjadi barangMN
l. Tambahkan submenu untuk User. Change variable name menjadi userMN
m. Tambahkan submenu untuk menu Transaksi seperti di bawah ini:
n. Untuk submenu Transaksi Penjualan, change variable name menjadi transMN
o. Tambahkan submenu untuk menu Laporan seperti di bawah ini:
p. Untuk submenu Form Laporan, change variable name menjadi fLaporanMN.
q. Copy folder images yang berisi icon-icon ke dalam folder src yang ada di tempat
penyimpanan project, yaitu: C:\penjualan_12061479\Penjualan\src\images r. Masukkan JToolBar ke dalam form, letakkan tepat di bawah menu.
s. Tambahkan 4 button ke dalam JToolBar, yang terdiri dari: New (name: newBT), Save
(name: saveBT), Delete (name: deleteBT)dengan memberikan icon untuk masing-masing
button.
Modul Pemrograman Berorientasi Objek II [D.III]
20
Pilih gambar New dari folder images yang sudah dicopy ke folder src sebelumnya OK
OK.
t. Buatlah sehingga tampilannya menjadi seperti di bawah ini:
u. Masukkan JDesktopPane ke dalam form, letakkan tepat di bawah JToolBar. Change
variable name: desktopPane.
Klik … pada bagian icon di properties
Modul Pemrograman Berorientasi Objek II [D.III]
21
4. Pembuatan Interface
Interface sebenarnya sama dengan class, tapi hanya memiliki deklarasi method tanpa
implementasi. Cara membuat interface sebagai berikut:
a. Klik kanan pada package penjualan.form New Java Interface Class Name:
NavigatorFormInt Finish.
b. Ubahlah listingnya seperti di bawah ini:
public interface NavigatorFormInt {
public void aktif();
public void bersih();
public void simpan();
public void hapus();
public void cari();
public void tampil();
}
c. Tambahkan listing untuk memanggil NavigatorFormInt dan method showForm pada
FormUtama di atas tanda kurung yang paling bawah, seperti berikut:
Tekan enter di sini,
lalu ketikkan
listing di bawah ini
Modul Pemrograman Berorientasi Objek II [D.III]
22
Tambahkan pula listing di bagian atas, tepatnya di bawah package penjualan.form; untuk
mengimport JInternalFrame:
d. Klik dua kali pada tombol New, lalu berikan script berikut:
private void newBTActionPerformed(java.awt.event.ActionEvent evt)
{
nav = (NavigatorFormInt) desktopPane.getSelectedFrame();
nav.bersih();
nav.aktif();
}
e. Klik dua kali pada tombol Save, lalu berikan script berikut: private void saveBTActionPerformed(java.awt.event.ActionEvent evt)
{
nav = (NavigatorFormInt) desktopPane.getSelectedFrame();
nav.simpan();
}
f. Klik dua kali pada tombol Find, lalu berikan script berikut: private void findBTActionPerformed(java.awt.event.ActionEvent evt)
{
nav = (NavigatorFormInt) desktopPane.getSelectedFrame();
nav.cari();
}
Modul Pemrograman Berorientasi Objek II [D.III]
23
g. Klik dua kali pada tombol Delete, lalu berikan script berikut: private void deleteBTActionPerformed(java.awt.event.ActionEvent
evt) {
if(JOptionPane.showConfirmDialog(null, "Hapus data?", "Konfimasi",
JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
nav = (NavigatorFormInt) desktopPane.getSelectedFrame();
nav.hapus();
}
}
h. Untuk menampilkan FormUtama, maka harus ditambahkan listring berikut pada file
Penjualan.java seperti di bawah ini:
5. Penjelasan
EntityManagerFactory adalah pabrik pengelola entitas (entity manager) yang
menyediakan instance entity manager, semua instance yang dikonfigurasi untuk terkoneksi
ke database yang sama, untuk menggunakan pengaturan default yang didefinisikan oleh
implementasi tertentu.
EntityManager adalah API (Application Programming Interface) yang digunakan untuk
mengakses sebuah database dalam suatu unit kerja tertentu. EntityManager digunakan
untuk membuat (create) dan menghapus (remove) instance persistent entity, untuk mencari
(find) entity dari primary key-nya, dan untuk menanyakan (query) semua yang
berhubungan dengan entity.
Persistence adalah protokol untuk mentransfer antara variabel instance dan database yang
digunakan.
Persistence Unit mendefinisikan himpunan dari semua class yang dihubungkan oleh
aplikasi, dan harus ditempatkan dalam satu penyimpanan data.
Modul Pemrograman Berorientasi Objek II [D.III]
24
Pertemuan 3
Pembuatan Controller dan Form Master Barang
1. Membuat Controller dari Objek POJO
Setiap entitas atau objek POJO yang telah dibentuk akan dikontrol oleh kelas Controller.
Di mana setiap proses bisnis atau manipulasi data dilakukan dalam Method. Langkah-
langkahnya sebagai berikut:
a. Buatlah package dengan nama: penjualan.control dengan cara klik kanan pada package
penjualan New java Package.
b. Package Name: penjualan.control Finish
c. Selanjutnya buat kelas control untuk kelas Barang di dalam package penjualan.control.
Klik kanan pada package penjualan.control New Java Class Class Name:
BarangController Finish.
Modul Pemrograman Berorientasi Objek II [D.III]
25
d. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:
package penjualan.control;
import penjualan.data.Barang;
import java.io.Serializable;
import javax.persistence.Query;
import java.text.DecimalFormat;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class BarangController implements Serializable{
private EntityManagerFactory emf=null;
public BarangController(EntityManagerFactory emf){
this.emf=emf;
}
public EntityManager getEntityManager(){
return emf.createEntityManager();
}
public void save(Barang barang) throws Exception{
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.persist(barang);
em.getTransaction().commit();
}catch(Exception ex){}
}
public void update(Barang barang) throws Exception{
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.merge(barang);
em.getTransaction().commit();
}catch(Exception ex){}
}
public void delete(String kode) throws Exception{
EntityManager em=getEntityManager();
Barang br;
try{
br=em.getReference(Barang.class, kode);
br.getKodeBarang();
em.getTransaction().begin();
em.remove(br);
em.getTransaction().commit();
}catch(Exception ex){}
}
Modul Pemrograman Berorientasi Objek II [D.III]
26
public Barang findBarang(String kode){
EntityManager em=getEntityManager();
try{
return em.find(Barang.class, kode);
}finally{}
}
public String nomorOtomatis(){
String kode="BR001";
EntityManager em=null;
try{
em = getEntityManager();
Query q=em.createQuery("select b from Barang b order
by b.kodeBarang desc");
q.setMaxResults(1);
Barang b=(Barang) q.getSingleResult();
if(q!=null){
DecimalFormat formatnomor =
new DecimalFormat("BR000");
String nomorurut =
b.getKodeBarang().substring(2);
kode=formatnomor.format(Double.parseDouble(nomo
rurut)+1);
}
}finally{}
return kode;
}
}
2. Penjelasan Controller Barang
private EntityManagerFactory emf=null;
Membuat variabel dengan nama emf bertipe class EntityManagerFactory dan diberi nilai
awal null.
public BarangController(EntityManagerFactory emf){
this.emf=emf;
}
Merupakan konstruktor (Method yang digunakan untuk memberi nilai awal pada saat
object diciptakan). Isi dari konstruktor tersebut adalah mendeklarasikan variabel this.emf
yang sebelumnya dideklarasikan secara private, diberikan nilai emf yang dikirimkan di
dalam parameter kostruktor. Kata kunci this digunakan pada pembuatan class dan
digunakan untuk menyatakan object sekarang.
Modul Pemrograman Berorientasi Objek II [D.III]
27
public void save(Barang barang) throws Exception{
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.persist(barang);
em.getTransaction().commit();
}catch(Exception ex){}
}
Membuat method save dengan parameter bernama barang dan bertipe class Barang.
Berikut adalah pengertian dari beberapa istilah yang ada di dalam script di atas:
throws adalah keyword yang digunakan untuk melemparkan sebuah kesalahan yang
terjadi pada suatu ekspresi. Keyword throws digunakan pada sebuah methid maupun
ekspresi yang mengandung kesalahan. Apabila digunakan pada sebuah method, saat
pemanggilan method tersebut, harus menambahkan blok try catch.
Exception adalah sebuah event selama eksekusi program yang mencegah program
dari sebuah error. Bahasa pemrograman Java mendukung exception dengan keyword
try, catch, dan throw.
try catch digunakan untuk menguji suatu statemen yang mengandung kesalahan,
kemudian menangkap kesalahan tersebut pada statemen catch. Perintah try hanya
dituliskan sekali, namun catch bisa dituliskan lebih dari satu kali, tergantung pada
berapa kemungkinan kesalahan yang akan terjadi. Apabila tidak mengetahui kesalahan
suatu ekspresi secara spesifik, kelas exception yang akan menangkap seluruh jenis
kesalahan bisa digunakan.
Finally. Perintah try harus diikuti blok catch atau blok finally atau keduanya. Jika
blok catch digunakan untuk menangkap kesalahan, blok finally akan dieksekusi, baik
ada kesalahan atau tidak.
Transaction adalah suatu unit kerja yang memodifikasi data.
Untuk method save, gunakan persist(entity)
Untuk method update, gunakan merge(entity)
Untuk method delete, gunakan remove(entity)
Modul Pemrograman Berorientasi Objek II [D.III]
28
commit adalah poin di dalam sebuah transaksi ketika semua update ke sumber
manapun yang termasuk di dalam transaksi dibuat permanen.
Untuk method find, parameter yang dikirim berupa kode yang dicari yang bertipe data
String. Bentuknya adalah find(entity class, primary key).
Berikut penjelasan mengenai script penomoran otomatis:
String kode="BR001";
Variabel kode bertipe data String diberikan nilai awal “BR001”
Query q=em.createQuery("select b from Barang b order by
b.kodeBarang desc");
Membuat instance (objek) bertipe Query dengan nama q yang berisi bahasa sql yang
akan dieksekusi. Perintah sql di atas untuk menampilkan semua record yang ada di
tabel barang diurutkan secara descending berdasarkan kode barang. Umumnya
digunakan perintah “Select * from Barang order by kodeBarang”, namun di sini tanda
“ * ” tidak dikenal, sehingga perlu dibuat alias dari tabel Barang dengan nama b.
Penulisan nama tabel “Barang” harus diawali dengan huruf besar, karena sudah
berubah menjadi entityClass (Tiap class harus diketik dengan huruf besar di bagian
depan). Sedangkan penulisan field, harus diawali dengan huruf kecil dan diawali
dengan alias dari tabelnya.
q.setMaxResults(1);
Query yang dieksekusi diatur agar hasilnya hanya satu record.
Barang b=(Barang) q.getSingleResult();
Membuat objek Barang dengan nama b yang berisi satu hasil query yang diambil.
Tipe hasil query q.getSingleResult(); berupa object.
(Barang) q.getSingleResult();hasil query diubah menjadi bertipe class
Barang.
if(q!=null){
DecimalFormat formatnomor = new DecimalFormat("BR000");
String nomorurut = b.getKodeBarang().substring(2);
kode=formatnomor.format(Double.parseDouble(nomorurut)+1);
}
Modul Pemrograman Berorientasi Objek II [D.III]
29
Jika hasil query-nya tidak kosong, maka dibuat objek formatnomor dengan tipe
DecimalFormat yang berisi format kode “BR000”.
Setelah itu dibuat variabel dengan nama nomorurut bertipe String yang berisi kode
barang yang diambil dari hasil query yang telah dihilangkan (substring) 2 digit
karakter di bagian depannya.
Variabel kode kini berisi formatnomor yang awalnya BR000 digabung dengan
nomorurut+1.
Jika hasil query tidak ada, maka return kode (kirimkan nilai awal kode).
3. Pembuatan Form Master Barang
a. Klik kanan pada package penjualan.form New JInternalFrame Form. Jika tidak
ada, maka pilih New Other Swing GUI Forms JInternalFrame Form Class
Name: FormBarang Finish.
b. Klik kanan pada form Set Layout Absolute Layout.
c. Berikan Title pada form melalui Properties bagian title. Berikan name untuk Form:
FBarang.
Modul Pemrograman Berorientasi Objek II [D.III]
30
d. Buatlah desain form seperti di bawah ini:
e. Setelah desain formnya dibuat, klik tombol Source untuk memberikan listing pada
FormBarang.
f. Pada baris ke-17, sudah ada script seperti di bawah ini:
Tambahkan listing pada script di atas, sehingga menjadi sebagai berikut:
public class FormBarang extends javax.swing.JInternalFrame
implements NavigatorFormInt{
Penambahan listing di atas akan menimbulkan tanda lampu kuning bertanda seru merah di
sebelah kiri seperti gambar di bawah ini:
Klik pada tanda lampu kuning tersebut, kemudian pilih Implement all abstract methods.
Name: kodeTF
Name: namaTF
Name: hargaTF
Name: stokTF
Modul Pemrograman Berorientasi Objek II [D.III]
31
Maka otomatis semua metode abstract yang sudah dibuat pada file NavigatorFormInt akan
diimplementasikan di dalam FormBarang. Metode-metode abstract tersebut akan
menampilkan script-nya di bagian paling bawah seperti gambar berikut:
g. Pada baris ke-18, tambahkan script berikut:
Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru
merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal
tersebut menandakan, class BarangController dan Penjualan belum diimport ke dalam
file FormBarang. Oleh karena itu, klik tanda lampu kuning bertanda seru merah tersebut,
lalu pilih Add import for penjualan.Penjualan dan Add import for
penjualan.control.BarangController.
Maka otomatis, pada baris ke-13 dan 14 muncul script berikut:
import penjualan.Penjualan;
import penjualan.control.BarangController;
h. Pada baris ke-22, tambahkan script berikut:
Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru
merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal
tersebut menandakan, class Barang belum diimport ke dalam file FormBarang. Oleh
karena itu, klik tanda lampu kuning tersebut, lalu pilih Add import for
penjualan.data.Barang.
Modul Pemrograman Berorientasi Objek II [D.III]
32
Maka otomatis, pada baris ke-15 muncul script berikut:
import penjualan.data.Barang;
i. Ubah semua script abstract method yang sudah ada sehingga menjadi seperti di bawah ini:
@Override
public void aktif() {
namaTF.setEnabled(true);
hargaTF.setEnabled(true);
stokTF.setEnabled(true);
kodeTF.setText(bc.nomorOtomatis());
namaTF.requestFocus();
}
@Override
public void bersih() {
kodeTF.setText(“”);
namaTF.setText(“”);
hargaTF.setText(“”);
stokTF.setText(“”);
}
@Override
public void simpan() {
brg=bc.findBarang(kodeTF.getText());
Barang br=new Barang();
if(brg==null){
br.setKodeBarang(kodeTF.getText());
br.setNamaBarang(namaTF.getText());
br.setHargaBarang(Double.parseDouble(hargaTF.getText()));
br.setStok(Integer.parseInt(stokTF.getText()));
try{
bc.save(br);
}catch(Exception e){}
JOptionPane.showMessageDialog(null,
“Data telah tersimpan”);
}else{
br.setKodeBarang(kodeTF.getText());
br.setNamaBarang(namaTF.getText());
br.setHargaBarang(Double.parseDouble(hargaTF.getText()));
br.setStok(Integer.parseInt(stokTF.getText()));
try{
bc.update(br);
}catch(Exception e){}
JoptionPane.showMessageDialog(null,
“Data telah terupdate”);
}
bersih();
kodeTF.requestFocus();
Modul Pemrograman Berorientasi Objek II [D.III]
33
}
@Override
public void hapus() {
try{
bc.delete(kodeTF.getText());
JoptionPane.showMessageDialog(null,
“Data telah dihapus”);
}catch(Exception ex){
JoptionPane.showMessageDialog(null,
“Data tidak bisa dihapus karena “+ ex.getMessage());
}
bersih();
}
@Override
public void cari() {
brg=bc.findBarang(kodeTF.getText());
if(brg==null){
JoptionPane.showMessageDialog(null,
“Data tidak ditemukan”);
bersih();
}else{
tampil();
}
}
@Override
public void tampil() {
namaTF.setText(brg.getNamaBarang());
hargaTF.setText(Double.toString(brg.getHargaBarang()));
stokTF.setText(Integer.toString(brg.getStok()));
}
j. Kembali ke desain form barang, klik kanan pada Text Field Kode Barang Events
Key KeyPressed. Lalu ketikkan script berikut:
private void kodeTFKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
cari();
}
}
Klik pada lampu kuning bertanda seru merah, untuk Add import for
java.awt.event.KeyEvent.
k. Klik kanan pada form barang Events InternalFrame internalFrameActivated.
Lalu ketikkan script berikut: private void formInternalFrameActivated
(javax.swing.event.InternalFrameEvent evt) {
Modul Pemrograman Berorientasi Objek II [D.III]
34
kodeTF.setEnabled(false);
namaTF.setEnabled(false);
hargaTF.setEnabled(false);
stokTF.setEnabled(false);
bersih();
}
l. Kembali ke desain FormUtama.java, klik menu Master klik kanan pada menu item
Barang Events Action ActionPerformed.
Lalu berikan script berikut:
private void barangMNActionPerformed(java.awt.event.ActionEvent
evt) {
FormBarang fBarang=new FormBarang();
showForm(fBarang);
}
m. Isikan data berikut:
Kode Barang Nama Barang Harga Stok
BR001 Monitor 1000000 10
BR002 Keyboard 100000 20
BR003 Mouse 30000 30
BR004 Flash Disk 50000 40
BR005 Laptop Soft Case 100000 10
4. Penjelasan Form Master Barang
Semua abstract method telah dideklarasikan pada interface NavigatorFormInt.java. Pada
form barang ini, implementasi konsep polymorphism dilakukan. Konsep polymorphism
terdiri dari overloading (Penggunaan satu nama untuk beberapa method yang berbeda
parameter) dan overriding (Terjadi ketika deklarasi method subclass persis sama dengan
method dari superclassnya). Di dalam form barang ini, diterapkan konsep overriding. Di
mana semua method (aktif, bersih, simpan, hapus, cari, dan tampil) yang dideklarasikan
pada interface (selaku superclass) dideklarasikan pula di form barang (selaku subclass).
Oleh karena itu, di tiap method terdapat tulisan @override di atasnya.
Modul Pemrograman Berorientasi Objek II [D.III]
35
BarangController telah dibuat objeknya dengan nama bc, sehingga untuk memanggil
semua method yang ada didalam class BarangController, kita hanya perlu mengetik bc.
diikuti nama method yang ingin dipanggil.
Entity class Barang juga sudah dibuat objeknya dengan nama brg.
Berikut adalah penjelasan method simpan:
brg=bc.findBarang(kodeTF.getText());
Objek barang (brg) digunakan sebagai penampung hasil pencarian barang berdasarkan
kode barang yang ada di text field yang sedang aktif. Karena sudah digunakan sebagai
penampung hasil, maka harus dibuat objek baru dari Entity Class Barang, yaitu br
untuk fungsi sebagai pengisi data untuk masing-masing field.
Jika hasil pencarian yang ditampung dalam brg kosong, maka masing-masing field
akan diisi dengan data pada text field yang ada. Lalu data tersebut disimpan.
Jika hasil pencarian tidak kosong (kode barang ditemukan), maka maka masing-
masing field akan diisi dengan data pada text field yang ada, namun perintahnya
adalah update.
Berikut adalah penjelasan untuk method hapus:
bc.delete(kodeTF.getText());
Memanggil method delete yang ada di class BarangController, dengan parameter yang
dikirim adalah kode barang yang ada di text field kodeTF.
Jika datanya terhapus, maka akan menampilkan message dialog dengan pesan “Data
telah dihapus”.
catch(Exception ex){
JoptionPane.showMessageDialog(null,“Data tidak bisa dihapus
karena “+ ex.getMessage());
}
Jika ada kesalahan, maka Exception yang akan mengatasinya. Exception di sini sudah
dibuat objeknya, yaitu ex. Lalu akan menampilkan message dialog “Data tidak bisa
dihapus karena” digabung dengan pesan error dari Exception yang ada di objeknya,
yaitu ex.
Berikut adalah penjelasan dari method cari:
brg=bc.findBarang(kodeTF.getText());
if(brg==null){
JoptionPane.showMessageDialog(null, “Data tidak
ditemukan”);
bersih();
}else{
tampil();
}
Modul Pemrograman Berorientasi Objek II [D.III]
36
Objek brg menampung hasil pencarian barang berdasarkan kode barang yang terdapat
pada textfield kodeTF. Jika pencarian yang ditampung dalam brg kosong, maka akan
menampilkan message dialog “Data tidak ditemukan”. Selain itu data akan
ditampilkan dengan memanggil method tampil.
Untuk method tampil, semua data akan ditampilkan oleh objek brg ke masing-masing text
field.
Modul Pemrograman Berorientasi Objek II [D.III]
37
Pertemuan 4
Pembuatan Controller dan Form Master User
1. Pembuatan Controller User
Langkah-langkah dalam membuat Controller untuk objek User sebagai berikut:
a. Klik kanan pada package penjualan.control New Java Class Class Name:
UserController Finish.
b. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:
package penjualan.control;
import penjualan.data.User;
import java.io.Serializable;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class UserController implements Serializable{
private EntityManagerFactory emf=null;
public UserController(EntityManagerFactory emf){
this.emf=emf;
}
public EntityManager getEntityManager(){
return emf.createEntityManager();
}
public void save(User user) throws Exception{
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.persist(user);
em.getTransaction().commit();
}catch(Exception ex){}
}
public void update(User user) throws Exception{
EntityManager em=getEntityManager();
Modul Pemrograman Berorientasi Objek II [D.III]
38
try{
em.getTransaction().begin();
em.merge(user);
em.getTransaction().commit();
}catch(Exception ex){}
}
public void delete(String kode) throws Exception{
EntityManager em=getEntityManager();
User us;
try{
us=em.getReference(User.class, kode);
us.getKodeUser();
em.getTransaction().begin();
em.remove(us);
em.getTransaction().commit();
}catch(Exception ex){}
}
public User findUser(String kode){
EntityManager em=getEntityManager();
try{
return em.find(User.class, kode);
}finally{}
}
}
2. Pembuatan Form Master User
a. Klik kanan pada package penjualan.form New JInternalFrame Form. Jika tidak
ada, maka pilih New Other Swing GUI Forms JInternalFrame Form Class
Name: FormUser Finish.
b. Klik kanan pada form Set Layout Absolute Layout.
c. Berikan Title pada form melalui Properties bagian title. Berikan name untuk Form:
FUser.
Modul Pemrograman Berorientasi Objek II [D.III]
39
d. Buatlah desain form seperti di bawah ini:
Klik hakAksesCB Properties Model Isikan Admin, User OK.
e. Setelah desain formnya dibuat, klik tombol Source untuk memberikan listing pada
FormUser.
f. Pada baris ke-17, ubah script menjadi sebagai berikut: public class FormUser extends javax.swing.JInternalFrame
implements NavigatorFormInt{
Penambahan listing di atas akan menimbulkan tanda lampu kuning bertanda seru merah di
sebelah kiri seperti gambar di bawah ini:
Klik pada tanda lampu kuning tersebut, kemudian pilih Implement all abstract methods.
Maka otomatis semua metode abstract yang sudah dibuat pada file NavigatorFormInt akan
diimplementasikan di dalam FormUser.
g. Pada baris ke-18, tambahkan script berikut:
Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru
merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal
Name: kodeTF
Name: namaTF
Name: passwordTF
Name: hakAksesCB
Modul Pemrograman Berorientasi Objek II [D.III]
40
tersebut menandakan, class UserController dan Penjualan belum diimport ke dalam file
FormUser. Oleh karena itu, klik tanda lampu kuning bertanda seru merah tersebut, lalu
pilih Add import for penjualan.Penjualan dan Add import for
penjualan.control.UserController.
Maka otomatis, pada baris ke-13 dan 14 muncul script berikut:
import penjualan.Penjualan;
import penjualan.control.UserController;
h. Pada baris ke-22, tambahkan script berikut:
Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru
merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal
tersebut menandakan, class User belum diimport ke dalam file FormUser. Oleh karena itu,
klik tanda lampu kuning tersebut, lalu pilih Add import for penjualan.data.User.
Maka otomatis, pada baris ke-15 muncul script berikut:
import penjualan.data.User;
i. Ubah semua script abstract method yang sudah ada sehingga menjadi seperti di bawah ini:
@Override
public void aktif() {
kodeTF.setEnabled(true);
namaTF.setEnabled(true);
passwordTF.setEnabled(true);
hakAksesCB.setEnabled(true);
kodeTF.requestFocus();
}
@Override
public void bersih() {
kodeTF.setText(“”);
Modul Pemrograman Berorientasi Objek II [D.III]
41
namaTF.setText(“”);
passwordTF.setText(“”);
hakAksesCB.setSelectedIndex(0);
}
@Override
public void simpan() {
usr=us.findUser(kodeTF.getText());
User u=new User();
if(usr==null){
u.setKodeUser(kodeTF.getText());
u.setNamaUser(namaTF.getText());
u.setPassword(passwordTF.getText());
u.setHakAkses(hakAksesCB.getSelectedItem().toString());
try{
us.save(u);
}catch(Exception e){}
JoptionPane.showMessageDialog(null, “Data telah
tersimpan”);
}else{
u.setKodeUser(kodeTF.getText());
u.setNamaUser(namaTF.getText());
u.setPassword(passwordTF.getText());
u.setHakAkses(hakAksesCB.getSelectedItem().toString());
try{
us.update(u);
}catch(Exception e){}
JoptionPane.showMessageDialog(null, “Data telah
terupdate”);
}
bersih();
kodeTF.requestFocus();
}
@Override
public void hapus() {
try{
us.delete(kodeTF.getText());
JoptionPane.showMessageDialog(null, “Data telah
dihapus”);
}catch(Exception ex){
JoptionPane.showMessageDialog(null,”Data tidak bisa
dihapus karena “+ ex.getMessage());
}
bersih();
}
@Override
public void cari() {
usr=us.findUser(kodeTF.getText());
Modul Pemrograman Berorientasi Objek II [D.III]
42
if(usr==null){
JoptionPane.showMessageDialog(null, “Data tidak
ditemukan”);
namaTF.requestFocus();
}else{
JoptionPane.showMessageDialog(null, “Data ditemukan”);
tampil();
}
}
@Override
public void tampil() {
namaTF.setText(usr.getNamaUser());
passwordTF.setText(usr.getPassword());
if(usr.getHakAkses().equalsIgnoreCase(“Admin”)){
hakAksesCB.setSelectedIndex(0);
}else{
hakAksesCB.setSelectedIndex(1);
}
}
j. Klik kanan pada desain form user Events InternalFrame
internalFrameActivated. Lalu ketikkan script berikut: private void formInternalFrameActivated
(javax.swing.event.InternalFrameEvent evt) {
kodeTF.setEnabled(false);
namaTF.setEnabled(false);
passwordTF.setEnabled(false);
hakAksesCB.setEnabled(false);
bersih();
}
k. Kembali ke desain FormUtama.java, klik menu Master klik kanan pada menu item
User Events Action ActionPerformed. Lalu berikan script berikut:
private void userMNActionPerformed(java.awt.event.ActionEvent
evt) {
FormUser fUser=new FormUser();
showForm(fUser);
}
l. Isikan data berikut:
KodeUser NamaUser Password HakAkses
DAM Dinda a1d2m3 Admin
IDD Ida u4s5r6 User
RJO Rio u4s5r6 User
Modul Pemrograman Berorientasi Objek II [D.III]
43
RNR Retno u4s5r6 User
RYL Ratih u4s5r6 User
3. Penjelasan
UserController telah dibuat objeknya dengan nama us, sehingga untuk memanggil semua
method yang ada didalam class UserController, kita hanya perlu mengetik us. diikuti nama
method yang ingin dipanggil.
Entity class User juga sudah dibuat objeknya dengan nama usr.
Berikut adalah penjelasan method simpan:
usr=us.findUser(kodeTF.getText());
Objek user (usr) digunakan sebagai penampung hasil pencarian user berdasarkan kode
user yang ada di text field yang sedang aktif. Karena sudah digunakan sebagai
penampung hasil, maka harus dibuat objek baru dari Entity Class User, yaitu u untuk
fungsi sebagai pengisi data untuk masing-masing field.
Jika hasil pencarian yang ditampung dalam usr kosong, maka masing-masing field
akan diisi dengan data pada text field yang ada. Lalu data tersebut disimpan.
Jika hasil pencarian tidak kosong (kode user ditemukan), maka maka masing-masing
field akan diisi dengan data pada text field yang ada, namun perintahnya adalah
update.
Berikut adalah penjelasan untuk method hapus:
us.delete(kodeTF.getText());
Memanggil method delete yang ada di class UserController, dengan parameter yang
dikirim adalah kode user yang ada di text field kodeTF.
Jika datanya terhapus, maka akan menampilkan message dialog dengan pesan “Data
telah dihapus”.
catch(Exception ex){
JoptionPane.showMessageDialog(null,“Data tidak bisa dihapus
karena “+ ex.getMessage());
}
Jika ada kesalahan, maka Exception yang akan mengatasinya. Exception di sini sudah
dibuat objeknya, yaitu ex. Lalu akan menampilkan message dialog “Data tidak bisa
dihapus karena” digabung dengan pesan error dari Exception yang ada di objeknya,
yaitu ex.
Berikut adalah penjelasan dari method cari:
usr=us.findUser(kodeTF.getText());
if(usr==null){
JoptionPane.showMessageDialog(null, “Data tidak
ditemukan”);
Modul Pemrograman Berorientasi Objek II [D.III]
44
bersih();
}else{
JoptionPane.showMessageDialog(null, “Data ditemukan”);
tampil();
}
Objek usr menampung hasil pencarian barang berdasarkan kode user yang terdapat
pada textfield kodeTF. Jika pencarian yang ditampung dalam usr kosong, maka akan
menampilkan message dialog “Data tidak ditemukan”. Selain itu, akan tampil message
dialog “Data ditemukan” dan data akan ditampilkan dengan memanggil method
tampil.
Untuk method tampil, semua data akan ditampilkan oleh objek usr ke masing-masing text
field.
Modul Pemrograman Berorientasi Objek II [D.III]
45
Pertemuan 5
Pembuatan Controller dan Form Transaksi Penjualan
1. Pembuatan Controller Transaksi
Langkah-langkah dalam membuat Controller untuk objek Transaksi sebagai berikut:
a. Klik kanan pada package penjualan.control New Java Class Class Name:
TransaksiController Finish.
b. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:
package penjualan.control;
import penjualan.data.Transaksi;
import java.io.Serializable;
import java.text.DecimalFormat;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
public class TransaksiController implements Serializable{
private EntityManagerFactory emf=null;
public TransaksiController(EntityManagerFactory emf){
this.emf=emf;
}
public EntityManager getEntityManager(){
return emf.createEntityManager();
}
public void save(Transaksi trans) throws Exception{
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.persist(trans);
em.getTransaction().commit();
}catch(Exception ex){}
}
Modul Pemrograman Berorientasi Objek II [D.III]
46
public Transaksi findTransaksi(String kode){
EntityManager em=getEntityManager();
try{
return em.find(Transaksi.class, kode);
}finally{}
}
public String nomor(){
String kode=”TR001”;
EntityManager em=null;
try{
em = getEntityManager();
Query q=em.createQuery(“select count(t.noTrans) from
Transaksi t”);
q.setMaxResults(1);
Long hasil=(Long) q.getSingleResult();
if(q!=null){
DecimalFormat formatnomor = new DecimalFormat
(“TR000”);
kode=formatnomor.format(hasil+1);
}
}finally{}
return kode;
}
}
2. Penjelasan Controller Transaksi
Berikut adalah penjelasan penomoran otomatis:
String kode="TR001";
Variabel kode bertipe data String diberikan nilai awal “TR001”
Query q=em.createQuery("select count(t.noTrans) from Transaksi
t");
Membuat instance (objek) bertipe Query dengan nama q yang berisi bahasa sql yang
akan dieksekusi. "select count(t.noTrans) from Transaksi t" artinya
menghitung jumlah keseluruhan field noTrans dari tabel Transaksi yang diberikan
alias, yaitu t.
Long hasil=(Long) q.getSingleResult();
Membuat variabel dengan nama hasil yang berisi satu hasil query yang diambil.
Tipe hasil query q.getSingleResult(); berupa object.
Long hasil=(Long) q.getSingleResult(); hasil query yang bertipe objek
diubah menjadi bertipe data Long, karena hasil dari query berupa angka, bukan record.
Modul Pemrograman Berorientasi Objek II [D.III]
47
if(q!=null){
DecimalFormat formatnomor = new DecimalFormat("TR000");
kode=formatnomor.format(hasil+1);
}
Jika hasil query-nya tidak kosong, maka dibuat objek formatnomor dengan tipe
DecimalFormat yang berisi format kode “TR000”.
Variabel kode kini berisi formatnomor yang awalnya TR000 digabung dengan
hasil+1. Di mana hasil menampilkan angka yang berupa jumlah keseluruhan dari field
noTrans.
Jika hasil query tidak ada, maka return kode (kirimkan nilai awal kode).
3. Pembuatan Controller Detail Transaksi
Langkah-langkah dalam membuat Controller untuk objek Detail Transaksi sebagai berikut:
a. Klik kanan pada package penjualan.control New Java Class Class Name:
DetailController Finish. b. Setelah filenya sudah terbentuk, ubahlah listingnya menjadi seperti di bawah ini:
package penjualan.control;
import penjualan.data.Detailtransaksi;
import java.io.Serializable;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class DetailController implements Serializable{
private EntityManagerFactory emf=null;
public DetailController(EntityManagerFactory emf){
this.emf=emf;
}
public EntityManager getEntityManager(){
return emf.createEntityManager();
}
public void saveDetail(Detailtransaksi detail) throws
Exception{
EntityManager em=getEntityManager();
try{
em.getTransaction().begin();
em.persist(detail);
em.getTransaction().commit();
}catch(Exception ex){}
}
}
Modul Pemrograman Berorientasi Objek II [D.III]
48
4. Pembuatan Form Transaksi Penjualan
a. Klik kanan pada package penjualan.form New JInternalFrame Form. Jika tidak
ada, maka pilih New Other Swing GUI Forms JInternalFrame Form Class
Name: FormTransaksi Finish.
b. Klik kanan pada form Set Layout Absolute Layout.
c. Berikan Title pada form melalui Properties bagian title. Berikan name untuk Form:
Ftransaksi.
d. Buatlah desain form seperti di bawah ini:
e. Klik kanan pada grid Table Contents pilih tab Columns. Buat seperti di bawah ini:
Name: grid
Modul Pemrograman Berorientasi Objek II [D.III]
49
Pilih tab Rows, buat seperti di bawah ini:
f. Setelah desain formnya dibuat, klik tombol Source untuk memberikan listing pada
FormTransaksi.
g. Pada baris ke-17, ubah script menjadi sebagai berikut:
public class FormTransaksi extends javax.swing.JInternalFrame
implements NavigatorFormInt{
h. Penambahan listing di atas akan menimbulkan tanda lampu kuning bertanda seru merah di
sebelah kiri seperti gambar di bawah ini:
i. Klik pada tanda lampu kuning tersebut, kemudian pilih Implement all abstract methods.
Maka otomatis semua metode abstract yang sudah dibuat pada file NavigatorFormInt akan
diimplementasikan di dalam FormTransaksi.
j. Pada baris ke-18, tambahkan script berikut:
Modul Pemrograman Berorientasi Objek II [D.III]
50
Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru
merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal
tersebut menandakan, class TransaksiController dan Penjualan belum diimport ke dalam
file FormTransaksi. Oleh karena itu, klik tanda lampu kuning bertanda seru merah
tersebut, lalu pilih Add import for penjualan.Penjualan dan Add import for
penjualan.control.TransaksiController.
Maka otomatis, pada baris ke-13 dan 14 muncul script berikut:
import penjualan.Penjualan;
import penjualan.control.TransaksiController; k. Pada baris ke-22, tambahkan script berikut:
Bisa dilihat pada gambar tersebut terdapat error dengan tanda lampu kuning bertanda seru
merah. Letak kesalahan ada pada tulisan yang tercetak miring dan garis bawah merah. Hal
tersebut menandakan, class Transaksi belum diimport ke dalam file FormTransaksi.
Oleh karena itu, klik tanda lampu kuning tersebut, lalu pilih Add import for
penjualan.data.Transaksi.
Maka otomatis, pada baris ke-15 muncul script berikut:
import penjualan.data.Transaksi;
l. Ketikkan script berikut:
package penjualan.form;
import java.awt.event.KeyEvent;
import penjualan.Penjualan;
import penjualan.control.TransaksiController;
import penjualan.data.Transaksi;
import penjualan.data.Barang;
import penjualan.control.BarangController;
import penjualan.data.Detailtransaksi;
import penjualan.control.DetailController;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JoptionPane;
import javax.swing.table.DefaultTableModel;
public class FormTransaksi extends javax.swing.JInternalFrame
implements NavigatorFormInt{
TransaksiController tr = new
TransaksiController(Penjualan.emf);
Transaksi trans = new Transaksi();
BarangController bc=new BarangController(Penjualan.emf);
Barang brg=new Barang();
DetailController dc=new DetailController(Penjualan.emf);
Modul Pemrograman Berorientasi Objek II [D.III]
51
Detailtransaksi dt=new Detailtransaksi();
double total;
DefaultTableModel tbl; //operasional tabel
Object[] obj; //baris table
public String kodeBarang, namaBarang, hargaBarang, qtyBeli,
subtotalBeli;
int brs;
public FormTransaksi() {
initComponents();
tbl=(DefaultTableModel) grid.getModel();
obj=new Object[grid.getRowCount()];
}
public void simpanDetail(){
dt.setNoTrans(noTF.getText());
dt.setKodeBarang(kodeTF.getText());
dt.setHarga(Double.parseDouble(hargaTF.getText()));
dt.setQty(Integer.parseInt(qtyTF.getText()));
dt.setSubtotal(Double.parseDouble(subtotalTF.getText()));
try{
dc.saveDetail(dt);
}catch(Exception e){}
}
public void tampilTable(){
kodeBarang=kodeTF.getText();
namaBarang=namaTF.getText();
hargaBarang=hargaTF.getText();
qtyBeli=qtyTF.getText();
subtotalBeli=subtotalTF.getText();
String [] data={kodeBarang, namaBarang, hargaBarang,
qtyBeli,subtotalBeli};
for(int x=0;x<=4;x++){
tbl.setValueAt(data[x], brs, x);
}
brs++;
}
public void clearTable(){
int row=tbl.getRowCount();
while(row>0){
row--;
tbl.removeRow(row);
}
}
public void penguranganStok(int qty){
brg.setKodeBarang(kodeTF.getText());
Modul Pemrograman Berorientasi Objek II [D.III]
52
brg.setNamaBarang(namaTF.getText());
brg.setHargaBarang(Double.parseDouble(hargaTF.getText()));
brg.setStok(brg.getStok()-qty);
try{
bc.update(brg);
}catch(Exception e){}
}
@Override
public void aktif() {
noTF.setText(tr.nomor());
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
Calendar cal=Calendar.getInstance();
tglTF.setText(sdf.format(cal.getTime()));
total=0;
noTF.setEnabled(false);
tglTF.setEnabled(false);
namaTF.setEnabled(false);
hargaTF.setEnabled(false);
subtotalTF.setEnabled(false);
totalTF.setEnabled(false);
kembaliTF.setEnabled(false);
kodeTF.setEnabled(true);
qtyTF.setEnabled(true);
bayarTF.setEnabled(true);
kodeTF.requestFocus();
brs=0;
}
@Override
public void bersih() {
noTF.setText(“”);
tglTF.setText(“”);
kodeTF.setText(“”);
namaTF.setText(“”);
hargaTF.setText(“0”);
qtyTF.setText(“”);
subtotalTF.setText(“0”);
totalTF.setText(“0”);
bayarTF.setText(“0”);
kembaliTF.setText(“0”);
}
@Override
public void simpan() {
trans=tr.findTransaksi(noTF.getText());
Transaksi trn=new Transaksi();
if(trans==null){
trn.setNoTrans(noTF.getText());
trn.setTanggal(new Date());
Modul Pemrograman Berorientasi Objek II [D.III]
53
trn.setTotal(Double.parseDouble(totalTF.getText()));
try{
tr.save(trn);
}catch(Exception e){}
JoptionPane.showMessageDialog(null, “Data telah
tersimpan”);
}
bersih();
clearTable();
}
m. Klik kanan pada kodeTF Events Key KeyPressed. Lalu ketikkan script berikut: private void kodeTFKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
brg=bc.findBarang(kodeTF.getText());
if(brg==null){
JoptionPane.showMessageDialog(null, “Data tidak
ditemukan”);
kodeTF.setText(“”);
kodeTF.requestFocus();
}else{
namaTF.setText(brg.getNamaBarang());
hargaTF.setText(brg.getHargaBarang().toString());
qtyTF.requestFocus();
}
}
}
n. Klik kanan pada qtyTF Events Key KeyPressed. Lalu ketikkan script berikut: private void qtyTFKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
tbl.addRow(obj);
int qty=Integer.parseInt(qtyTF.getText());
double harga=Double.parseDouble(hargaTF.getText());
long subtotal;
subtotal=(long) (harga*qty);//dijadikan long, agar puluhan
juta pun masih bisa ditampilkan walaupun masuk ke database
dengan tipe data double
subtotalTF.setText(String.valueOf(subtotal));
total=subtotal+total;
totalTF.setText(String.valueOf(total));
simpanDetail();
tampilTable();
penguranganStok(qty);
int j=JoptionPane.showConfirmDialog(null, “Ingin menambah
transaksi?”,”Konfimasi”,JoptionPane.YES_NO_OPTION);
if(j==JoptionPane.YES_OPTION){
Modul Pemrograman Berorientasi Objek II [D.III]
54
kodeTF.setText(“”);
namaTF.setText(“”);
hargaTF.setText(“”);
qtyTF.setText(“”);
kodeTF.requestFocus();
}else{
bayarTF.setText(“”);
bayarTF.requestFocus();
}
}
}
o. Klik kanan pada bayarTF Events Key KeyPressed. Lalu ketikkan script berikut: private void bayarTFKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
total = Double.parseDouble(totalTF.getText());
double bayar = Double.parseDouble(bayarTF.getText());
double kembali;
kembali=bayar-total;
kembaliTF.setText(Double.toString(kembali));
}
}
p. Klik kanan pada desain form transaksi Events InternalFrame
internalFrameActivated. Lalu ketikkan script berikut: private void formInternalFrameActivated
(javax.swing.event.InternalFrameEvent evt) {
noTF.setEnabled(false);
tglTF.setEnabled(false);
kodeTF.setEnabled(false);
namaTF.setEnabled(false);
hargaTF.setEnabled(false);
qtyTF.setEnabled(false);
subtotalTF.setEnabled(false);
totalTF.setEnabled(false);
bayarTF.setEnabled(false);
kembaliTF.setEnabled(false);
bersih();
}
q. Kembali ke desain FormUtama.java, klik menu Transaksi klik kanan pada menu item
Transaksi Penjualan Events Action ActionPerformed. Lalu berikan script
berikut: private void transMNActionPerformed(java.awt.event.ActionEvent
evt) {
FormTransaksi fTransaksi=new FormTransaksi();
showForm(fTransaksi);
deleteBT.setEnabled(false);
}
Modul Pemrograman Berorientasi Objek II [D.III]
55
Pertemuan 6
Pembuatan Laporan dan Form Laporan
1. Pembuatan Laporan
a. Buatlah folder baru pada project penjualan. Klik kanan pada Penjualan New Other
b. Categories: Other File Types: Folder Next
c. Folder Name: report Finish.
d. Buka software iReport
Modul Pemrograman Berorientasi Objek II [D.III]
56
e. File New Pilih Layout: Cherry Launch Report Wizard
f. Report Name: reportBarang
g. Location: C:\penjualan_12061479 \Penjualan\report
Modul Pemrograman Berorientasi Objek II [D.III]
57
h. Next
i. Klik New Database JDBC Connection Next
j. Password: password jika menggunakan Apache2Triad
k. Jika menggunakan Xampp, maka password dikosongkan
Modul Pemrograman Berorientasi Objek II [D.III]
58
l. Klik Test OK.
m. Jika sukses, klik Save
n. Klik Design Query
Modul Pemrograman Berorientasi Objek II [D.III]
59
o. Drag and drop table barang ke kotak abu-abu sebelah kanan OK Next
Modul Pemrograman Berorientasi Objek II [D.III]
60
p. Klik tombol >> untuk memindahkan field Next
q. Klik Next Finish
r. Tampilan desain laporan awal yang terbentuk otomatis:
Modul Pemrograman Berorientasi Objek II [D.III]
61
s. Ubahlah tampilan laporan menjadi seperti dibawah ini:
t. Untuk melihat hasilnya, klik tombol Preview
u. Ulangi langkah-langkah di atas untuk pembuatan Laporan User dan Transaksi
v. Beri nama reportUser dan reportTransaksi
w. Untuk reportUser, field password tidak ditampilkan ke dalam laporan
Modul Pemrograman Berorientasi Objek II [D.III]
62
x. Untuk reportTransaksi, klik pada textfield $F{transaksi_Total}, lalu pada properties
bagian Expression Class: java.lang.Long, agar data dengan digit yang lebih banyak bisa
tampil, walaupun di database bertipe data double. Tambahkan juga Grand Total
y. Menambahkan GrandTotal dengan cara klik kanan pada Variables di sebelah kiri Add
Variable muncul variable 1 klik kanan rename grandTotal pada
properties Calculation Sum
z. Double klik pada transaksi_Total, klik OK. Pilih Label dari palette sebelah kanan, berikan
Text = Grand Total, tarik variabel grandtotal di sebelah kiri ke laporan.
Modul Pemrograman Berorientasi Objek II [D.III]
63
Hasil akhir:
Modul Pemrograman Berorientasi Objek II [D.III]
64
2. Pembuatan Form Laporan
a. Kembali ke Netbeans IDE pada project penjualan. Setelah mendesain laporan, langkah
selanjutnya adalah memasukkan library iReport, diantaranya:
1) Jasperreports-4.0.1.jar
2) Commons-logging-1.1.jar
3) Commons-javaflow-20060411.jar
4) Commons-digester-1.7.jar
5) Commons-collections-3.2.1.jar
6) Commons-beanutils-1.8.2.jar
7) DateChooser
8) Groovy-all-1.7.5
*Catatan: semua library tergantung pada versi iReports
b. Klik kanan pada Libraries Penjualan Add JAR/Folder
c. C:\Program Files\Jaspersoft\iReport-4.0.1\ireport\modules\ext. Pilih 8 library yang sudah
disebutkan di atas.
*Catatan: 8 Library tersebut juga bisa diambil dari folder lib yang diberikan oleh masing-
masing instruktur, lalu masukkan foldernya ke dalam folder project penjualan.
Modul Pemrograman Berorientasi Objek II [D.III]
65
d. Klik Open
e. Buat Frame baru dengan cara mengklik kanan pada package penjualan.form New
JInternalFrame Form Finish.
f. Buatlah desain seperti di bawah ini:
g. Klik form Properties title: Form Laporan name: fLaporan.
h. Buka file BarangController.java, lalu tambahkan script berikut di paling atas:
Modul Pemrograman Berorientasi Objek II [D.III]
66
import java.io.File;
import java.sql.Connection;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
Kemudian ketikkan script berikut setelah script method nomorOtomatis: public void cetak(){
EntityManager em=null;
try{
em=emf.createEntityManager();
em.getTransaction().begin();
Connection connect=em.unwrap(Connection.class);
File file=new File("");
String namafile = file.getAbsolutePath()+
"\\report\\reportBarang.jasper";
JasperPrint jprint = JasperFillManager.fillReport
(namafile,new HashMap(),connect);
//jika reportnya ingin langsung cetak menggunakan
listing di bawah ini:
//JasperPrintManager.printReport(jprint,false);
//jika reportnya ingin dilihat terlebih dahulu, gunakan
listing di bawah ini:
JasperViewer viewer=new JasperViewer(jprint,false);
viewer.setFitPageZoomRatio();
viewer.setVisible(true);
em.getTransaction().commit();
connect.close();
}catch(Exception e){
e.printStackTrace();
}
}
i. Buka file UserController.java, lalu tambahkan script berikut di paling atas: import java.io.File;
import java.sql.Connection;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
Kemudian ketikkan script berikut setelah script method findUser: public void cetak(){
EntityManager em=null;
try{
em=emf.createEntityManager();
em.getTransaction().begin();
Connection connect=em.unwrap(Connection.class);
Modul Pemrograman Berorientasi Objek II [D.III]
67
File file=new File("");
String namafile = file.getAbsolutePath()+
"\\report\\reportUser.jasper";
JasperPrint jprint = JasperFillManager.fillReport
(namafile,new HashMap(),connect);
//jika reportnya ingin langsung cetak menggunakan
listing di bawah ini:
//JasperPrintManager.printReport(jprint,false);
//jika reportnya ingin dilihat terlebih dahulu, gunakan
listing di bawah ini:
JasperViewer viewer=new JasperViewer(jprint,false);
viewer.setFitPageZoomRatio();
viewer.setVisible(true);
em.getTransaction().commit();
connect.close();
}catch(Exception e){
e.printStackTrace();
}
}
j. Buka file TransaksiController.java, lalu tambahkan script berikut di paling atas: import java.io.File;
import java.sql.Connection;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
Kemudian ketikkan script berikut setelah script method nomor: public void cetak(){
EntityManager em=null;
try{
em=emf.createEntityManager();
em.getTransaction().begin();
Connection connect=em.unwrap(Connection.class);
File file=new File("");
String namafile = file.getAbsolutePath()+
"\\report\\reportTransaksi.jasper";
JasperPrint jprint = JasperFillManager.fillReport
(namafile,new HashMap(),connect);
//jika reportnya ingin langsung cetak menggunakan
listing di bawah ini:
//JasperPrintManager.printReport(jprint,false);
//jika reportnya ingin dilihat terlebih dahulu, gunakan
listing di bawah ini:
JasperViewer viewer=new JasperViewer(jprint,false);
viewer.setFitPageZoomRatio();
viewer.setVisible(true);
em.getTransaction().commit();
Modul Pemrograman Berorientasi Objek II [D.III]
68
connect.close();
}catch(Exception e){
e.printStackTrace();
}
}
k. Kemabli ke desain FormLaporan.java, ketikkan scriptberikut untuk tiap-tiap tombol: package penjualan.form;
import penjualan.Penjualan;
import penjualan.control.BarangController;
import penjualan.control.UserController;
import penjualan.control.TransaksiController;
public class FormLaporan extends javax.swing.JInternalFrame{
BarangController bc=new BarangController(Penjualan.emf);
UserController uc=new UserController(Penjualan.emf);
TransaksiController tc = new TransaksiController
(Penjualan.emf);
private void barangBTActionPerformed
(java.awt.event.ActionEvent evt) {
bc.cetak();
}
private void userBTActionPerformed
(java.awt.event.ActionEvent evt) {
uc.cetak();
}
private void transaksiBTActionPerformed
(java.awt.event.ActionEvent evt) {
tc.cetak();
}
}
l. Kembali ke desain FormUtama.java, klik menu Laporan klik kanan pada menu item
Form Laporan Events Action ActionPerformed. Lalu ketikkan script berikut: private void fLaporanMNActionPerformed
(java.awt.event.ActionEvent evt) {
FormLaporan fLaporan=new FormLaporan();
showForm(fLaporan);
newBT.setEnabled(false);
saveBT.setEnabled(false);
deleteBT.setEnabled(false);
}
m. Kembali ke desain FormUtama.java, klik kanan pada menu Log Out Events Menu
menuSelected. Lalu ketikkan script berikut:
Modul Pemrograman Berorientasi Objek II [D.III]
69
private void logoutMNMenuSelected(javax.swing.event.MenuEvent
evt) {
this.dispose();
FormLogIn fLogIn=new FormLogIn();
fLogIn.setLocationRelativeTo(null);
fLogIn.setVisible(true);
}
Modul Pemrograman Berorientasi Objek II [D.III]
70
Pertemuan 7
Pembuatan Form Log In
1. Pembuatan Form Log In
a. Buatlah FormLogIn dengan cara klik kanan pada package penjualan.form New
JFrame Form.
b. Klik kanan pada form Set Layout Absolute Layout
c. Ketikkan script berikut: package penjualan.form;
import java.sql.*;
import penjualan.Penjualan;
import javax.persistence.EntityManager;
import javax.swing.JOptionPane;
public class FormLogIn extends javax.swing.JFrame {
/** Creates new form FormLogIn */
public FormLogIn() {
initComponents();
}
Modul Pemrograman Berorientasi Objek II [D.III]
71
private void logInBTActionPerformed(java.awt.event.ActionEvent
evt) {
EntityManager em=null;
try{
em=Penjualan.emf.createEntityManager();
em.getTransaction().begin();
Connection connect=em.unwrap(Connection.class);
Statement st = (Statement) connect.createStatement();
ResultSet rs = st.executeQuery("select * from User where
KodeUser='"+kodeTF.getText().trim()+"' and
Password='"+passwordTF.getText().trim()+"'");
if(rs.next()){
String nama=rs.getString("NamaUser");
JOptionPane.showMessageDialog(this, "Selamat datang,
"+nama+"","Welcome",JOptionPane.INFORMATION_MESSAGE);
this.dispose();
FormUtama fUtama=new FormUtama();
fUtama.setLocationRelativeTo(null);
fUtama.setVisible(true);
}else{
JOptionPane.showMessageDialog(this, "User tidak
ditemukan","Informasi",JOptionPane.INFORMATION_MESSAGE);
kodeTF.requestFocus();
}
}catch(Exception e){
System.out.println("Koneksi Gagal"+ e.toString());
}
}
Klik kanan pada form Events Window windowActivated. Lalu ketikkan script
berikut: private void formWindowActivated(java.awt.event.WindowEvent evt)
{
kodeTF.setText("");
passwordTF.setText("");
kodeTF.requestFocus();
}
2. Penjelasan
Berikut adalah penjelasan untuk tombol logInBT:
Untuk form log in, tidak dibuat controllernya, maka digunakanlah class Connection
secara langsung untuk terhubung ke database. Oleh karena itu dibuatlah objek connect
dengan tipe class Connection.
Untuk membuat query, objek connect harus membuat Statement terlebih dahulu. Oleh
karena itu dibuatlah objek st bertipe class Statement.
Untuk hasil eksekusi query, dibuat objek rs bertipe class ResultSet, yang berisi
perintah pengeksekuisan statement ("select * from User where
Modul Pemrograman Berorientasi Objek II [D.III]
72
KodeUser='"+kodeTF.getText().trim()+"' and
Password='"+passwordTF.getText().trim()+"'").
Script sql tersebut digunakan untuk mencari KodeUser dan Password sesuai yang
diinput di textfield dari tabel User. if(rs.next()){
String nama=rs.getString("NamaUser");
JOptionPane.showMessageDialog(this, "Selamat datang,
"+nama+"","Welcome",JOptionPane.INFORMATION_MESSAGE);
this.dispose();
Jika datanya ada, maka ambil nama user dari kode user yang ditemukan tersebut, lalu
nilainya ditampung dalam variabel nama dengan tipe String. Lalu tampil message
dialog berupa ucapan selamat dating dan nama user. Setelah itu form log in ditutup
otomatis, lalu tampil form menu utama.
Jika user tidak ditemukan, maka akan tampil message dialog “User tidak ditemukan”.
Jika ada error, maka Exception yang akan meng-handle. Namun, ditampilkan bukan
dalambentuk messga dialog, tapi pesan akan tampil pada panel output pada Netbeans
IDE.
Modul Pemrograman Berorientasi Objek II [D.III]
73
Pertemuan 8
UTS
Modul Pemrograman Berorientasi Objek II [D.III]
74
Pertemuan 9 - 14
UAS
Modul Pemrograman Berorientasi Objek II [D.III]
75
DAFTAR PUSTAKA
Gamaliel, Fritz. 2013. Membuat Program Akuntansi Manufaktur dengan Java & MySQL.
Jakarta: PT. Elex Media Komputindo.
Gata, Windu, & Gata, Grace. 2013. Sukses Membangun Aplikasi Penjualan dengan Java.
Jakarta: PT. Elex Media Komputindo.
Supardi, Yuniar. 2009. Belajar Semua Edisi Java2 untuk Segala Tingkat. Jakarta: PT Elex
Media Komputindo.
Wahana Komputer. 2011. Paling Dicari! Java Source Code. Yogyakarta: Penerbit Andi.