0% menganggap dokumen ini bermanfaat (0 suara)
196 tayangan111 halaman

Modul Praktikum-PBO

Modul ini berisi panduan praktikum pemrograman berorientasi objek untuk jurusan teknik informatika di Universitas Negeri Gorontalo. Modul ini membahas dasar-dasar pemrograman Java melalui contoh kode program dan penjelasan mengenai variabel, tipe data, operator, struktur kontrol, array, kelas dan objek, serta topik-topik lainnya.

Diunggah oleh

basrancr
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
196 tayangan111 halaman

Modul Praktikum-PBO

Modul ini berisi panduan praktikum pemrograman berorientasi objek untuk jurusan teknik informatika di Universitas Negeri Gorontalo. Modul ini membahas dasar-dasar pemrograman Java melalui contoh kode program dan penjelasan mengenai variabel, tipe data, operator, struktur kontrol, array, kelas dan objek, serta topik-topik lainnya.

Diunggah oleh

basrancr
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 111

MODUL PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS NEGERI GORONTALO
2010

KATA PENGANTAR
Puji syukur kehadirat Allah S.W.T atas rahmat dan izin-Nya akhirnya modul praktikum ini
dapat disusun. Modul ini disusun dengan maksud sebagai penunjang mata kuliah Pemrograman
Berorientasi Objek.
Materi pada modul ini yakni dasar-dasar pemrograman java, input dari keyboard, struktur
kontrol, array, argumen dari command line, kelas dan objek, pewarisan, polimorfisme dan interface,
exception handling, stack dan queues, sorting, GUI event handling, threads, jaringan, dan applet.
Sebagian besar materi pada modul ini mengacu pada materi Java Education Network Indonesia (JENI)
serta beragam textbook dan Ebook Java.
Kami yakin dalam modul ini masih banyak kekurangan dan kesalahan yang tidak lepas dari
kekhilafan penyusun. Semoga modul praktikum ini dapat digunakan dengan sebaik-baiknya.

Gorontalo, Agustus 2010

Tim Penyusun

DAFTAR ISI

i. Kata Pengantar
ii. Daftar Isi
1. Dasar-dasar pemrograman Java
2. Input dari Keyboard
3. Struktur Kontrol
4. Array
5. Kelas dan Objek
6. Pewarisan, Polimorfisme Dan Interface
7. Exception Handling
8. Awt dan Swing
9. GUI Event Handling
10. JDBC
11. Membuat Aplikasi Database dengan Java, MySQL dan NetBeans

BAB 1
DASAR PEMROGRAMAN JAVA
1.1

Tujuan
Mengidentifikasi bagian dasar dari program Java, membedakan mana yang
termasuk ke dalam Java literals, tipe data dasar, tipe variabel, pengidentifikasian
dan operator
Mengembangkan program Java sederhana menggunakan konsep pembelajaran
pada bab ini
Menganalisa program Java pertama

1.2

Latar Belakang
Pada bab ini, kita akan mendiskusikan mengenai dasar-dasar pemrograman Java.
Diantaranya penggunaan variabel, tipe data, dan operator pada Java dan bagaimana
mengantisipasi error pada penulisan kode Java.

1.3

Percobaan
1.3..1 Percobaan 1 (hello.Java)
classhello{
publicstaticvoidmain(String[]args){
System.out.println(HaloIndonesia);}
}

Hasil :
HaloIndonesia

Pembahasan :
Setiap program Java, nama file yang berekstensi .java selalu sama dengan
nama kelas pada kode program. Setiap blok statemen dibawah kelas selalu
dimulai dengan kurung kurawal buka ({) dan pada akhir statemen ditutup dengan
kurung kurawal tutup (}), tanpa menggunakan tanda tersebut program akan
dinyatakan memiliki kesalahan pada penulisan kode (syntax error).
Statemen public static void main (String[] args) adalah method utama

atau main method yang merupakan titik awal dari suatu program java. Sebuah
main method juga selalu dibuka dengan tanda ({) dan diakhiri dengan (}), sama
halnya dengan memulai suatu kelas tanpa tanda tersebut program akan
dinyatakan syntax error.
Statemen

System.out.println(Halo

Indonesia)

merupakan method untuk mencetak string ke layar. Teks didalam method


System.out.println() selalu diapit oleh tanda kutip dua ( ), dan diakhir
statemen selalu diakhiri dengan tanda titik koma (;). Tanpa menggunakan tanda
tersebut program akan dinyatakan syntax error.
Kata-kata seperti hello, main, System, out merupakan Java identifier
yaitu suatu tanda yang mewakili nama-nama variabel, method, class, dan
sebagainya. Identifier bersifat case sensitive yang artinya membedakan huruf
kecil dan besar, Identifier harus dimulai dengan salah satu huruf, underscore (_),
atau tanda dolar ($) setelah itu dapat diikuti dengan menggunakan angka 0
sampai dengan 9.
Identifier tidak dapat menggunakan kata kunci yang sudah didefinisikan
terlebih dahulu oleh Java yang digunakan untuk tujuan tertentu. Berikut adalah
daftar kata kunci (keyword) dalam Java :

Gambar 1. JJava keyword (Sumber : Materi JENI 1)


1.3..2 Percobaan 2 (variabel-tipedata.Java)

publicclassvariabel{
publicstaticvoidmain(String[]args){
charvar1='Z';
intvar2=10;
doublevar3=0.8;
booleanvar4=true;
System.out.println(Isivariabelvar1:+var1);
System.out.println(Isivariabelvar2:+var2);
System.out.println(Isivariabelvar3:+var3);
System.out.println(Isivariabelvar4:+var4);}
}

Hasil :
Isivariabelvar1:Z
Isivariabelvar2:10
Isivariabelvar3:0.8
Isivariabelvar4:true

Pembahasan :
Variabel adalah item yang digunakan data untuk menyimpan pernyataan
objek. Variabel selalu memiliki nama dan tipe data. Deklarasi variabel dapat
dituliskan :
<tipedata>namavariabel[=initialvalue]
Pada percobaan 2 diatas, statemen intvar2=10;,intadalah tipe
data,var2adalah nama variabel,dan10adalah initial value.
Variabel juga dapat dibedakan menjadi dua, yaitu variabel reference dan
variabel primitif. Variabel primitif adalah variabel dengan tipe data primitif.
Mereka menyimpan data dalam lokasi memori yang sebenarnya dimana variabel
tersebut berada. Variabel reference adalah variabel yang menyimpan alamat
dalam lokasi memori yang menunjuk ke lokasi memori dimana data sebenarnya
berada. Ketika anda mendeklarasikan variabel pada class tertentu, anda
sebenarnya mendeklarasikan variabel reference dalam bentuk objek dalam class
tersebut.
Bahasa pemrograman Java mendefinisikan delapan tipe data primitif yaitu

char (untuk bentuk tekstual), byte, short, int, long (integral / bilangan bulat),
double dan float (floating point / bilangan pecahan). String bukan merupakan
tipe data primitif melainkan sebuah kelas.
Tipe data character (char), diwakili oleh karakter single unicode. Tipe
data ini harus memiliki ciri berada dalam tanda single quotes (' '), contoh : 'x'.
Untuk menampilkan karakter khusus seperti ' (single quotes) atau (double
quotes) menggunakan karakter escape (\), contoh : '\'' atau '\'.
Tipe data integral dalam Java menggunakan tiga bentuk yaitu desimal ,
oktal atau heksadesimal. Range tipe data integral :
Tabel 1.1. Tipe-tipe integral dan range-nya
Integer Length

Name or Type

Range

8 bits

byte

-27 to 27-1

16 bits

short

-215 to 215-1

32 bits

int

-231 to 231-1

64 bits

long

-263 to 263-1

Tipe floating point memiliki double sebagai default tipe datanya. Tipe
data floating point memiliki range sebagai berikut :
Tabel 1.2. Tipe-tipe Float dan range-nya
Float Length

Name or Type

Range

32 bits

Float

-231 to 231-1

64 bits

Double

-263 to 263-1

Tipe boolean diwakili oleh dua pernyataan : true dan false. Contoh :
boolean var1=true. Isi dari variabel var1 adalah pernyataan true.
1.3..3 Percobaan 3 (operatoraritmatik.java)
publicclassoperatoraritmatik{
publicstaticvoidmain(String[]args){
inta=10;
intb=20;
intc;
System.out.println(OperatorAritmatika:);

System.out.println(Penambahan:);
c=a+b;
System.out.println(Isic=+c);
System.out.println(Pengurangan:);
c=ba;
System.out.println(Isic=+c);
System.out.println(Perkalian:);
c=a*b;
System.out.println(Isivariabelc=+c);
System.out.println(Pembagian:);
c=b/a;
System.out.println(Isivariabelc=+c);
System.out.println(SisaHasilBagi:);
c=b%a;
Sytem.out.println(Isivariabelc=+c);
}

}
Hasil :
OperatorAritmatika:
Penambahan:
Isivariabelc=30
Pengurangan:
Isivariabelc=10
Perkalian:
Isivariabelc=200
Pembagian:
Isivariabelc:2
SisaHasilBagi:
Isivariabelc:0

Pembahasan :
Operator ini mengikuti bermacam-macam prioritas yang pasti sehingga
compilernya akan tahu yang mana operator untuk dijalankan lebih dulu dalam
kasus beberapa operator yang dipakai bersama-sama dalam satu pernyataan.
Operator aritmatik yang dapat digunakan untuk membuat suatu program
Java :

Tabel 1.3. Operator aritmatika dan fungsi-fungsinya


Operator

Penggunaan

Keterangan

op1+op2

Menambahkan op1 dengan op2

op1*op2

Mengalikan op1 dengan op2

op1/op2

Membagi op1 dengan op2

op1%op2

Menghitung sisa dari pembagian


op 1 dengan op2

op1-op2

Mengurangkan op2 dari op1

1.3..4 Percobaan 4 (operatorincdec.java)


publicclassoperatorincdec{
publicstaticvoidmain(String[]args){
inta=10;
System.out.println(Penambahansatu:);
a++;
System.out.println(Isia:+a);
System.out.println(Pengurangansatu:);
a;
System.out.println(Isia:+a);
}
}

Hasil :
Penambahansatu:
Isia:11
Pengurangansatu:
Isia:9

Pembahasan :
Operator increment dan decrement menambah dan mengurangi nilai yang
tersimpan dalam bentuk variabel angka terhadap nilai 1.
Pada percobaan 4 diatas, statemen a++ dapat disamakan dengan statemen
a=a+1 sedangkan a dapat disamakan dengan statemen a=a1.
Penggunaan operator increment dan decrement sebagai berikut :
Tabel 1.4 Operator Increment dan Decrement

Operator

Penggunaan

Keterangan

++

op++

Menambahkan nilai 1 pada op;


mengevaluasi nilai op sebelum
diitambahkan

++

++op

Menabambahkan nilai 1 pada op;


mengevaluasi nilai op setelah
ditambahkan

--

op--

Mengurangkan nilai 1 pada op;


mengevaluasi nilai op sebelum
dikurangkan

--

--op

Mengurangkan nilai 1 pada op;


mengevaluasi nilai op setelah
dikurangkan

1.3..5 Percobaan 5 (operatorrelasi.java)


publicclassoperatorrelasi{
publicstaticvoidmain(String[]args){
intx=10;
inty=30;
System.out.println(x>yadalah+(x>y));
System.out.println(x>=yadalah+(x>=y));
System.out.println(x<yadalah+(x<y));
System.out.println(x<=yadalah+(x<=y));
System.out.println(x=yadalah+(x==y));
System.out.println(x!=yadalah+(x!=y));

Hasil :
x>yadalahfalse
x>=yadalahfalse
x<yadalahtrue
x<=yadalahtrue
x=yadalahfalse
x!=yadalahtrue

Pembahasan :

Operator relasi membandingkan dua nilai dan menentukan keterhubungan


diantara nilai-nilai tersebut. Hasil keluarannya berupa nilai boolean yaitu true
atau false.
Tabel 1.5 Operator Relasi
Operator

Penggunaan

Keterangan

>

Op1 > op2

Op1 lebih besar dari op2

>=

Op1 >= op2

Op1 lebih besar dari atau sama


dengan op2

<

Op1 < op2

Op1 kurang dari op2

<=

Op1 <= op2

Op1 kurang dari atau sama


dengan op2

==

Op1 == op2

Op1 sama dengan op2

!=

Op1 != op2

Op1 tidak sama dengan op2

1.3..6 Percobaan 6 (operatorlogika.java)


publicclassoperatorlogika{
publicstaticvoidmain(String[]args){
inty=40;
intz=80;
tes1=(y>40)&&(z<100);
System.out.println(Hasiltes1:+tes1);
tes2=(y>40)||(z<100);
System.out.println(Hasiltes1:+tes2);
}
}

Hasil :
Hasiltes1:false
Hasiltes2:true

Pembahasan :
Opearator logika memiliki satu atau lebih operand boolean yang
menghasilkan nilai boolean. Operator logika AND (&&) dan boolean logika &
memiliki tabel logika sebagai berikut :
Tabel 1.6 Tabel kebenaran untuk && dan &

X1

X2

Hasil

TRUE

TRUE

TRUE

TRUE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

Contoh jika diberikan pernyataan exp1 && exp2, operator logika AND
(&&) akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai false
dan menyatakan bahwa exp1 bernilai false. Jika exp1 bernilai false, operator
tidak akan pernah mengevaluasi exp2 karena hasil operasi operator akan menjadi
false tanpa memperhatikan nilai dari exp2. Sebaliknya, operator logika AND (&)
selalu mengevaluasi kedua nilai dari exp1 dan exp2 sebelum mengembalikan
suatu nilai jawaban.
Operator logika OR (||) dan boolean logika OR (|), tabel kebenarannya
adalah sebagai berikut :

Tabel 1.7 Tabel kebenaran untuk || dan |

1.4

X1

X2

Hasil

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

FALSE

FALSE

Latihan
a) Buatlah program dengan output sebagai berikut :
Halo<namaanda>SelamatDatangdiDuniaJava!
b) Buatlah program dengan output sebagai berikut :
Hargabarangsebelumdiskon:Rp.10.000,
Diskon:10%
Hargabarangsetelahdiskon:Rp.9.000,

BAB 2
INPUT DARI KEYBOARD
2.1

Tujuan

Membuat program java yang interaktif yang bisa membaca input dari keyboard

Menggunakan class BufferedReader untuk mendapatkan input dari keyboard


melalui layar console

Menggunakan class JoptionPane untuk mendapatkan input dari keyboard

menggunakan GUI
2.2

Latar Belakang
Pada bab ini kita akan mendiskusikan bagaimana Java menangani masukan (input) dari
pengguna melalui keyboard sehingga program menjadi lebih interaktif.

2.3

Percobaan
2.3..1 percobaan 1 (input.java)
importjava.io.BufferedReader;

importjava.io.InputStreamReader;
importjava.io.IOException;
publicclassinput{
publicstaticvoidmain(String[]args){
BufferedReader InputData = new BufferedReader (new
InputStreamReader(System.in));
Stringnama=;
System.out.print(Masukkannamaanda:);
try{
nama=InputData.readLine();
}
catch(IOExceptione){
System.out.println(Error);
}
System.out.println(Halonamasaya+nama);
}
}

Hasil :
Masukkannamaanda:Bob
HalonamasayaBob

Pembahasan :
Bahasa pemrograman Java tidak memiliki kelas default yang bisa digunakan
dengan cara yang langsung untuk menerima input ari pengguna, tidak seperti
bahasa-bahasa pemrograman lainnya. Meskipun demikian, dengan cara-cara
tertentu, kita tentu saja dapat membuat program Java yang dapat menerima input
dari penguna.
Statemen :
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.IOException;

Menjelaskan

bahwa

kita

akan

menggunakan

class BufferedReader,

InputStreamReader dan IOException yang

berada di java.io package.

Java Application Programming Interface (API) berisi ratusan class yang sudah
didefinisikan sebelumnya yang dapat digunakan untuk program anda. Classclass tersebut dikumpulkan di dalam packages.
Packages berisi class yang mempunyai fungsi yang saling berhubungan. Seperti
pada contoh diatas, java.io package mengandung class-class yang
memungkinkan program untuk melakukan input dan output data. Pernyataan
diatas juga dapat ditulis sebagai berikut,
importjava.io.*;

yang akan mengeluarkan semua class yang berada dalam package, dan
selanjutnya kita bisa menggunakan class-class tersebut dalam program kita.
Dalam statemen,
BufferedReader InputData = new BufferedReader(new
InputStreamReader(System.in));

kita mendeklarasikan sebuah variabel bernama InputData dengan tipe class


BufferedReader.

Sekarang, kita akan mendeklarasikan variabel String dengan identifier nama,


Stringnama=;

Pernyataan diatas merupakan tempat untuk menyimpan input dari user. Nama
variabel diinisialisasi sebagai String kosong ( ). Sebaiknya kita selalu
menginisialisasi sebuah variabel setelah kita mendeklarasikannya.
Selanjutnya, blok dibawah ini merupakan try-catch block,
try{
nama=dataIn.readline(); }
catch(IOExceptione){
System.out.println(Error!);}

Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada pernyataan,
nama=dataIn.readline();

akan ditangkap. Kita perlu menambahkan kode ini untuk menggunakan method
readLine() dari BufferedReader untuk

mendapatkan input dari user dan

memberikan sebuah nilai String. Nilai akan disimpan ke dalam variabel nama,
yang akan kita gunakan pada statemen akhir untuk menyatakan nama kita.
System.out.println(Halonamasaya+nama);

2.3..2 percobaan 2 (inputgui.java)

importjavax.swing.JOptionPane;
publicclassinputgui
{
publicstaticvoidmain(String[]args){
Stringnama=;
nama=JOptionPane.showInputDialog(Silahkanmasukkannamaanda);
Stringpsn=Halosaya+nama;
JOptionPane.showMessageDialog(null,psn);
}
}

Hasil :

Pembahasan :
Statemen pertama,
import javax.swing.JOptionPane;
Menjelaskan

bahwa

kita

mengimpor

javax.swing.

Bisa juga ditulis seperti,

class

JOptionPane

dari

package

importjavax.swing.*;

Pernyataan,
nama=JOptionPane.showInputDialog(Silahkan masukkan nama
anda);

membuat sebuah input dialogJoptionPane,


Hasil dari dialog tersebut adalah String dan disimpan ke dalam variabel nama.
Sekarang kita membuat pesan, yang akan disimpan dalam variabelpsn,
Stringpsn=Halosaya+nama;

Pernyataan,
JoptionPane.showMessageDialog(null,psn);

adalah menampilkan sebuah dialog yang berisi sebuah pesan dan tombol OK.
2.4

Latihan
a)

Buatlah Program dengan menggunakan class JoptionPane dari package


javax.swing dengan output sebagai berikut :
Masukkan Nama : <Nama>
Masukkan NIM : <NIM>
Masukkan Jurusan : <Jurusan>
Halo <Nama>, NIM anda <NIM>, anda adalah Mahasiswa Jurusan <Jurusan>

BAB 3
STRUKTUR KONTROL
3.1

Tujuan
Menggunakan struktur kontrol pemilihan (if, else, switch) yang digunakan

untuk memilih blok kode yang akan dieksekusi


Menggunakan struktur kontrol pengulangan (while, do-while, for) untuk

mengeksekusi blok tertentu pada program beberapa kali


Menggunakan pernyataan-pernyataan percabangan (break, continue,

return) yang digunakan untuk mengatur arah dari aliran programming


3.2

Latar Belakang
Pada bab ini kita akan mendiskusikan bagaimana membuat program yang menggunakan
struktur kontrol pemilihan dan pengulangan serta menggunakan pernyataan-pernyataan
percabangan.

3.3

Percobaan
3.3.1

Percobaan 1 (seleksi_if.java)
publicclassseleksi_if{
publicstaticvoidmain(String[]args){
intjmlhmhs=105;
intdayatampungkelas=100;
if(jmlhmhs>100){
System.out.println(Kelasmelebihikapasitas);
}

Hasil :
Kelasmelebihikapasitas

Pembahasan :
Struktur kontrol pemilihan menggunakan if adalah pernyataan kondisi yang
digunakan untuk pengambilan keputusan terhadap dua buah kemungkinan.
Statemen if bisa berdiri sendiri atau dengan menggunakan else.
Bentuk pernyataan if :
if(kondisi){
//blokpernyataanyangdijalankan,bilakondisibenar}

Perbedaan

kondisional if pada

Java

dibandingkan

dengan

bahasa

pemrograman lain yaitu kondisional pada Java hanya menghasilkan nilai boolean
(true atau false). Pada C dan C++, nilai balik bisa berupa integer.
3.3.2

Percobaan 2 (seleksi_if_else.java)
publicclassseleksi_if_else{
publicstaticvoidmain(String[]args){
inttotalbelanja=100000;
intjmlh_brg_dibeli=2;
doublediskon=0.25;
doublehrg_brg_stlh_diskon;
if(totalbelanja>50000&&jmlh_brg_dibeli>1)
{hrg_brg_stlh_diskon=totalbelanja(totalbelanja*diskon);
System.out.println

("Harga

barang

setelah

diskon:"+hrg_brg_stlh_diskon);
}
else{System.out.println("Maafandabelumdapatdiskon");}
}
}

Hasil :
Hargabarangsetelahdiskon:75000.0

Pembahasan :
Pernyataan ifelse mengatur pernyataan yang dijalankan sewaktu kondisi
bernilai true atau false.

Bentuk pernyataan :
if(kondisi){
//blokpernyataanyangdijalankan,bilakondisibenar
}
else{
//blokpernyataanyangdijalankan,bilakondisisalah}
3.3.3

Percobaan 3 (seleksi_if_bersarang.java)
publicclassseleksi_if_bersarang{
publicstaticvoidmain(String[]args){
intnilai_angka=75;
if(nilai_angka>=85&&nilai_angka<=100){
System.out.println("NilaiHurufA");}
elseif(nilai_angka>=70&&nilai_angka<85){
System.out.println("NilaiHurufB");}
elseif(nilai_angka>=55&&nilai_angka<70){
System.out.println("NilaiHurufC");}
elseif(nilai_angka==50&&nilai_angka<55){
System.out.println("NilaiHurufD");}
else{
System.out.println("NilaiHurufE");}
}
}

Hasil :
NilaiHurufB

Pembahasan :
Pernyataan if-else if mengatur pernyataan yang dijalankan sewaktu kondisi
berupa pilihan
Bentuk pernyataannya :
if(kondisix){
//pernyataanyangdijalankan,apabilakondisixbenar}
elseif(kondisiy){
//pernyataanyangdijalankan,apabilakondisiybenar}
elseif(kondisiz){

//pernyataanyangdijalankan,apabilakondisizbenar}
else{
//pernyataanyangdijalankanuntukkondisiselainitu}

3.3.4

Percobaan 4 (seleksi_switch.java)
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.IOException;
publicclassseleksi_switch{
publicstaticvoidmain(String[]args){
BufferedReader InputData = new BufferedReader (new
InputStreamReader(System.in));
StringangkaInput=null;
System.out.print("Masukkankodehari[1...7]:");
try{
angkaInput=InputData.readLine();
}
catch(IOExceptione){
System.out.println("Error");
}
intHari=Integer.valueOf(angkaInput).intValue();
switch(Hari){
case1:System.out.println("Minggu");break;
case2:System.out.println("Senin");break;
case3:System.out.println("Selasa");break;
case4:System.out.println("Rabu");break;
case5:System.out.println("Kamis");break;
case6:System.out.println("Jum'at");break;
case7:System.out.println("Sabtu");break;
default :System.out.println("Kode hari yang anda masukkan
salah");}
}
}

Hasil :
Masukkankodehari[1...7]:4
Rabu

Pembahasan :
Pernyataan switch mengijinkan beberapa pilihan jalur eksekusi. Pernyataan
Switch bekerja pada tipe data byte, short, char dan int yang merupakan tipe data
primitif.
Bentuk pernyataan switch :
switch(variabel){
case [data] : <pernyataan> // dieksekusi apabila seleksi pada
variabelsesuaidengandata(bernilaitrue)
default : <pernyataan> // dieksekusi apabila seleksi pada
variabelsesuaidengandata(bernilaifalse)
}

Tidak seperti pada pernyataan if, beberapa pernyataan pada struktur pernyataan
switch akan dieksekusi tanpa memerlukan tanda kurung kurawal ({})
Pada program diatas pernyataan switch akan menganalisa hasil inputan dari
keyboard yang ditampung dalam variabel angkaInput yang awalnya adalah
sebuah String. Pada pernyataan :
intHari=Integer.valueOf(angkaInput).intValue();

variabel angkaInput yang tadinya berupa String dirubah kedalam Integer yang
ditampung dalam variabel Hari. Pernyataan switch nantinya akan menyeleksi isi
dari variabel Hari tersebut.
3.3.5

Percobaan 5 (loop_for.java)
publicclassloop_for{
publicstaticvoidmain(String[]args){
inti;
for(i=1;i<5;i++)
{
if(i%2==0)
{System.out.println(i+"adalahGenap");}
else
{System.out.println(i+"adalahGanjil");}
}
}
}

Hasil :

1adalahGanjil
2adalahGenap
3adalahGanjil
4adalahGenap

Pembahasan :
For sering disebut dengan for loop, karena digunakan untuk proses looping atau
pengulangan.
Bentuk pernyataan :
for(inisialisasi;kondisi;step_ekspresi){
pernyataan;}

dimana,
inisialisasiyaitu
kondisi yaitu

inisialisasi dari variabel loop

membandingkan variabel loop pada nilai batas tertentu

step_ekspresi yaitu

melakukan update terhadap variabel loop, biasanya berupa

penambahan atau pengurangan


Sebagaicontohpadapernyataan:
for(i=1;i<5;i++)
i=1merupakan

inisialisasi dimana variabelimerupakan variabel loop,

sedangkani<5merupakan kondisi dimana jika nilai variabelimencapai


batas(i<5)maka loop akan berhenti. Dan pernyataani++merupakan
step_ekspresi dimana variabelimengalami penambahan 1 atau dapat juga
dinyatakan dengani=i+1
3.3.6

Percobaan 6 (loop_while.java)
publicclassloop_while{
publicstaticvoidmain(String[]args){
intx=10;
while(x>0){
System.out.println("Nilaix:"+x);
x;}
}
}

Hasil :
Nilaix:10

Nilaix:9
Nilaix:8
Nilaix:7
Nilaix:6
Nilaix:5
Nilaix:4
Nilaix:3
Nilaix:2
Nilaix:1

Pembahasan :
Pernyataan while digunakan untuk melakukan proses pengulangan suatu blok
pernyataan selama kondisinya bernilai true. Ketika kondisi salah, pernyataan
dalam blok bisa saja tidak dijalankan sama sekali.
Bentuk pernyataan:
while(kondisi){
pernyataan;}

3.3.7

Percobaan 7 (loop_do_while.java)
publicclassloop_do_while{
publicstaticvoidmain(String[]args){
inti=1;
do{
System.out.println("Nilaii:"+i);
i++;
}
while(i<10);
}
}

Hasil :
Nilaii:1
Nilaii:2
Nilaii:3
Nilaii:4

Nilaii:5
Nilaii:6
Nilaii:7
Nilaii:8
Nilaii:9

Pembahasan :
Dowhile

loop mirip dengan while-loop. Pernyataan di dalam dowhile loop

akan diekseskusi beberapa kali selama kondisi bernilai benar (true).


Perbedaan antara while dan dowhile loop adalah dimana pernyataan di dalam
do-while loop akan dieksekusi sedikitnya satu kali.
Bentuk pernyataan dowhile,
do{
statemen1;
statemen2;
}
while(booleanexpression);

3.3.8

Percobaan 8 (pernyataanBreak.java)
publicclasspernyataanBreak{
publicstaticvoidmain(String[]args){
for(inti=1;i<5;i++){
if(i%2==0)break;
System.out.println("Nilaii:"+i);
}
}
}

Hasil:
Nilaii:1

Pembahasan :
Pernyataan break digunakan untuk menghentikan loop, pada pernyataan
for(inti=1;i<5;i++), sejatinya

loop akan berhenti apabila i bernilai 5

karena menghasilkan nilaiboolean(false), namun karena pada pernyataan


if(i%2==0)break;menghendaki jikaibernilai genap

maka loop berhenti.

3.3.9

Percobaan 9 (pernyataanContinue.java)
publicclasspernyataanContinue{
publicstaticvoidmain(String[]args){
inti=1;
while(i<11){
if(i==7);{
i++;
continue;}
}
System.out.println("Nilaii"+i);
i++;}
}

Hasil :
Nilaii:11

Pembahasan :
pernyataan continue digunakan untuk melanjutkan eksekusi ke suatu
pengulangan (loop). Sama halnya dengan pernyataan break, penggunaan
continue bisa berbentuk tanpa label atau berlabel.
3.3.10

Percobaan 10 (pernyataanReturn.java)
publicclasspernyataanReturn{
voidperkalian(inti,intj){
inthasilkali=i*j;
System.out.println("Hasilperkalian:"+hasilkali);
return;
}
publicstaticvoidmain(String[]args){
pernyataanReturna=newpernyataanReturn();
a.perkalian(5,6);
}
}

Hasil :
Hasilperkalian:30

Pembahasan :
Pernyataan return digunakan untuk keluar dari sebuah method. Pernyataan
return

memiliki dua bentuk : memberikan sebuah nilai, dan tidak memberikan

sebuah nilai.
Untuk memberikan nilai, cukup berikan nilai (atau ekspresi yang menghasilkan
sebuah nilai) sesudah kata return. Contohnya,
return++count;

atau
returnHello;

Tipe data dari nilai yang diberikan harus sama dengan tipe dari method yang
dibuat. Ketika sebuah method void dideklarasikan, gunakan bentuk return yang
tidak memberikan nilai. Contohnya ,
return;
3.4

Latihan
a) Buatlah program dengan menggunakan pernyataan seleksi yang menentukan hari
kerja atau hari libur, dimana hari kerja yaitu hari senin sampai dengan jum'at.
Sedangkan hari libur adalah sabtu dan minggu.
b) Buatlah program dengan output sebagai berikut :
*
**
***
c) Buatlah program menggunakan seleksi dipadukan dengan input keyboard dimana
outputnya adalah sebagai berikut :
Masukkan kode buku : T-INF-001-WAH
Masukkan Tanggal-Pinjam : 10 September 2010
Masukkan Tanggal-Kembali : 19 Oktober 2010
Denda : Rp. 3.000,Ketentuan peminjaman buku : Maksimal 3 Hari, denda per hari Rp.1.000,-

BAB 4
ARRAY
4.1

Tujuan
Mendeklarasikan dan membuat array
Mengakses elemen-elemen didalam array
Menentukan jumlah elemen didalam sebuah array

Mendeklarasikan dan membuat array multidimensi


4.2

Latar Belakang
Pada bab ini kita akan mendiskusikan mengenai array dalam Java. Pertama, kita akan
mendefinisikan apa yang dimaksud dengan array, kemudian

kita

juga

akan

mendiskusikan bagaimana mendeklarasikannya dan menggunakannya dalam Java.


4.3

Percobaan
4.3.1

Percobaan1
publicclassarray1{
publicstaticvoidmain(String[]args){
intmyArray[]={10,20,30,40,50};
System.out.println("IsielemenMyArraypertama:"+myArray[0]);
System.out.println("IsielemenMyArraykedua:"+myArray[1]);
System.out.println("IsielemenMyArraypertama:"+myArray[2]);
System.out.println("IsielemenMyArraypertama:"+myArray[3]);
System.out.println("IsielemenMyArraypertama:"+myArray[4]);
}
}

Hasil :
IsielemenMyArraypertama:10
IsielemenMyArraykedua:20
IsielemenMyArraypertama:30
IsielemenMyArraypertama:40
IsielemenMyArraypertama:50

Pembahasan :
Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama
dalam didalam sebuah blok memori yang berdekatan yang kemudian dibagi
menjadi beberapa ruang. Array adalah sebuah variabel / sebuah lokasi tertentu
yang memiliki satu nama sebagai identifier, namun identifier ini dapat
menyimpan lebih dari sebuah nilai.
Langkah-langkah menciptakan array yaitu pertama, mendeklarasikan variabel

array, kedua menciptakan objek array.


Bentuk deklarasi variabel array :
tipedataprimitif[]namaVariabel;
namakelas[]namaVariabel;

Atau,
tipedataprimitifnamaVariabel[];
namakelasnamaVariabel[];

Contoh :
String[]kata;
int[]nomor;
Atau,
Stringkata[];
intnomor[];

Untuk menciptakan objek array, bentuk deklarasinya adalah sebagai berikut :


namaVariabel=newtipedataprimitif[jumlahelemen];
namaVariabel=newnamakelas[jumlahelemen];

Contoh :
nomor=newint[10];
kota=newString[5];

Atau kita dapat mempersingkat deklarasi variabel dan objek array sebagai berikut
:
String[]kota=newString[8];
int[]nomor=newint[7];

Selanjutnya, kita dapat mengakses elemen array dengan deklarasi sebagai berikut
:
namaVariabelArray[nomorelemen];

Contoh :
negara[0]=Indonesia;

Atau kita dapat secara langsung memberi nilai ketika objek array diciptakan.
Seperti pada percobaan1 diatas :
intmyArray[]={10,20,30,40,50};

4.3.2

Percobaan2
publicclassarray2{
publicstaticvoidmain(String[]args){
intmyArray[]={30,50,70,90,110};
for(inti=0;i<myArray.length;i++)
System.out.println("Elemenke"+i+":"+myArray[i]);
}
}

Hasil :
Elemenke0:30
Elemenke1:50
Elemenke2:70
Elemenke3:90
Elemenke4:110

Pembahasan:
Kita dapat memodifikasi kode program untuk dapat mengakses elemen array
dengan menggunakan loop, seperti pada contoh diatas kita mendefinisikan
variabel i untuk dapat mengakses setiap elemen secara lebih ringkas.
Statemen :
for(inti=0;i<myArray.length;i++)
Maksudnya apabilainilainya

lebih kecil dari panjang array(myArray.length),

maka tambahkan satu nilai i(i=i+1) sampai nilai i sama dengan panjang
array sehingga keluar dari loop.
4.3.3

Percobaan3
publicclassarray3{
publicstaticvoidmain(String[]args){
StringmyArray[][]={{"Negara","Ibukota"},
{"Indonesia","Jakarta"}};

System.out.println(myArray[0][0]+myArray[1][0]);
System.out.println(myArray[0][1]+myArray[1][1]);
}
}

Hasil :
NegaraIndonesia
IbukotaJakarta

Pembahasan :
Array multidimensi adalah array dari array, dengan pengaksesan [noBaris]
[noKolom]. Jadi jika dibuat tabel, gambarannya sebagai berikut :
Negara [Baris0][Kolom0] Ibukota [Baris0][Kolom1]
Indonesia[Baris1][Kolom0] Jakarta [Baris1][Kolom1]
4.4

Latihan
a) Buatlah program dengan output sebagai berikut menggunakan array multidimensi :
Budi adalah anak dari Bapak Yanto
Joko adalah anak dari Bapak Yudi
Ibu Rina adalah Istri dari Bapak Yanto
Ibu Lina adalah Istri dari Bapak Yudi
BAB 5
KELAS DAN OBJEK

5.1

Tujuan
Membuat class sendiri
Mendeklarasikan atribut dan method pada class
Membuat dan memanggil overloading method
Mengimport dan membuat constructor
Menggunakan access modifier untuk mengendalikan akses terhadap class member

5.2

Latar Belakang
Pada bab ini kita akan mempelajari bagaimana menuliskan sebuah class sendiri.

5.3

Percobaan
5.3.1

Percobaan1 (Manusia.java)
publicclassManusia{
public void identitas(String nama, String tempat_lahir, String
tgl_lahir,intberat_badan,inttinggi_badan){
System.out.println("Namasaya:"+nama);
System.out.println("Tempatlahir:"+tempat_lahir);
System.out.println("Tanggallahir:"+tgl_lahir);
System.out.println("BeratBadan:"+berat_badan+"kg");
System.out.println("Tanggallahir:"+tinggi_badan+"cm");}
publicstaticvoidmain(String[]args){
ManusiaOrang_Indonesia=newManusia();
Orang_Indonesia.identitas("Budi","Yogyakarta","01011991",65,
175);
}}

Hasil :
Namasaya:Budi
Tempatlahir:Yogyakarta
Tanggallahir:01011991
BeratBadan:65kg
Tanggallahir:175cm

Pembahasan :
Untuk membuat sebuah objek atau sebuah instance pada sebuah class.
Kita menggunakan operator new. Sebagai contoh, jika anda ingin membuat
instance dari class String, kita menggunakan kode berikut :
Stringstr2=newString(HelloWorld);

ini juga sama dengan,


Stringstr2=Hello;

Pada contoh diatas, sebuah Class Manusia dibuat kemudian dibuatlah


metode/fungsi identitas yang berisi parameter nama, tempat_lahir,
tgl_lahir, berat_badan, tinggi_badan.

metode/fungsi adalah bagian-

bagian kode yang dapat dipanggil oleh program utama atau dari metode/fungsi
lainnya untuk menjalankan fungsi yang spesifik.

5.3.2

Percobaan2 (Mobil.java)
publicclassMobil{
Stringwarna;
intjumlah_pintu;
floatisi_tangki;
publicvoidMaju(intmaju){
intmajukedepan=0;
majukedepan=majukedepan+maju;
System.out.println("Mobilmajusejauh"+maju+"meter");
}
publicvoidMundur(intmundur){
intmundurbelakang=0;
mundurbelakang=mundurbelakang+mundur;
System.out.println("Mobilmundursejauh"+mundur+"meter");
}
publicstaticvoidmain(String[]args){
MobilBMW=newMobil();
BMW.Maju(75);
BMW.Mundur(5);
}}

Hasil :
Mobilmajusejauh75meter
Mobilmundursejauh5meter

Pembahasan :
Perhatikan syntax program diatas bahwa baik metode/fungsi Maju()
serta Mundur() kita deklarasikan sebagai public. Apa artinya ? Artinya :

public. Berarti kelak kita dapat memanfaatkan metode Maju() dengan

memanggilnya dari kelas yang lain

Maju(int maju). Berarti metode/fungsi Maju() dapat menerima

nilai-nilai tertentu dari metode/fungsi lain yang memanggilnya. (Misalnya saat


metode/fungsi

Maju()

ini

dipanggil

dari

metode/fungsi

main(),

metode/fungsi Maju() akan menerima bilangan bulat [integer] dari pengguna


program).

Selanjutnya, kita akan membahas logika pemrograman untuk perintahperintah yang ada di dalam metode/fungsi Maju(). Sebelumnya kita akan
menulis ulang perintah-perintah yang ada dalam metode/fungsi Maju() sebagai
berikut :
intmajukedepan=0;
majukedepan=majukedepan+maju;

Peubah (variabel) majukedepan adalah peubah yang ada dalam


metode/fungsi Maju() yang kelak digunakan untuk menampung nilai peubah
maju yang berasal dari metode/fungsi pemanggilnya serta digunakan untuk
mengembalikan nilai ke metode pemanggilnya. Kita memberi nilai awal
(melakukan inisialisasi) peubah majukedepan ini sebagai nol(0) sehingga
kelak akan mencerminkan nilai peubah maju yang berasal dari metode
pemanggilnya. Kemudian, persamaan sederhana :
majukedepan=majukedepan+maju;
digunakan untuk memasukkan nilai peubah maju ke peubah majukedepan
Pada metode/fungsi utama (Main program), dibuatlah sebuah objekBMW
dari kelas Mobil menggunakan kata kunci new yang nantinya akan
memanggil metode/fungsiMaju()maupunMundur()pada baris :
BMW.Maju(75);
BMW.Mundur(5);
Syntax untuk pemanggilan metode/fungsi itu secara umum adalah :
Nama_Kelas/Nama_Objek.Nama_metode(parameter)
parameter yang kita berikan saat pemanggilan metode Maju() maupun
Mundur()adalah bilangan bulat (integer).
5.3.3

Percobaan3 (penduduk.java)
publicclasspenduduk{
privateStringnama,ttl,alamat,nama_ortu,pekerjaan;
privateintpenghasilan;
publicvoidsetNama(Stringnama){
}
publicvoidsetTTL(Stringttl){
}
publicvoidsetAlamat(Stringalamat){

}
publicvoidsetOrtu(Stringnama_ortu){
}
publicvoidsetPekerjaan(Stringpekerjaan){
}
publicvoidsetPenghasilan(intpenghasilan){
}
public void printIdentitas(String nama,String ttl, String
alamat,Stringnama_ortu,Stringpekerjaan){
System.out.println("NamaPenduduk:"+nama);
System.out.println("Tempat/TanggalLahir:"+ttl);
System.out.println("AlamatRumah:"+alamat);
System.out.println("NamaOrangTua:"+nama_ortu);
System.out.println("Pekerjaan:"+pekerjaan);
}
publicvoidprintIdentitas(intpenghasilan){

System.out.println("Penghasilan bersih perbulan

Rp."+penghasilan);
}

publicstaticvoidmain(String[]args){
pendudukpk_kota=newpenduduk();
pk_kota.printIdentitas("Ruby","Gorontalo/01 Januari
1990","Jl.CempakaNo.5Gorontalo","Wiryana","Wiraswasta");
pk_kota.printIdentitas(5000000);
}
}

Hasil :
NamaPenduduk:Ruby
Tempat/TanggalLahir:Gorontalo/01Januari1990
AlamatRumah:Jl.CempakaNo.5Gorontalo
NamaOrangTua:Wiryana
Pekerjaan:Wiraswasta

PenghasilanbersihperbulanRp.5000000

Pembahasan :
Dalam class yang kita buat, kadangkala kita menginginkan untuk
membuat method dengan nama yang sama namun mempunyai fungsi yang
berbeda menurut parameter yang digunakan. Kemampuan ini dimungkinkan
dalam pemrograman java, dan dikenal sebagai overloading method.
Overloading method mengijinkan sebuah metode/fungsi dengan nama
yang sama namun memiliki parameter yang berbeda sehingga mempunyai
implementasi dan return value yang berbeda pula. Daripada memberikan nama
yang berbeda pada setiap pembuatan metode/fungsi, overloading method dapat
digunakan pada operasi yang sama namun berbeda dalam implementasinya.

Overloading method memiliki properties sebagai berikut :

5.3.4

Nama yang sama

Parameter yang berbeda

Nilai kembalian (return) bisa sama ataupun berbeda

Percobaan4 (konstruktor.java)
publicclassAktor{
Stringnama;
intumur;
Aktor(Stringn,intu){
nama=n;
umur=u;
}
voidtampilAktor(){
System.out.println("Namaku:"+nama);
System.out.println("Umurku:"+umur+"tahun");
}
publicstaticvoidmain(Stringargs[]){
Aktora;

System.out.println("");
a=newAktor("DedyMizwar",50);
a.tampilAktor();
System.out.println("============");
System.out.println("");
a=newAktor("RanoKarno",45);
a.tampilAktor();
System.out.println("============");
}
}

Hasil :
Namaku:DedyMizwar
Umurku:50tahun
============
Namaku:RanoKarno
Umurku:45tahun
============
Pembahasan :

Constructor sangatlah penting pada pembentukan sebuah objek. Constructor


adalah metode dimana seluruh inisialisasi objek ditempatkan.
Berikut ini adalah properties dari constructor :

Constructor memiliki nama yang sama dengan class

sebuah constructor mirip dengan metode pada umumnya, namun

informasi-informasi berikut yang dapat ditempatkan pada header sebuah


constructor, scope atau identifikasi pengaksesan (misal : public), nama dari
konstruktor dan parameter

constructor tidak memiliki nilai balik (return value)

constructor tidak dapat dipanggil secara langsung, namun harus dipanggil

dengan menggunakan operator new pada pembentukan sebuah class.


5.4

Latihan
5.4.1 Modifikasi program Mobil.java dengan menambahkan beberapa metode/fungsi

pada kelas Mobil dan buatlah dua objek lagi dari kelas Mobil yang memanggil
metode/fungsi baru yang sudah anda buat !
5.4.2 Buatlah program yang menerapkan konsep kelas dan objek dengan output
sebagai berikut :
NamaMahasiswa

:Joni

NIM

:5314110007

Semester

:V

IPSemesterini

:3,50

Andaberhakmengontrak24SKSpadaSemesterVI

5.4.3 Buatlah program yang menerapkan konsep overloading method dan constructor
pada sistem perpustakaan. Kembangkan sesuai kemampuan anda !
BAB 6
PEWARISAN, POLIMORFISME, INTERFACE
6.1

6.2

Tujuan

Mendefinisikan superclass dan subclasses

Override method dari superclasses

Membuat method final dan class final

Latar Belakang
Pada bab ini kita akan membicarakan bagaimana suatu class dapat mewariskan sifat dari
class yang sudah ada. Kita juga akan membicarakan sifat khusus dari Java dimana kita
dapat secara otomatis memakai method yang tepat untuk setiap objek tanpa
memperhatikan asal dari subclass object. Pada akhirnya, kita akan mendiskusikan
tentang interface

6.3

Percobaan
6.3..1 Percobaan 1
publicclassPerson{
protectedStringname;
protectedStringaddress;
/**
*Defaultconstructor
*/

publicPerson(){
System.out.println("InsidePerson:Constructor");
name="";
address="";
}
/**
*Constructordenganduaparameter
*/
publicPerson(Stringname,Stringaddress){
this.name=name;
this.address=address;
}
/**
*Methodaccessor
*/
publicStringgetName(){
returnname;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetName(Stringname){
this.name=name;
}

publicvoidsetAddress(Stringadd){
this.address=add;
}
}
publicclassStudentextendsPerson{
publicStudent()
{
//super("SomeName","SomeAddress");
//super();
//super.name="name";
System.out.println("InsideStudent:Constructor");
}
publicstaticvoidmain(String[]args){
Studentanna=newStudent();
}
}

Hasil:
InsidePerson:Constructor
InsideStudent:Constructor
Pembahasan:
Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected.
Alasannya kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa
diakses oleh subclasses dari superclassess. Jika kita mendeklarasikannya sebagai
private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti

dari superclass yang dideklarasikan sebagai public, protected dan default dapat
diakses oleh subclasses-nya.
Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga
sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita
dapat mewariskan semua properti dan method dari setiap class Person yang ada.
Untuk melakukan ini, kita tulis,
publicclassStudentextendsPerson
{
publicStudent(){
System.out.println(InsideStudent:Constructor);
//beberapakodedisini
}
//beberapakodedisini
}
Ketika object Student di-instantiate, default constructor dari superclass secara
mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu,
pernyataan di dalam subclass dieksekusi. Untuk mengilustrasikannya, perhatikan
kode berikut,
publicstaticvoidmain(String[]args){
Studentanna=newStudent();
}
Dalam kode ini, kita membuat sebuah object dari class Student.
6.3..2 Percobaan 2
publicclassPerson{
protectedStringname;
protectedStringaddress;

/**
*Defaultconstructor
*/
publicPerson(){
System.out.println("InsidePerson:Constructor");
name="";
address="";
}
/**
*Constructordenganduaparameter
*/
publicPerson(Stringname,Stringaddress){
this.name=name;
this.address=address;
}
/**
*Methodaccessor
*/
publicStringgetName(){
System.out.println("PersonName:"+name);
returnname;
}
publicStringgetAddress(){
returnaddress;

}
publicvoidsetName(Stringname){
this.name=name;
}
publicvoidsetAddress(Stringadd){
this.address=add;
}
}
publicclassStudentextendsPerson{
publicStudent()
{
//super("SomeName","SomeAddress");
//super();
//super.name="name";
System.out.println("InsideStudent:Constructor");
}
publicStringgetName(){
System.out.println("StudentName:"+name);
returnname;
}
publicstaticvoidmain(String[]args){
Studentanna=newStudent();
}
}

publicclassEmployeeextendsPerson{
publicStringgetName(){
System.out.println("EmployeeName:"+name);
returnname;
}
publicstaticvoidmain(String[]args)
{
Personref;
StudentstudentObject=newStudent();
EmployeeemployeeObject=newEmployee();
ref = studentObject; //Person menunjuk kepada object
Student
String temp = ref.getName(); //getName dari Student
classdipanggil
System.out.println(temp);
ref=employeeObject;//Personmenunjukkepadaobject
Employee
temp = ref.getName(); //getName dari Employee class
dipanggil
System.out.println(temp);
}
}

Hasil:
InsidePerson:Constructor
InsideStudent:Constructor

InsidePerson:Constructor
InsideStudent:Constructor
InsidePerson:Constructor
StudentName:
EmployeeName:
Pembahasan:
Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass
ke sebuahobject dari subclass tersebut. Sebagai contohnya,
publicstaticmain(String[]args)
{
Person
ref;
Student
Employee
studentObject=newStudent();
employeeObject=newEmployee();
ref=studentObject;//Personmenunjukkepada
//objectStudent
//beberapakodedisini
}
Sekarang dimisalkan kita punya method getName dalam superclass Person kita,
dan kita override method ini dalam kedua subclasses Student dan Employee,
publicclassPerson
{
publicStringgetName(){

System.out.println(PersonName:+name);
returnname;
}
}
publicclassStudentextendsPerson
{
publicStringgetName(){
System.out.println(StudentName:+name);
returnname;
}
}
publicclassEmployeeextendsPerson
{
publicStringgetName(){
System.out.println(EmployeeName:+name);
returnname;
}
Kembali ke method utama kita, ketika kita mencoba memanggil method
getName dari reference Person ref, method getName dari object Student akan
dipanggil. Sekarang, jika kita berikan ref ke object Employee, method getName
dari Employee akan dipanggil.
publicstaticmain(String[]args)
{
Person
ref;

Student
Employee
studentObject=newStudent();
employeeObject=newEmployee();
ref=studentObject;//Personmenunjukkepada
//objectStudent
Stringtemp=ref.getName();//getNamedariStudent
//classdipanggil
System.out.println(temp);
ref=employeeObject;//Personmenunjukkepada
//objectEmployee
Stringtemp=ref.getName();//getNamedariEmployee
//classdipanggil
System.out.println(temp);
}
Kemampuan dari reference untuk mengubah sifat menurut object apa yang
dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan
multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari
superclass tunggal, secara otomatis menunjuk method yang tepat untuk
menggunakannya ke particular object berdasar subclass yang termasuk di
dalamnya.
Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita
mencoba melalui reference ke method. Misalkan kita punya method static
printInformation yang mengakibatkan object Person sebagai reference, kita dapat
me-reference dari tipe Employee dan tipe Student ke method ini selama itu masih
subclass dari class Person.
publicstaticmain(String[]args)
{
Student

studentObject=newStudent();
Employee
employeeObject=newEmployee();
printInformation(studentObject);
printInformation(employeeObject);
}
publicstaticprintInformation(Personp){
....
}

6.4

Latihan
6.4..1 Kembangkan class matematika dan matematikaBeraksi, lakukan overloading
pada method yang ada (pertambahan, pengurangan, perkalian, pembagian). Method
baru adalah bertipe data double (pecahan) dan memiliki 3 parameter
Uji di kelsa matematikaBeraksi dengan parameter pecahan : 12,5 28,7, 14,2
Misalnya : pertambahan(12,5, 28,7, 14,2)

BAB 7
EXCEPTION HANDLING
7.1

Tujuan
Menangani exception dengan menggunakan try, catch dan finally
Membedakan penggunaan antara throw dengan throws
Menggunakan exception class yang berbeda-beda
Membedakan antara checked exceptions dan unchecked exceptions
Membuat exceptions class sendiri

7.2

Latar Belakang
Pada bab ini akan dipelajari bagaimana penanganan akan kesalahan pada program yang
dikembangkan. Bahasa pemrograman Java dapat menangani kesalahan-kesalahan yang
secara potensial dapat dipulihkan melalui suatu objek yang bernama exception, yaitu
suatu objek khusus yang dapat secara virtual menangani semua kesalahan dalam
program yang ditulis menggunakan Java.

7.3

Percobaan
7.3.1

Percobaan1
publicclassTesException{
publicstaticvoidmain(String[]args){
intarray1[]=newint[10];

try{
array1[1]=10;
System.out.println("Pernyataanyangbenar");
array1[100]=20;
System.out.println("Pernyataanyangtidakbenar");
}
catch(ArrayIndexOutOfBoundsExceptione){
System.out.println("Kesalahandalamindeksarray");
}
}}

Hasil:
Pernyataanyangbenar
Kesalahandalamindeksarray
Pembahasan:
Pada contoh program diatas, larik array1 dibuat dengan panjang 10.
Kemudian, pernyataan deklarasi larik diikuti oleh pernyataan try yang
memuat beberapa pernyataan yang akan dilakukan oleh bahasa Java saat tidak
terjadi

masalah.

Pernyataan

array1[1]=10;

dan

System.out.println("Pernyataan yang benar");

akan

dieksekusi secara normal. Namun pada pernyataanarray1[100]=20;akan


menghasilkan exception karena ukuran array1 yang hanya 10
dipaksakan diisi oleh elemen ke-100 sehingga try akan langsung melempar
pada

catch

sehingga

pernyataan

System.out.println("Pernyataan yang tidak benar");


tidak akan pernah dieksekusi melainkan pernyataan yang ada didalam blok
catch yaitu System.out.println("Kesalahan dalam indeks
array");
7.3.2

Percobaan2

publicclassTesFinally{
publicstaticvoidmain(String[]args){
intbilangan=100;
System.out.println("Sebelumpembagian");
for(inti=5;i>=0;i){
try{
System.out.print(bilangan+"/"+i+"=");
System.out.println(bilangan/i);
}
catch(RuntimeExceptionr){
System.out.println("Errorkarenapembagiannol!");
}
finally{
System.out.println("Bagianfinallydikerjakan");
}
}
System.out.println("Selesai");}
}
Hasil :
Sebelumpembagian
100/5=20
Bagianfinallydikerjakan
100/4=25
Bagianfinallydikerjakan
100/3=33
Bagianfinallydikerjakan
100/2=50
Bagianfinallydikerjakan
100/1=100
Bagianfinallydikerjakan
100/0=Errorkarenapembagiannol!

Bagianfinallydikerjakan
Selesai
Pembahasan :
Pada program diatas terdapat perulangan dimana bilangan yang nilainya adalah
100 akan dibagi dengan nilai i dan pengurangannya satu persatu sehingga dapat
dilihat

bahwa

blok

pernyataan

dibawah

try

yaitu

System.out.print(bilangan +" / " +i +" = "); dan


System.out.println(bilangan/i); akan selalu dieksekusi hingga
nilaiibernilai 0 maka akan menghasilkanRuntimeExceptionyang akan
tampil dimonitor , apabila tidak menangkap kesalahan tersebut dengan
pernyataan catch(RuntimeExceptionr). Sehingga ketika bilangan
100/0 yang menghasilkan RuntimeException ditangkap maka pernyataan
System.out.println("Error karena pembagian nol !");
akan dieksekusi. Untuk kata kunci finally ini akan selalu dieksekusi
walaupun kesalahan sudah ditangkap pada catch atau walaupun program
tidak memiliki kesalahan. Fungsi finallyyaitu untuk kasus yang tidak sesuai
dengan pernyataan-pernyataan catch. Ini mirip dengan kata kunci
defaultpada pernyataanswitch..case.
7.3.3

Percobaan3
publicclassTesThrow{
publicstaticvoidmain(String[]args){
int[]lariksaya=newint[10];
try{
lariksaya[100]=1;
}
catch(ArrayIndexOutOfBoundsExceptione)
{
e = new ArrayIndexOutOfBoundsException("Masukkan
elemenyangdiperkenankan!");
throw(e);

}
}}
Hasil :
Exception

in

thread

java.lang.ArrayIndexOutOfBoundsException:
elemen

yang

diperkenankan!

"main"
Masukkan

at

pertemuan7.TesThrow.main(TesThrow.java:20)
JavaResult:1
Pembahasan :
Kata kunci throw memulai konstruksi throw, diikuti dengan daftar parameter
dimana parameter ini merupakan objek eksepsi dan objek dideklarasikan sebagai
jenis eksepsi (exception) yang dikehendaki. Dalam Java (yaitu dalam
java.lang.Exception) atau exception-exception (exception) yang kita tentukan
sendiri.
Saat exception dilemparkan menggunakan pernyataan throw, kode yang sedang
berjalan akan dihentikan. Eksepsi (exception) akan dilewatkan ke rutin
pemanggil dan tidak ada kode yang dijalankan hingga eksepsi ditangani di suatu
tempat di bagian lain program.
Pada contoh diatas pada pernyataan lariksaya[100] = 1; akan
menghasilkan exception yang akan ditangkap oleh pernyataan catch
(ArrayIndexOutOfBoundsException e) sehingga, pernyataan e =
new ArrayIndexOutOfBoundsException("Masukkan elemen
yangdiperkenankan!"); akan menyampaikan pesan sesuai dengan apa
yang kita definisikan, kemudian kita melempat exception tersebut dengan
pernyataan throw(e);.
7.3.4

Percobaan4
publicclassThrowingClass{
staticvoidmyMethod()throwsClassNotFoundException{
thrownewClassNotFoundException("justademo");
}}

publicclassThrowsDemo{
publicstaticvoidmain(Stringargs[]){
try{
ThrowingClass.myMethod();
}catch(ClassNotFoundExceptione){
System.out.println(e);
}}}
Hasil :
java.lang.ClassNotFoundException:justademo
Pembahasan :
Jika sebuah method dapat menyebabkan sebuah exception namun tidak
menangkapnya, maka digunakan keyword throws. Aturan ini hanya berlaku pada
checked exception. Berikut ini penulisan syntax menggunakan keyword throws :
<type>

<methodName>

(<parameterList>) throws

<exceptionList>{
<methodBody>
}
Sebuah method perlu untuk menangkap ataupun mendaftar seluruh exceptions
yang mungkin terjadi, namun hal itu dapat menghilangkan tipe Error,
RuntimeException, ataupun subclass-nya.
Contoh diatas menunjukkan bahwa method myMethod tidak menangani
ClassNotFoundException Checked exceptions adalah exception yang
diperiksa oleh Java compiler. Compiler memeriksa keseluruhan program apakah
menangkap atau mendaftar exception yang terjadi dalam sintax throws. Apabila
checked exception tidak didaftar ataupun ditangkap, maka compiler error akan
ditampilkan.
Tidak seperti checked exceptions, unchecked exceptions tidak berupa compiletime checking dalam penanganan exceptions. Pondasi dasar dari unchecked
exception classes adalah Error, RuntimeException dan subclass-nya.

7.3.5

Percobaan5
public

class

HateStringException

extends

RuntimeException{
}
publicclassTestHateString{
publicstaticvoidmain(Stringargs[]){
Stringinput="invalidinput";
try{
if(input.equals("invalidinput")){
thrownewHateStringException();}
System.out.println("Stringaccepted.");}
catch(HateStringExceptione){
System.out.println("Ihatethisstring:"+input+
".");}
}}
Hasil :
I hate this string: invalid input.
Pembahasan :
Meskipun beberapa exception classes terdapat pada package java.lang namun
tidak mencukupi untuk menampung seluruh kemungkinan tipe exception yang
mungkin terjadi. Sehingga sangat mungkin bahwa Anda perlu untuk membuat
tipe exception tersendiri.
Dalam pembuatan tipe exception Anda sendiri, Anda hanya perlu untuk
membuat sebuah extended class terhadap RuntimeException class, maupun
Exception class lain. Selanjutnya tergantung pada Anda dalam memodifikasi
class sesuai permasalahan yang akan diselesaikan. Members dan constructors
dapat dimasukkan pada exception class milik Anda.

7.4

Latihan
7.4.1

Tentukan sebuah huruf bilangan heksadesimal (a-f) sebagai input. Konversi huruf

tersebut menjadi bilangan desimal. Tentukan exception class anda sendiri dan lakukan
penanganan jika input dari user bukan merupakan bilangan heksadesimal
7.4.2

Buatlah suatu program yang memilih apakah Mahasiswa tersebut merupakan

mahasiswa informatika atau bukan berdasarkan input kode jurusan. Misalkan kode
jurusan : 01-Teknik Informatika, 02-Teknik Sipil, 03-Teknik Elektro, 04-Teknik Industri,
05-Teknik Arsitektur, 06-Teknik Kriya. Jika yang dimasukkan bukan kode (misalkan
huruf) maka akan ditangani kesalahan tersebut menggunakan try..catch

BAB 8
ABSTRACT WINDOWING TOOLKIT (AWT) DAN SWING

8.1

Tujuan
Memahami persamaan dan perbedaan antara AWT dan Swing
Mengetahui perbedaan antara komponen dan kontainer
Mendesain aplikasi GUI menggunakan AWT
Mendesain aplikasi GUI menggunakan Swing
Menjelaskan tentang flow layout, border layout, dan grid layout dalam
komponen GUI

8.2

Latar Belakang
Tanpa mempelajari tentang Grapichal User Interface (GUI) API. Anda masih
tetap bisa membuat suatu program. Tetapi, program anda akan kelihatan tidak
menarik dan tidak nyaman digunakan bagi para user. Memiliki GUI yang baik
dapat memberi efek pada penggunaan aplikasi. Java menyediakan banyak tool
seperti Abstract Windowing Toolkit (AWT) dan Swing untuk mengembangkan
aplikasi GUI yang interaktif.

8.3

Percobaan1 (TesLabel.java)
importjava.awt.*;
publicclassTesLabelextendsjava.applet.Applet{
@Override
publicvoidinit(){
setFont(newFont("Arial",Font.BOLD,14));
setLayout(newGridLayout(3,1));
add(newLabel("ratakiri",Label.LEFT));
add(newLabel("ratatengah",Label.CENTER));

add(newLabel("ratakiri",Label.LEFT));
}
}

Hasil :

Pembahasan :
Bentuk paling sederhana dari komponen UI adalah label, yakni string teks yang
dapat kita pakai untuk memberi label pada komponen UI lainnya. Label tidak
bisa diedit.

Keunggulan label atas string teks lainnya adalah :

Kita tidak perlu menggambar ulang label sebagaimana string teks. Label
adalah elemen awt sehingga penggambarannya adalah tanggung jawab
awt.

Label mengikuti tata letak panel dimana ia berada dan dapat ditata
bersama dengan komponen UI lainnya.

Label adalah string teks yang tidak dapat diedit yang bekerja sebagai
pendeskripsi komponen awt lain. Untuk membuat label gunakan konstruktor
berikut ini :

Label() membuat label kosong, dengan teks tertera rata kiri

Label(String) membuat label dengan string teks tertentu, juga tertata rata
kiri

Label(String,int) membuat label dengan string teks dan cara pengaturan


tertentu. Angka yang menyatakan penataan teks disimpan dalam variabel
kelas dalam Label sehingga mudah diingat Label.RIGHT, Label.LEFT,
dan Label.CENTER

Kita dapat mengganti font label dengan menggunakan metode setFont(), baik
dipanggil pada label itu sendiri untuk mengubah masing-masing label, atau pada
komponen untuk mengubah seluruh label.
8.4

Percobaan2 (TesTombol.java)
importjava.awt.*;
publicclassTesTombolextendsjava.applet.Applet{
@Override
publicvoidinit(){
add(newButton("Rewind"));
add(newButton("Play"));
add(newButton("FastForward"));
add(newButton("Stop"));
}
}
Hasil :

Pembahasan :
Button adalah komponen antarmuka UI yang memicu beberapa aksi dalam
antarmuka saat di-klik. Untuk membuat button atau tombol ini dapat digunakan
konstruktor-konstruktor berikut ini :

Button() untuk membuat tombol kosong tanpa label

Button(String) untuk membuat tombol dengan string tertentu sebagai


label

Setelah memiliki objek Button, kita dapat mengambil nilai labelnya dengan
metode getLabel() dan mengatur labelnya dengan menggunakan metode
setLabel(String)
8.5

Percobaan3 (TesCheckbox.java)
importjava.awt.*;

public class Teschechkbox extends

java.applet.Applet{
@Override
publicvoidinit(){
setLayout(newFlowLayout(FlowLayout.LEFT));
add(newCheckbox("EsTeh"));
add(newCheckbox("EsJeruk"));
add(newCheckbox("EsSirup"));
add(newCheckbox("EsKelapaMuda",null,true));
add(newCheckbox("EsCampur"));
}
}
Hasil :

Pembahasan :

Checkbox adalah komponen UI yang memiliki dua kondisi : on dan off (atau
dipilih dan tidak dipilih, ditandai dan tidak ditandai, benar atau salah, dan
sebagainya). Tidak seperti button, checkbox biasanya tidak memicu aksi
langsung dalam UI, tetapi digunakan untuk menunjukkan fitur tambahan atau
aksi lain.
Checkbox dapat digunakan dalam dua cara :

Non-eksklusif. Diberikan seperangkat check box, beberapa diantaranya


dapat dipilih

Eksklusif. Diberikan seperangkat check box, hanya satu yang dapat


dipilih. Check box eksklusif disebut radio button

Kita dapat membuat check box dengan menggunakan salah satu konstruktor
berikut ini :

Checkbox() untuk membuat check box kosong, dalam keadaan tidak


terpilih

Checkbox(String) untuk membuat check box dengan string tertentu


sebagai label

Checkbox(String, null, boolean) untuk membuat checkbox yang dipilih


atau tidak dipilih berdasarkan argumen boolean true atau false

8.6

Percobaan4 (CheckboxGroupTest.java)
importjava.awt.*;
public

class

CheckboxGroupTest

java.applet.Applet{
@Override
publicvoidinit(){
setLayout(newFlowLayout(FlowLayout.LEFT));
CheckboxGroupcbg=newCheckboxGroup();
add(newCheckbox("Red",cbg,false));
add(newCheckbox("Blue",cbg,false));
add(newCheckbox("Yellow",cbg,false));
add(newCheckbox("Green",cbg,false));
add(newCheckbox("Orange",cbg,false));

extends

add(newCheckbox("Purple",cbg,false));
}
}
Hasil :

Pembahasan :
Radio button memiliki penampilan yang sama dengan check box, tetapi hanya
satu dari sekelompok yang dapat dipilih atau ditandai. Untuk membuat
sekelompok

radio

button,

mula-mula

harus

dibuat

instance

dari

CheckboxGroup.
CheckboxGroupcbg=newCheckboxGroup();
Kemudian kita buat dan kita tambahkan satu persatu check box menggunakan
konstruktor dengan 3 (tiga) argumen (yakni label, grup, dan kondisi checkbox).
Harap diingat bahwa karena radio button, perdefinisi hanya memiliki satu
checkbox yang terpilih pada satu saat, maka kondisi true terakhirlah yang akan
dipilih secara default.
add(newCheckbox(Tes,cbg,true);
add(newCheckbox(Tes,cbg,true);

8.7

Percobaan5 (TesChoice.java)
importjava.awt.*;

publicclassTesChoiceextendsjava.applet.Applet{
@Override
publicvoidinit(){
Choicec=newChoice();
c.addItem("Novel");
c.addItem("Komik");
c.addItem("KumpulanPuisi");
c.addItem("Majalah");
c.addItem("Koran");
Componentadd=add(c);
}
}
Hasil :

Pembahasan :
Menu pilihan (choice menu) adalah komponen UI yang lebih konpleks dari pada
label, button ataupun checkbox. Menu pilihan adalah menu pop-up (atau pulldown) dimana dapat memilih satu dari beberapa item yang tersedia. Kemudian
menu akan menampilkan pilihan tersebut pada layar. Fungsi menu pilihan ada
dasarnya sama untuk semua platform, tetapi tampilannya berbeda-beda
tergantung platform dimana menu tersebut dijalankan.
Untuk membuat menu pilihan kita harus membuat instance dari kelas Choice dan
kemudian menggunakan metode addItem() untuk menambahkan satu-persatu
item dalam urutan tertentu.

8.8

Percobaan6 (TesTextField.java)
importjava.awt.*;
publicclassTesTextFieldextendsjava.applet.Applet{
@Override
publicvoidinit(){
add(newLabel("KetikkannamaAnda"));
add(newTextField("Namaandadisini",45));
add(newLabel("Ketikkannomorteleponanda"));
add(newTextField(25));
add(new Label("Ketikkan password yang anda
inginkan"));
TextFieldt=newTextField(20);
t.setEchoChar('*');
add(t);
}
}
Hasil :

Pembahasan :
Text field adalah komponen UI yang memungkinkan kita memasukkan dan
mengedit teks. Biasanya text field hanya memiliki satu baris tampilan dan tidak
mempunyai penggulung (scrollbar). Berbeda dengan label, text field dapat diedit,
sehingga cocok untuk mengambil masukan teks dari pengguna, sedangkan label
hanya cocok untuk menampilkan teks.
Untuk membuat text field, gunakan konstruktor berikut ini :

TextField() untuk membuat TextField kosong yang lebarnya 0 karakter

TextField(int) untuk membuat text field kosong. Argumen integer


menunjukkan jumlah karakter minimum yang ditampilkan

TextField(String) untuk membuat text field yang diinisialisasi dengan


string tertentu

TextField(String,int) untuk membuat text field dengan lebar sejumlah


karakter tertentu (bergantung argumen integernya) berisi string tertentu.
Jika string lebih lebar dari daripada lebar ketentuannya, kita dapat
menggeser kotak teks ke kiri dan ke kanan.

Sebagai contoh, baris berikut ini membuat text field selebar 30 karakter dengan
string Zinedine Zidane sebagai isi awalnya.
TextField tf = new TextField(Zinedine
Zidane,30);
add(tf);
Kita juga dapat membuat text field yang menutupi karakter yang sebenarnya
diketik seperti misalnya pada password. Untuk membuatnya, mula-mula kita
harus membuat text field itu sendiri, kemudian menggunakan metode
setEchoCharacter() untuk mengatur karakter yang ditampilkan pada layer.
Berikut ini adalah contohnya :
TextFieldtf=newTextField(30);
tf.setEchoCharacter('*');

8.9

Percobaan7 (TesFlowLayout.java)
importjava.awt.*;
publicclassTesFlowLayoutextendsjava.applet.Applet{
@Override
publicvoidinit(){
setLayout(newFlowLayout());
add(newButton("Tombolx"));
add(newButton("Tomboly"));
add(newButton("Tombolz"));
add(newButton("Tombol1"));
add(newButton("Tombol2"));
add(newButton("Tombol3"));
}
}
Hasil :

Pembahasan :
Kelas FlowLayout adalah layout yang paling dasar. Pada flow layout ini
komponen ditambahkan ke panel satu persatu, baris demi baris. Jika komponen
tidak pas masuk satu baris, ia akan diteruskan ke baris lainnya. Flow layout juga

memiliki tatanan perataan (alignment) yang menentukan penataan tiap baris.


Secara default setiap baris diatur rata tengah (centered)
Untuk membuat penataan yang bersifat mengalir (flow layout) dapat digunakan
perintah berikut ini di dalam inisialisasi panel.
setLayout(new FlowLayout());
Untuk membuat penataan flow layout dengan perataan selain rata tengah, kita
bisa

menambahkan

variabel

kelas

FlowLayout.RIGHT

atau

FlowLayout.LEFT sebagai argumen


setLayout(new FlowLayout(FlowLayout.LEFT);
kita juga dapat mengatur gap horisontal dan vertikal dengan menggunakan
penataan mengalir. Gap adalah jumlah piksel antarkomponen dalam panel.
Secara default, jarak atau gap horisontal dan vertikal ini adalah 3 (tiga) piksel.
Penambahan gap dapat dilakukan dengan menambahkan argumen integer ke
konstruktor flow layout. Berikut ini menunjukkan hasil penambahan gap 30
piksel horisontal, dan 10 piksel vertikal.
setLayout(new FlowLayout(FlowLayout.LEFT, 30, 10));
8.10

Percobaan8 (tesGridLayout.java)
importjava.awt.*;
publicclassTesGridLayoutextendsjava.applet.Applet{
@Override
publicvoidinit(){
setLayout(newGridLayout(3,2));
add(newButton("Tombolx"));
add(newButton("Tomboly"));
add(newButton("Tombolz"));
add(newButton("Tombol1"));
add(newButton("Tombol2"));
add(newButton("Tombol3"));
}
}
Hasil :

Pembahasan :
Grid Layout memberikan pengontrolan yang lebih baik dalam penempatan
komponen di dalam panel. Dengan menggunakan grid layout kita membagi area
tampilan panel ke dalam baris dan kolom. Setiap komponen yang ditambahkan
pada panel akan ditempatkan dalam sel, dari baris paling atas menuju baris-baris
berikutnya melalui kolom dari kiri ke kanan.
Pembuatan layout pola jala (grid layout) ini dilakukan dengan menentukan
jumlah baris dan kolom jala ketika kita membuat instance baru dari kelas
GridLayout.
Layout pola jala juga dapat diberi gap horisontal dan vertikal antarkomponen.
Untuk membuat gap antarkomponen kita harus menambahkan baris perintah
berikut ini :
setLayout(new GridLayout(3, 3, 10, 30);
8.11

Percobaan9 (TesBorderLayout.java)
importjava.awt.*;
public

class

TesBorderLayout

java.applet.Applet{
@Override
publicvoidinit(){
setLayout(newBorderLayout());
add("North",newButton("Tombolx"));

extends

add("East",newButton("Tombolx"));
add("South",newButton("Tomboly"));
add("West",newButton("Tombolz"));
add("Center",newButton("Tombol1"));
}
}
Hasil :

Pembahasan :
Pada border layout, penempatan komponen ditunjukkan dengan geografis , yakni
utara, selatan, barat, timur, dan tengah. Sama seperti pada layout lainnya, untuk
menggunakan

border

layout

kita

harus

mendefinisikannya,

kemudian

menambahkan komponen satu persatu dengan metode khusus add()

yang

memiliki dua argumen. Argumen pertama adalah string yang menunjukkan posisi
dari komponen dalam layout, dan kedua adalah komponen yang ditambahkan,
misalnya :
add(North,newTextField(Title,50);
Kita juga dapat menggunakan bentuk add() tersebut untuk pengelola layout
lainnya, argumen string akan diabaikan jika tidak diperlukan.
Komponen-komponen dalam border layout bisa dibuat berjarak dari komponen
lain. Untuk memberi gap antar komponen, nilai pikselnya disertakan dalam
konstruktor seperti pengelola layout lain.
setLayout(newBorderLayout(10,10));

8.12

Percobaan10 (TesButtonSwing.java)
importjavax.swing.*;
publicclassTesButtonSwingextendsJFrame{
JButtonload=newJButton("load");
JButtonsave=newJButton("Save");
publicTesButtonSwing(){
super("ButtonBeraksi");
setSize(140,170);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanelpane=newJPanel();
pane.add(load);
pane.add(save);
add(pane);
setVisible(true);
}
publicstaticvoidmain(String[]args){
TesButtonSwingt=newTesButtonSwing();
}
}
Hasil :

Pembahasan :
Seperti

pada

package AWT, package dari Swing menyediakan banyak class untuk membuat
aplikasi GUI. Package tersebut dapat ditemukan di javax.swing. Perbedaan utama
antara keduanya adalah komponen Swing ditulis menyeluruh menggunakan Java.

Kesimpulannya, program GUI ditulis menggunakan banyak class dari Package


Swing yang mempunyai tampilan look and feel yang sama meski dijalankan pada
platform yang berbeda. Lebih dari itu, Swing menyediakan komponen yang lebih
menarik seperti color chooser dan option pane.
Nama dari komponen GUI milik Swing hampir sama persis dengan komponen
GUI milik AWT. Perbedaan jelas terdapat pada penamaan komponen. Pada
dasarnya, nama komponen Swing sama dengan nama komponen AWT tetapi
dengan tambahan huruf J pada prefixnya. Sebagai contoh, satu komponen dalam
AWT adalah button class. Sedangkan pada Swing, nama komponen tersebut
menjadi JButton Class.
Pada kode berikut ini :
JButtonload=newJButton("load");
JButtonsave=newJbutton("Save");
Ini membuat objek load dan save dengan menggunakan kelas JButton pada
Swing.
8.13

Percobaan11 (FrameSwing.java)
importjava.awt.*;
importjavax.swing.*;
publicclassFrameSwing{
JFrameframe;
JPanelpanel;
JTextFieldtextfield;
JButtonbutton;
Containercontentpane;
voidlaunchframe(){
//inisialisasi
frame=newJFrame("Frameku");
panel=newJPanel();
textfield=newJTextField("Teks");

button=newJButton("Kliksaya");
contentpane=frame.getContentPane();
//menambahkankomponenkomponenkepanelmenggunakan
//Flowlayoutsebagaidefault
panel.add(textfield);
panel.add(button);
//menambahkankomponenkomponencontentpane
//menggunakanBorderLayout
contentpane.add(panel,BorderLayout.CENTER);
frame.pack();
//menyebabkan ukuran frame menjadi dasar pengaturan
komponen
frame.setVisible(true);
}
publicstaticvoidmain(String[]args){
FrameSwingf=newFrameSwing();
f.launchframe();
}
}

Hasil :

Pembahasan :
Top-level containers seperti Jframe dan Japplet dalam Swing sangat tidak cocok
dengan AWT. Ini adalah syarat menambahkan komponen ke dalam kontainer.
Jika anda ingin menambahkan langsung sebuah komponen kedalam kontainer
sebagai kontainer AWT, pertama-tama anda telah mendapatkan content pane dari
kontainer. Untuk melakukan hal tersebut, anda akan menggunakan method
getContentPane dari container.
Perlu diperhatikan pada package java.awt masih saja diimpor karena layout
manager yang digunakan terdapat pada package tersebut. Juga, memberi judul
pada frame dan mengepack komponen di dalam frame dapat juga dilakukan
untuk frame AWT.
8.14

Percobaan12 (BorderLayoutSwing.java)
import java.awt.*;
import javax.swing.*;
public class BorderLayoutSwing extends JFrame{
JButton Tombol1 = new JButton("Utara");
JButton Tombol2 = new JButton("Selatan");
JButton Tombol3 = new JButton("Timur");
JButton Tombol4 = new JButton("Barat");
JButton Tombol5 = new JButton("Tengah");
public BorderLayoutSwing(){
super("Border Layout Beraksi");
setSize(240,280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());

add(Tombol1, BorderLayout.NORTH);
add(Tombol2, BorderLayout.SOUTH);
add(Tombol3, BorderLayout.EAST);
add(Tombol4, BorderLayout.WEST);
add(Tombol5, BorderLayout.CENTER);
}
public static void main(String[] args){
BorderLayoutSwing b = new BorderLayoutSwing();
b.setVisible(true);
}
}
Hasil :

Pembasahan :
Program diatas sebenarnya hampir sama dengan membuat BorderLayout pada
AWT, karena untuk mengatur layout tombol baik untuk posisi NORTH, SOUTH,
EAST, WEST, dan CENTER. Hanya saja untuk membuat frame disini kita
menggunakan kelas JFrame yang ada pada Swing.
8.15

Latihan
a) Buatlah 5 buah tombol dan textfield dengan menggunakan Flow, Grid dan

Border Layout baik menggunakan Java AWT maupun Swing !

BAB 9
GUI EVENT HANDLING

9.1

Tujuan
Menerangkan komponen-komponen delegation event model
Mengerti bagaimana delegation event model bekerja
Menciptakan aplikasi GUI yang berinteraksi dengan user

9.2

Latar Belakang
Pada bagian ini anda akan diperkenalkan dengan beberapa perintah kejadian yang sering
dipakai dalam membuat program aplikasi. Ini sangat penting anda kuasai, supaya
kualitas pemrograman anda bisa tambah sempurna.

9.3

Percobaan1
(a)

Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)

(b)

Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java

Application di kotak Projects


(c)

Klik Next >, muncul jendela New Java Project dan ketik Modul9a di kotak

Project Name, jangan pilih opsi Create Main Class kita akan menset main classnya
setelah desain dan programnya selesai.
(d)

Klik Finish

(e)

Buat form baru, klik kanan pada Project Modul9a > New > Jframe Form beri

nama pada Class Name yaitu Event1


(f)

Tambahkan Jpanel pada form, kemudian tambahkan 3 Jtextfield, 3 JLabel dan 2

Jbutton pada Jpanel tersebut di tab Design dengan properties sebagai berikut :
No

Nama Kelas

Properties

JLabel

Name = jLabel1
Text = Nama Mahasiswa

JLabel

Name = jLabel2
Text = Nilai Ujian

JLabel

Name = jLabel3
Text = Keterangan

JTextField

Name = jTextField2
Text = null / dikosongkan

JTextField

Name = jTextField2
Text = null / dikosongkan

JTextField

Name = jTextField3

Event

FocusLost

Text = null / dikosongkan


7

JButton

Name = jButton1
Text = Mulai

ActionPerformed

JButton

Name = jButton2
Text = Keluar

ActionPerformed

Jpanel

Name = jPanel1
TitleBorder = Program Event
Handling 1

(g)
maka

Klik kanan pada jButton2 pilih menu Events > Action > ActionPerformed,
akan

muncul

pada

tab

Source,

sebuah

method

Private

void

jButton2ActionPerformed(java.awt.event.ActionEvent evt), pada badan method


tersebut tambahkan baris perintah berikut ini :
System.exit(0);
(h)

Kembali ke tab Design, klik kanan pada jButton1 pilih menu Events > Action >

ActionPerformed, maka akan muncul pada tab Source, sebuah method Private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt), pada badan method
tersebut tambahkan baris perintah berikut ini :
jTextField1.setText();
jTextField1.setText();
jTextField1.setText();
(i)

Kembali ke tab Design, klik kanan pada jTextField2 pilih menu Events >

Action > ActionPerformed, maka akan muncul pada tab Source method Private void
JtextField2FocusLost (java.awt.event.FocusEvent evt), pada badan method tersebut
tambahkan baris perintah berikut ini :
floatnilai;
nilai=Float.parseFloat(jTextField2.getText());
if(nilai>=55){
jTextField3.setText(Lulus);
}
else{
jTexField3.setText(Tidaklulus);}
(j)

Set Main Class Project Modul9a, klik kanan pada Project Modul9a >

Properties. Pilih Categories > Run, browse Main Class pilih Event1. Lalu jalankan

program anda.
Hasil :

Pembahasan :
Salah satu interface Event Listener pada AWT yaitu Action Listener yang berfungsi
ketika user melakukan klik pada Button, menekan tombol Enter / Tab saat
memasukkan input dalam text field atau memilih menu item. Satu metode pada Action
Listener

yaitu

ActionPerformed,

dimana

jButton2ActionPerformed(java.awt.event.ActionEvent

method
evt)

Private
berisi

void

perintah

System.exit(0); dimana program akan berhenti jika tombol Keluar ditekan.


Untuk method Private void jButton1ActionPerformed(java.awt.event.ActionEvent
evt) berisi perintah jTextField1.setText(); dimana akan menset semua
text field dengan string kosong lagi jika tombolMulaiditekan.
Untuk method Private void JtextField2FocusLost (java.awt.event.FocusEvent evt)
merupakan salah satu method yang terdapat pada interface FocusListener yang
berfungsi ketika komponen memperoleh keyboard focus. Pada badan method tersebut
jika sebuah nilai yang dimasukkan pada JtextField2 bernilai lebih atau sama dengan 55
maka akan menset sebuat text pada JtextField3 yaitu sebuah String Lulus selain itu
akan diset ke Tidak Lulus.

9.4

Percobaan2
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
(b) Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(c) Klik Next >, muncul jendela New Java Project dan ketik Modul9b di kotak
Project Name.
(d) Klik Finish
(e) Buat form baru, klik kanan pada Project Modul9b > New > Jframe Form beri
nama pada Class Name yaitu Event2
(f) Tambahkan 2 jLabel, 1 jTextField, 1 jPasswordField, dan 1 jButton ke dalam form
tersebut dengan properties sebagai berikut :

No

Nama Kelas

Properties

Event

JLabel

Name = jLabel1
Text = ID User

JLabel

Name = jLabel2
Text = Password

JTextField1

Name = jTextField1

JPasswordField Name = jPasswordField1

KeyPressed

JButton

ActionPerformed

KeyPressed

Name = jButton1
Text = OK

(g) Tambahkan event klik pada tombol OK (jButton1), klik kanan pada tombol OK >
Events > Action > actionPerformed. Maka akan muncul sebuah method private
void jButton1ActionPerformed pada tab Source. Tambahkan baris perintah berikut
pada badan method tersebut :
JOptionPane.showMessageDialog(this, Selamat Datang
+

jTextField1.getText(),

Pesan

Login,

JOptionPane.INFORMATION_MESSAGE);
(h) Tambahkan event yang kedua untuk jTextField1. Klik kanan pada jTextField1 >
Events > Key > KeyPressed. Maka akan muncul sebuah method private void
jTextField1KeyPressed pada tab Source. Tambahkan baris perintah berikut pada
badan method tersebut :

if(evt.getKeyCode()==10){
jPasswordField1.requestFocus();}
(i) Tambahkan event yang ketiga untuk jPasswordField1. Klik kanan pada
jPasswordField1 > Events > Key > KeyPressed. Maka akan muncul sebuah
method private void jPasswordField1KeyPressed pada tab Source. Tambahkan
baris perintah berikut pada badan method tersebut :
if(evt.getKeyCode()==10){
jButton1.requestFocus();}
(j) Lakukan perubahan pada kelas Main,java, agar melakukan pemanggilan form
Event2 yaitu dengan baris perintah sebagai berikut :
newEvent2().setVisible(true);
(k) Jalankan program anda.
Hasil :

Pembahasan :
Event pada jButton1 (tombol OK) yaitu ActionPerformed digunakan ketika user
menekan tombol jButton1 (tombol OK). Kelas JoptionPane memiliki method
showMessageDialog. Method ini bisa menampilkan berbagai jenis pesan / jendela
dialog. Dalam hal ini dialognya adalah INFORMATION_MESSAGE, yaitu jenis
jendela pesan informasi saja yang dilengkapi dengan satu tombol OK. Parameter
pertama adalah isi pesan yang ditampilkan, sedangkan parameter kedua adalah nama
jendela pesan ini, parameter ketiga adalah jenis dialog / jendela.
Event kedua dan ketiga untuk jTextField1 dan jPasswoField1 yaitu KeyPressed, hal

ini untuk memberikan respon ketika user memasukkan ID user dan menekan tombol
Enter, maka kursor secara otomatis akan berpindah ke isian berikutnya (password).
Hal ini dapat dilakukan dengan memanfaatkan kemampuan event, dengan kategori
Key untuk interface KeyListener pada method keyPressed().
Perintah getKeyCode() adalah untuk mendapatkan nilai angka unik untuk setiap
tombol pada keyboard. Dalam hal ini java mengenali enter sebagai angka 10.
selanjutnya

requestFocus()

untuk

memerintahkan

kursor

berpindah

ke

jPasswordField1 (isian password).


Perintah if(evt.getKeyCode()==10) adalah untuk melakukan pengujian
kondisi dari nilai angka dari keyboard yang ditekan. Jika menekan Enter, kursor
akan mengarah ke isian data berikutnya.
9.5

Percobaan3
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
(b) Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(c) Klik Next >, muncul jendela New Java Project dan ketik Modul9c di kotak Project
Name.
(d) Klik Finish
(e) Buat form baru, klik kanan pada Project Modul9c > New > Jframe Form beri
nama pada Class Name yaitu Event3
(f) Tambahkan 3 jLabel, 2 jTextField dan 1 jCombobox ke dalam form tersebut dengan
properties sebagai berikut :
No

Nama Kelas

Properties

JLabel

Name = jLabel1
Text = Nama Kota
horizontalAlignment = LEFT

JLabel

Name = jLabel2
Text = Besar UMR
horizontalAlignment = LEFT

JLabel

Name = jLabel3
Text = Makanan Khas
horizontalAlignment = LEFT

JcomboBox

Name = jComboBox1
Model = Yogyakarta, Surabaya, Jakarta

selectedIndex = 1
5

JTextField

Name = txtUMR

JTextField

Name = txtMakanan

(g) Untuk merubah nama variabel pada jTextField1, klik kanan pada jTextField1 >
Change Variable Name.. isikan dengan txtUMR. Lakukan hal yang sama pada
jTextField2 dengan nama variabel txtMakanan.
(h) Tambahkan

sebuah

event

ItemStateChanged

pada

pilihan

nama

kota

(jComboBox1), dengan cara klik kanan jComboBox1 > Events > Item >
ItemStateChanged.
(i) Perbaiki metode jComboBox1ItemStateChanged pada tab Source yaitu sebagai
berikut :
if(jComboBox1.getSelectedIndex()==0){
txtUMR.setText("500.000");
txtMakanan.setText("Gudeg");
}
elseif(jComboBox1.getSelectedIndex()==1){
txtUMR.setText("900.000");
txtMakanan.setText("Rawon");
}
elseif(jComboBox1.getSelectedIndex()==2){
txtUMR.setText("1.000.000");
txtMakanan.setText("Ketoprak");
}
(j) Lakukan perubahan pada kelas Main.java, agar melakukan pemanggilan form
Event3, yaitu dengan menambahkan baris berikut ini :
newEvent3().setVisible(true);
(k) Jalankan program anda
Hasil :

Pembahasan :
Pada form ini akan menampilkan informasi mengenai kota-kota tertentu. Dengan
memilih nama kotanya, akan ditampilkan informasi mengenai besarnya UMR (ipah
minimum regional) dan informasi mengenai jenis makanan khasnya. Hal ini
mendemonstrasikan event ItemStateChanged, yakni kejadian ketika user memilih
pilihan pada ComboBox kota.
Pada

method

jCombobox1ItemStateChanged

pada

baris

perintah

jComboBox1.getSelectedIndex() fungsinya adalah untuk mendapatkan nilai indeks


yang terpilih pada sebuah jComboBox. Indeks ini dimulai dari 0 (pilihan pertama)
dan seterusnya. Sedangkan perintah setText() adalah untuk memberikan nilai text
baru pada sebuah jTexField.
9.6

Percobaan4
(a)

Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)

(b)

Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java

Application di kotak Projects


(c)

Klik Next >, muncul jendela New Java Project dan ketik Modul9d di kotak

Project Name, jangan pilih opsi Create Main Class kita akan menset main classnya
setelah desain dan programnya selesai.
(d)

Klik Finish

(e)

Buat form baru, klik kanan pada Project Modul9d > New > Jframe Form beri

nama pada Class Name yaitu Event4. Tambahkan JToolBar pada Form dengan posisi
layout Last. Tambahkan jLabel pada pada toolbar tadi, dengan cara klik kanan pada

jToolbar > Add From Palete > Swing Controls > Label
(f)

Tambahkan Jpanel pada form, kemudian tambahkan 3 Jlabel, 3 jTextField dan 1

jTextButton pada Jpanel tersebut di tab Design dengan properties sebagai berikut :
No

(g)

Nama Kelas

Properties

JLabel

Name = jLabel1

JLabel

Name = jLabel2
Text = No MHS

JLabel

Name = jLabel3
Text = Nama

JLabel

Name = jLabel4
Text = Alamat

JTextField

Name = txtNoMhs

JTextField

Name = txtNama

JTextField

Name = txtAlamat

JButton

Name = jButton1
Text = Simpan

JPanel

Name = jPanel1
Layout Direction = Center

10

JToolBar

Name = jToolBar1
Layout Direction = Last

Masukkan event focusGained yang pertama, dengan cara klik kanan txtNoMhs

> Events > Focus > focusGained. Tambahkan baris perintah berikut ini pada badan
method private void txtNoMhsFocusGained (java.awt.event.FocusEvent evt) :
jLabel1.setText(Masukkannomormahasiswa);
(h)

Masukkan event focusGained yang kedua, dengan cara klik kanan txtNama >

Events > Focus > focusGained. Tambahkan baris perintah berikut ini pada badan
method private void txtNamaFocusGained (java.awt.event.FocusEvent evt) :
jLabel1.setText(Masukkannamalengkapmahasiswa);
(i)

Masukkan event focusGained yang pertama, dengan cara klik kanan txtAlamat

> Events > Focus > focusGained. Tambahkan baris perintah berikut ini pada badan
method private void txtAlamatFocusGained (java.awt.event.FocusEvent evt) :
jLabel1.setText(Masukkanalamatdomisilimahasiswa);
(j)

Set Main Class Project Modul9d, klik kanan pada Project Modul9a >

Properties. Pilih Categories > Run, browse Main Class pilih Event4. Lalu jalankan

program anda.
Hasil :

Pembahasan :
Form ini akan menunkukkan manfaat dari event focusGained (salah satu dari event
focus). FocusGained akan dibangkitkan ketika sebuah objek menerima focus (kursor
aktif), dalam form EventFocus tersebut, ketika kursor masuk dalam kotak isian No
MHS, maka status bar akan menampilkan pesan terkait dengan isian No.MHS tersebut
(Masukkan nomor Mahasiswa). Begitu juga jika kursor aktif pada isian nama dan
alamat, maka status bar akan menampilkan informasi / pesan terkait dengan isian
tersebut.
9.7

Percobaan5
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(b) Klik Next >, muncul jendela New Java Project dan ketik Modul9e di kotak Project
Name, jangan pilih opsi Create Main Class kita akan menset main classnya setelah
desain dan programnya selesai.
(c) Klik Finish
(d) Buat form baru, klik kanan pada Project Modul9e > New > Jframe Form beri

nama pada Class Name yaitu Event5


(e) Sebelum merancang form, copy file-file gambar pada direktori / folder src pada
project Modul9e. Letakkan file-file gambar tersebut dalam sebuah folder img
didalam direktori/folder src.
(f) Tambahkan pada form sebuah JLabel, atur properti icon, arahkan file gambar ke
komputer1.GIF, sehingga akan tampak seperti gambar dibawah ini :

(g) Tambahkan dua lagi jLabel dengan properti icon, arahkan ke file gambar alat
tulis1.JPG dan rumah1.JPG
(h) Tambahkan satu lagi jLabel untuk menampilkan sebuah gambar yang lebih besar,
letakkan disebelah kanan jLabel sebelumnya, dan masukan gambar rumah2.JPG
dalam properti icon.
(i) Masukkan event mouse motion yang pertama, dengan cara klik kanan jLabel1 >
Events > MouseMotion > mouseMoved. Selanjutnya tambahkan perintah dalam
event tersebut, sehingga menjadi seperti :
private

void

jLabel1MouseMoved

(java.awt.event.MouseEventevt){
StringimgSouce=./img/komputer2.PNG;
jLabel4.setIcon(newImageIcon(imgSource));
}

(j) Masukkan event mouse motion yang pertama, dengan cara klik kanan jLabel12>
Events > MouseMotion > mouseMoved. Selanjutnya tambahkan perintah dalam
event tersebut, sehingga menjadi seperti :
private

void

jLabel2MouseMoved

(java.awt.event.MouseEventevt){
StringimgSouce=./img/alattulis2.JPG;
jLabel4.setIcon(newImageIcon(imgSource));
}
(k) Masukkan event mouse motion yang pertama, dengan cara klik kanan jLabel3 >
Events > MouseMotion > mouseMoved. Selanjutnya tambahkan perintah dalam
event tersebut, sehingga menjadi seperti :
private

void

jLabel3MouseMoved

(java.awt.event.MouseEventevt){
StringimgSouce=./img/rumah2.PNG;
jLabel4.setIcon(newImageIcon(imgSource));
}
(l) Set Main Class Project Modul9e, klik kanan pada Project Modul9e > Properties.
Pilih Categories > Run, browse Main Class pilih Event5. Lalu jalankan program
anda.
Hasil :

Pembahasan :
Padabarisperintah:
private

void

jLabel1MouseMoved

(java.awt.event.MouseEventevt){
StringimgSouce=./img/komputer2.PNG;
jLabel4.setIcon(newImageIcon(imgSource));
}
Event MouseMoved digunakan

apabila

mouse

menuju

pada

gambar

komputer1.GIF maka gambar pada jLabel4 akan memunculkan gambar


dari file komputer2.PNG dengan perintah :
StringimgSouce=./img/komputer2.PNG;
jLabel4.setIcon(newImageIcon(imgSource));
9.8

Percobaan6
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(b) Klik Next >, muncul jendela New Java Project dan ketik Modul9f di kotak Project
Name, jangan pilih opsi Create Main Class kita akan menset main classnya setelah
desain dan programnya selesai.
(c) Klik Finish
(d) Buat form baru, klik kanan pada Project Modul9e > New > Jframe Form beri
nama pada Class Name yaitu Event6
(e) Masuk dalam design form, pilih properties title dari form tersebut, masukkan
Aplikasi Pemesanan Menu
(f) Tambahkan dua buah jLabel dengan properti text masing-masing Daftar Menu
dan label kedua Tambahan
(g) Tambahkan sebuah jComboBox, sebuah jTextArea, dan sebuah jButton. Seperti pada
gambar dibawah ini :

(h) Tambahkan event windowOpened, dibangkitkan ketika form ini dibuka, dengan
cara klik kanan pada area form > Events > Window > windowOpened. Tambahkan
perintah dibawah ini :
privatevoidformWindowOpened(java.awt.event.WindowEvent
evt){
jComboBox1.removeAllitems();
jComboBox1.addItem(PaketSarapan);
jComboBox1.addItem(PaketMakanSiang);
jComboBox1.addItem(Prasmanan);
jComboBox1.addItem(PaketKeluarga);}
(i) Tambahkan event windowClosing, dibangkitkan ketika form ini ditutup, dengan
cara klik kanan pada area form > Events > Window > windowClosing. Tambahkan
perintah dibawah ini :
intclosing;
closing=JOptionPane.showConfirmDialog(this,Apakahanda
yakin, mau keluar dari form ini ? , konfirmasi,
JOptionPane.YES_NO_OPTION);
if(closing==0){
this.dispose();}
(j) set pada properties form, defaultCloseOperation = DO_NOTHING
(k) Set Main Class Project Modul9f, klik kanan pada Project Modul9f > Properties.
Pilih Categories > Run, browse Main Class pilih Event6. Lalu jalankan program
anda.
Hasil :

Pembahasan :
Pada events windowOpened yang didefinisikan pada form dengan perintah
removeAllItems() artinya adalah untuk menghapus semua pilihan dalam
jCombobox, sedangkan addItem() adalah untuk menambahkan sebuah pilihan
dalam jCombobox.
Pada events windowClosing, pernyataan :
intclosing;
closing=JOptionPane.showConfirmDialog(this,Apakahanda
yakin, mau keluar dari form ini ? , konfirmasi,
JOptionPane.YES_NO_OPTION);
if(closing==0){
this.dispose();}
Dideklarasikan terlebih dahulu sebuah variabel yang akan digunakan untuk
mendefinisikan sebuah kotak dialog konfirmasi apabila sebuah window akan ditutup
dengan menggunakan method pada JOptionPane yaitu showConfirmDialog yang
menggunakan model YES_NO_OPTION.

BAB 10
JDBC
10.1 Tujuan

Mengkases database menggunakan JDBC

Melakukan operasi baca, tulis, dan hapus data dari database

Menggunakan interface dari yang sederhana sampai yang kompleks

10.2 Latar Belakang


Pemahaman JDBC ini adalah mutlak diperlukan bagi seorang programmer database, jika
ingin bekerja dengan Java. Sebagai gambaran saja, jika programmer membuat aplikasi
database dengan semisal visual basic / PHP dengan database SQL Server atau MySQL,
apakah program tersebut bisa diganti databasenya dengan yang lain semisal PostgreSQL
atau Oracle. Dalam hal ini JDBC mampu membuat aplikasi bisa berjalan diatas semua
sistem database, hanya cukup dengan memasang driver JDBC dari database tersebut.
10.3 Percobaan1
(a)

Terlebih dahulu buatlah database baru dengan nama modul10a

(b)

Buat Project baru dengan nama Modul10a

(c)

Edit main.java sehingga tampak sebagai berikut :


packageModul10a;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassMain{
publicstaticvoidmain(String[]args){
Connectioncon=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=
DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())
System.out.println("Sukses terhubung ke MySQL
Server...");
}catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}finally{
try{

if(con!=null)
con.close();}
catch(SQLExceptione){}
}}}
(d)

Tambahkan MySQL JDBC driver dengan cara klik kanan pada project

Modul10a > Properties > Libraries pada tab Compile pilih Add Library tambahkan
MySQL JDBC Driver seperti terlihat pada gambar dibawah ini :

(e)

Jalankan program anda

Hasil :

Pembahasan :
Pada deklarasi awal, program ini menggunakan beberapa class pada java.sql dengan
perintah importjava.sql.Connection,java.sql.DriverManager dan
java.sql.SQLException. Kemudian dibuatlah objek con dari kelas

Connection yang nantinya akan digunakan untuk mengakses database dengan


perintah :
con= DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
DriverManager adalah kelas untuk manajemen driver yang digunakan untuk mengakses
database, dalam hal ini database yang ingin diakses adalah modul10a. Jika belum
ditambahkan sebuah MySQL JDBC driver kedalam project ini, maka program akan
mengeksekusi baris perintah :
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());}

10.4 Percobaan2
(a)

Butlah tabel user dengan field user_id (varchar (25)), password (varchar(10))

dan jabatan (varchar(25)). Jadikan user_id sebagai primary key.


(b)

Tambahkan user_id : admin, password : rahasia dan jabatan : administrator

pada tabel user di database Modul10a


(c)

Buat project baru dengan nama Modul10b

(d)

Edit main.java sehingga tampak sebagai berikut :

packageModul10b;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassMain{
privatestaticStringno;
publicstaticvoidmain(String[]args){
Connectioncon=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");

if(!con.isClosed())
System.out.println("SuksesterhubungkeMySQLserver...");
Statementst=con.createStatement();
ResultSetrs=st.executeQuery("Select*fromuser");
while(rs.next()){
no=no+1;
System.out.println(no+")");
System.out.println("UserID:"+rs.getString("user_id"));
System.out.println("Password:"+rs.getString("password"));
System.out.println("Jabatan:"+rs.getString(3));
}
st.close();
rs.close();
}
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}
finally{
try{
if(con!=null)
con.close();
}catch(SQLExceptione){}
}}}

(e)

Tambahkan MySQL JDBC driver dengan cara klik kanan pada project
Modul10b > Properties > Libraries pada tab Compile pilih Add Library
tambahkan MySQL JDBC Driver.

(f)
Hasil :

Jalankan program anda

Pembahasan :
Kelas Statement digunakan untuk mengirimkan statemen SQL ke database, tanpa
menggunakan paramater. Sebagai contoh pada baris perintah Statement st =
con.createStatement();.Instancesttersebut membuat sebuah statement baca,

yaitu select * from user, melalui method executeQuery yang


dimilikinya. Selain itu, statement tersebut juga bisa melakukan operasi baca dengan
metodeexecuteUpdate()yang juga dimiliki oleh kelas ini.
Sedangkan kelas ResultSet digunakan untuk menyimpan dataset (sekumpulan data) dari
hasil statement query SELECT. Seperti pada baris :
ResultSetrs=st.executeQuery("Select*fromuser");
while(rs.next()){
no=no+1;
System.out.println(no+")");
System.out.println("UserID:"+rs.getString("user_id"));

Instance rs,akan menyimpan hasil query yang bisa diakses dengan cara memanggil
method getter untuk setiap jenis datanya. Misalnya getString() adalah untuk
mendapat nilai string, diikuti nama fieldnya. Sedangkan untuk membaca record
berikutnya bisa dilakukan dengan methodnext().
10.5 Percobaan3
(a)

Buat project baru dengan nama Modul10c

(b)

Edit main.java sehingga akan tampak sebagai berikut :


packageModul10c;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
publicclassMain{
publicstaticvoidmain(String[]args){
Connectioncon=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();

con=DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())
System.out.println("SuksesterhubungkeMySQLserver...");
PreparedStatementpStatement=null;
Stringsql="insertintouser(user_id,password,jabatan)"
+"Values(?,?,?)";
pStatement=con.prepareStatement(sql);
pStatement.setString(1,"Joko");
pStatement.setString(2,"jack");
pStatement.setString(3,"ManajerPersonalia");
intintTambah=pStatement.executeUpdate();
if(intTambah>0)
System.out.println("Penambahandataberhasil");
else
System.out.println("Penambahandatagagal");
pStatement.close();
con.close();
}
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}
finally{
try{
if(con!=null)
con.close();
}catch(SQLExceptione){}
}}}

(c)

Tambahkan MySQL JDBC driver dengan cara klik kanan pada project Modul10c
> Properties > Libraries pada tab Compile pilih Add Library tambahkan
MySQL JDBC Driver.

(d)

Jalankan program anda.

Hasil :

Pembahasan :
Kelas PreparedStatement digunakan untuk mengirimkan statement SQL ke database,
yang disertai dengan penggunaan parameter, seperti contoh :
PreparedStatementpStatement=null;
String sql ="insert into user(user_id, password, jabatan)"
+"Values(?,?,?)";
pStatement=con.prepareStatement(sql);
pStatement.setString(1,"Joko");
pStatement.setString(2,"jack");
pStatement.setString(3,"ManajerPersonalia");
intintTambah=pStatement.executeUpdate();
InstancepStatementtersebut membuat sebuah statement tulis, yaitu insertinto
user (user_id,password,jabatan), dan

dijalankan

melalui

method

executeUpdate()yang dimiliki oleh kelas ini.

Perhatikan method setString([nomor,kolom],[isi dari parameter]);


nomor

kolom

dimulai

dari

1,

sehingga

contoh

diatas

dapat

disimpulkan

user_id=Joko,password=jack,jabatan=ManajerPersonalia

10.6 Percobaan4
(a)

Buat project baru dengan nama Modul10d

(b)

Edit main.java sehingga akan tampak sebagai berikut :


packageModul10d;
importjava.sql.*;
publicclassMain{
publicstaticvoidmain(String[]args){
Connectioncon=null;
try{

Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())
System.out.println("SuksesterhubungkeMySQLserver...");
PreparedStatementpStatement=null;
Stringsql="updateusersetpassword=?,"+ "jabatan=?
whereuser_id=?";
pStatement=con.prepareStatement(sql);
pStatement.setString(1,"s3cr3t");
pStatement.setString(2,"ManajerIT");
pStatement.setString(3,"Joko");
intintBaris=pStatement.executeUpdate();
if(intBaris>0)
System.out.println("Perbaikandataberhasil");
else
System.out.println("Perbaikandatagagal");
pStatement.close();
con.close();}
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}
finally{
try{
if(con!=null)
con.close();
}catch(SQLExceptione){}
}}

(c)

Tambahkan MySQL JDBC driver dengan cara klik kanan pada project
Modul10d > Properties > Libraries pada tab Compile pilih Add Library
tambahkan MySQL JDBC Driver.

(d)
Hasil :

Jalankan program anda.

Pembahasan :
Pada program Modul10d ini tidak jauh berbeda dengan program pada Modul10c yang
berbeda hanyalah pada baris perintah berikut :
Stringsql="updateusersetpassword=?,"+ "jabatan=?where
user_id=?";

Dimana ini adalah perintah untuk melakukan update record yang akan menset password
dan jabatan baru yang sesuai dengan user_id.
10.7 Percobaan5
(a)

Buat project baru dengan nama Modul10e

(b)

Edit main.java sehingga akan tampak sebagai berikut :


packageModul10e;
importjava.sql.*;
publicclassMain{
publicstaticvoidmain(String[]args){
Connectioncon=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())
System.out.println("SuksesterhubungkeMySQLserver...");
PreparedStatementpStatement=null;
Stringsql="deletefromuser"+"whereuser_id=?";
pStatement=con.prepareStatement(sql);
pStatement.setString(1,"Joko");
intintBaris=pStatement.executeUpdate();
if(intBaris>0)
System.out.println("Penghapusandataberhasil");
else

System.out.println("Penghapusandatagagal");
pStatement.close();
con.close();}
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}
finally{
try{
if(con!=null)
con.close();
}catch(SQLExceptione){}
}}}

(c)

Tambahkan MySQL JDBC driver dengan cara klik kanan pada project Modul10e

> Properties > Libraries pada tab Compile pilih Add Library tambahkan MySQL
JDBC Driver.
(d)

Jalankan program anda.

Hasil :

Pembahasan :
Pada program Modul10e ini juga tidak jauh berbeda dengan program pada Modul10d
yang berbeda hanyalah pada baris perintah berikut :
Stringsql="deletefromuser"+"whereuser_id=?";

Dimana ini adalah perintah untuk melakukan penghapusan record yang yang sesuai
dengan user_id.
10.8 Percobaan6
(a)

Buat project baru dengan nama Modul10f, jangan pilih opsi Create Main

Class.
(b)

Tambahkan satu package didalam Modul10f dengan cara klik kanan pada project

Modul10f > New > Java Package. Beri nama Modul10f


(c)

Tambahkan sebuah Jframe pada project Modul10f dengan cara klik kanan pada

project Modul10f > New > Jframe Form. Beri nama Tampildata
(d)

Tambahkan sebuah objek JscrollPane ke dalam form, atur melebar dibagian

tengah form
(e)

Edit Tampildata.java, tambahkan sebuah method getData() dibagian akhir

class Tampildata.java sebelum tanda akhir kelas/kurung kurawal } :


privateObject[][]getData(){
Connectioncon=null;
Object[][]data1=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())
System.out.println("SuksesterhubungkeMySQLserver...");
Statementst=con.createStatement();
ResultSetrs=st.executeQuery("Select*fromuser");
rs.last();
introwCount=rs.getRow();
rs.beforeFirst();
data1=newObject[rowCount][3];
intno=1;
while(rs.next()){
no=no+1;
data1[no][0]=rs.getString("user_id");
data1[no][1]=rs.getString("password");
data1[no][2]=rs.getString("jabatan");
}

st.close();
con.close();
}
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}
finally{
try{
if(con!=null)
con.close();
}catch(SQLExceptione){}
}
returndata1;
}
(f)

Tambahkan satu method lagi yaitu tampilTabel() untuk inisialisasi Jtable, dan

letakkan dibawah method getData() :


privatevoidtampilTabel(){
String[]columnNames={"user_id","password","jabatan"};
JTabletabel=newJTable(getData(),columnNames);
jScrollPane1.setViewportView(tabel);
}
(g)

Tambahkan method tampilTabel() pada metode konstruktor Tampildata(),

letakkan dibawah initComponents() :


publicTampildata(){

initComponents();
tampilTabel();
}

(h)

Set Main Class pada project modul10f dengan cara klik kanan pada project

modul10f > Properties > Run > Main Class > Browse > modul10f.Tampildata

(i)

Jangan lupa tambahkan MySQL JDBC Driver pada project modul10f.

Hasil :

Pembahasan :

Pernyataan rs.last() adalah menunjuk record paling terakhir

Pernyataan int rowCount=rs.getRow(); adalah untuk mendapatkan


nomor record sekarang/aktif. Hal ini untuk memperoleh jumlah recordnya karena
ini akan dibutuhkan untuk melakukan inisialisasi ukuran array pada objek
Jtableyang akan menampilkannya

Pernyataan data1[no][0] adalah untuk menentukan letaknya dalam array,


variabelnoadalah menyatakan baris (record), sedangkan 0 adalah kolomnya.

Parameter aktual inisialisasi Jtable() adalah getData(bertipe array dua dimensi)


dan columnNames (berisi array dari judul tabel)

Method

setViewportView() adalah untuk mengeset objek yang akan

ditampilkan dalam ScrollPane. Objek ini memiliki kemampuan untuk


menampilkan objek yang dilengkapi dengan layar gulung/scroll.
10.9 Percobaan7
(a) Buat project baru dengan nama Modul10g, jangan pilih opsi Create Main Class

(b) Tambahkan satu package ke dalam project Modul10g, dengan cara klik kanan pada
project Modul10g > New > Java Package. Beri nama Modul10g
(c) Tambahkan sebuah Jframe pada project Modul10g dengan cara klik kanan pada
project Modul10g > New > Jframe Form. Beri nama FormInput
(d) Tambahkan 3 buah JLabel, 3 JTextField dan satu JButton
(e) Atur properties-nya sehingga akan tampil sebagai berikut :

(f) Tambahkan perintah import dibawah deklarasi package Modul10g, sehingga akan
tampil sebagai berikut :
packagemodul10g;
importjava.sql.*;
importjavax.swing.JOptionPane;
(g) Tambahkan event ActionPerformed pada Jbutton dengan cara klik kanan pada
Jbutton1 > events > Action > actionPerformed. Tambahkan baris perintah,
sehingga akan tampak sebagai berikut :
Connectioncon=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con

DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())

System.out.println("SuksesterhubungkeMySQL
server...");
PreparedStatementpStatement=null;
String sql ="insert into user(user_id, password,
jabatan)"+"Values(?,?,?)";
pStatement=con.prepareStatement(sql);
pStatement.setString(1,jTextField1.getText());
pStatement.setString(2,jTextField2.getText());
pStatement.setString(3,jTextField3.getText());
intintTambah=pStatement.executeUpdate();
if(intTambah>0)

JOptionPane.showMessageDialog(this, "Penambahan

sukses","Informasi",JOptionPane.INFORMATION_MESSAGE);
else

JOptionPane.showMessageDialog(this,

"Penambahan

gagal","Informasi",JOptionPane.INFORMATION_MESSAGE);
pStatement.close();
con.close();

jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
}
catch(Exceptione){
System.err.println("Exception:"+e.getMessage());
}
finally{
try{
if(con!=null)
con.close();

}catch(SQLExceptione){}
}}
(h) Set Main Class pada project modul10g dengan cara klik kanan pada project
modul10g > Properties > Run > Main Class > Browse > modul10g.FormInput
(i) Jangan lupa tambahkan MySQL JDBC Driver pada project modul10g.
Hasil :

Pembahasan :
Program ini hampir mirip dengan percobaan3, hanya saja yang membedakan disini
menggunakan interaksi GUI Event Handling (actionPerformed) dengan konektifitas
database (JDBC) dan sedikit memanfaatkan kelas JOptionPane untuk menampilkan
informasi apakah penambahan data sukses atau tidak.
10.10 Percobaan8
(a)

Buat project baru dengan nama Modul10h, jangan pilih opsi Create Main Class

(b)

Tambahkan satu package ke dalam project Modul10h, dengan cara klik kanan

pada project Modul10h > New > Java Package. Beri nama Modul10h
(c)

Tambahkan sebuah Jframe pada project Modul10h dengan cara klik kanan pada

project Modul10h > New > Jframe Form. Beri nama FormUpdate
(d)

Tambahkan 3 buah JLabel, 3 JTextField dan dua Jbutton. Sehingga akan

tampak sebagai berikut :

(e)

Ganti variabel Jbutton1 menjadi btnCekUser, dengan cara klik kanan pada

tombol jbutton1 > Change Variable Name


(f)

Tambahkan perintah import dibawah project modul10h. Sehingga akan tampak

sebagai berikut :
packagemodul10h;
importjava.sql.*;
importjavax.swing.JOptionPane;
(g)

Tambahkan perintah berikut dibawah deklarasi Jframe :

Commenctioncon=null;
(h)

Tambahkan perintah berikut dibawah konstruktor FormUpdate() :


publicFormUpdate(){
initComponents();
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con

DriverManager.getConnection("jdbc:mysql:///modul10a",
"root","rahasia");
if(!con.isClosed())
System.out.println("Sukses terhubung ke MySQL
Server...");
}catch(Exceptione){

System.err.println("Exception:"+e.getMessage());
}finally{
try{
if(con!=null)
con.close();
}catch(SQLExceptione){}
}
}
(i)

Tambahkan event klik (actionPerformed) pada Jbutton2 (Tombol Simpan) :


try{

PreparedStatementpStatement=null;
String sql ="update user" + "set password=?,
jabatan=?"+"whereuser_id=?";
pStatement=con.prepareStatement(sql);
pStatement.setString(1,jTextField1.getText());
pStatement.setString(2,jTextField2.getText());
pStatement.setString(3,jTextField3.getText());
intintTambah=pStatement.executeUpdate();
if(intTambah>0)

JOptionPane.showMessageDialog(this, "Update

sukses","Informasi",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(this,"Penambahan
gagal","Informasi",JOptionPane.INFORMATION_MESSAGE);
pStatement.close();
con.close();
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");

}
catch(SQLExceptione){
System.out.println("Koneksigagal"+e.toString());
}}
(j)

Tambahkan event klik jbutton1(tombol Cek User). Tambahkan baris perintah

berikut :

(k)

Referensi

Avestro, Joyce. 2007. JENI Pengenalan Pemrograman 1. Jardiknas. __


Nugroho, Adi. 2008. Algoritma dan Struktur Data dalam Bahasa Java. Penerbit ANDI. Yogyakarta.
Wahono, S. Romi. 2008. Java Fundamentals. ___ . Jakarta

Anda mungkin juga menyukai