Daftar Isi
Kata Pengantar.................................................................................................................................6
Bab 1 Pendahuluan .........................................................................................................................7
1.1 Tujuan...................................................................................................................................7
1.2 Apa itu java?.........................................................................................................................7
1.3 Object Orientied Programming (OOP).................................................................................7
1.3.1 Karakteristik OOP.........................................................................................................7
1.4 Program pertama ..................................................................................................................8
1.5 Apa yang anda butuhkan?.....................................................................................................9
1.6 Aplikasi java vs applet java................................................................................................10
Bab 2 Variable dan Operator ........................................................................................................12
2.1 Tujuan.................................................................................................................................12
2.2 Statemen dan Identifier.......................................................................................................12
2.2.1 Statemen......................................................................................................................12
2.2.2 Identifier......................................................................................................................13
2.3 Java keywords.....................................................................................................................13
2.4 Variabel dan Tipe Data.......................................................................................................14
2.4.1 Definisi Variabel.........................................................................................................14
2.4.2 Tipe Data.....................................................................................................................14
2.5 Komentar.............................................................................................................................15
2.6 Literal..................................................................................................................................15
2.7 Operator dan Ekspresi (Expression)....................................................................................16
2.7.1 Operator Aritmatika....................................................................................................16
2.7.2 Operator Pembanding..................................................................................................18
2.8 Operator Logika..................................................................................................................18
Bab 3Array, Struktur Kondisi g Looping ....................................................................................19
3.1 Tujuan.................................................................................................................................19
3.2 Array...................................................................................................................................19
3.2.1 Deklarasi Variabel Array.............................................................................................19
3.2.2 Membuat Object Array................................................................................................19
3.2.3 Acces Element dari Array...........................................................................................20
3.3 Array Multidimensi.............................................................................................................20
3.4 Kondisional if.....................................................................................................................20
3.4.1 Sintaks Statement if.....................................................................................................20
3.4.2 Sintaks if dan else statement.......................................................................................21
3.4.4 Contoh Kasus .............................................................................................................21
3.5 Kondisional Switch............................................................................................................22
3.5.1 Bentuk switch statement..............................................................................................23
3.5.2 Contoh Kasus Switch..................................................................................................23
3.6 Looping for.........................................................................................................................24
3.6.1 Bentuk sintaks for........................................................................................................24
3.7 Looping while.....................................................................................................................25
3.8 Looping do ... loop.............................................................................................................25
3.8.1 bentuk do ... while.......................................................................................................25
3.9 Keluar dari Looping...........................................................................................................26
3.10 Label Looping...................................................................................................................26
Bab 4Mengenal Object dan Class ................................................................................................28
4.1 Tujuan.................................................................................................................................28
LP3T NurulFikri 1
Inhouse Training Java Fundamental
LP3T NurulFikri 2
Inhouse Training Java Fundamental
LP3T NurulFikri 3
Inhouse Training Java Fundamental
LP3T NurulFikri 4
Inhouse Training Java Fundamental
16.1 Tujuan.............................................................................................................................112
16.2 Ada apa dengan Thread ?................................................................................................112
16.3 Multithread......................................................................................................................112
16.4 Mematikan Thread .........................................................................................................112
16.5 Membuat thread Sendiri..................................................................................................114
Bab 17 Pengenalan JDBC ..........................................................................................................117
17.1 Tujuan.............................................................................................................................117
17.2 Apa itu Database.............................................................................................................117
17.3 Java Database Connectivity ( JDBC).............................................................................117
17.4 Arsitektur JDBC..............................................................................................................117
17.5 Koneksi ke Database.......................................................................................................118
17.6 Object Connection...........................................................................................................119
17.7 Query SQL......................................................................................................................120
17.8 Tabel Tipe Data, Java Type dan Method........................................................................121
17.9 Perintah SQL dengan JDBC : INSERT, UPDATE, DELETE........................................123
17.10 PreparedStatement........................................................................................................124
LP3T NurulFikri 5
Inhouse Training Java Fundamental
Kata Pengantar
Assalamualaikum Wr.Wb
Alhamdulillah, puji syukur kami haturkan kehadirat Allah SWT semata. Atas berkat
rahmat dan hidayahnya Buku Panduan Mata Kuliah Java Fundamental bisa terwujud, buku
panduan yang sekarang ada di tangan anda ini, Insya Allah akan membantu dalam proses belajar
pemrograman Java.
Materi kuliah Java Fundamental yang ada pada buku ini untuk dirancang untuk 4 SKS,
diharapkan dengan mengikuti kuliah Java Fundamental ini mahasiswa dapat mengenal dan
memahami bahasa pemrograman Java, serta dapat mengembangkan dan menggunakan Java
sebagai bahasa alternatif untuk pengembangan teknologi informasi.
Sebagaimana teknologi informasi yang terus semakin berkembang, Buku materi kuliah
Java Fundamental diharapkan akan tetap relevan dengan teknologi yang ada saat ini. Kritik dan
saran dari para pembaca dan pengguna buku ini sangat kami harapkan untuk membantu dalam
perbaikan buku ini.
Akhir kata, kami ucapkan banyak terima kasih kepada semua pihak yang telah membantu
penulisan buku ini, Mudah-mudahan apa yang telah kita hasilkan ini menjadi amal baik dan ilmu
yang ada dalam buku ini dapat bermanfaat bagi Mahasiswa dan tentu saja bagi perkembangan
pemrograman Java di Indonesia.
Wassalamualaikum Wr.Wb
Penyusun
LP3T NurulFikri 6
Inhouse Training Java Fundamental
Bab 1 Pendahuluan
Pendahuluan
1.1 Tujuan
Setelah mengikuti modul ini, diharapkan siswa :
• Mengenal bahasa pemrogrman Java
• Mengetahui konsep OOP
• Membuat program dan menjalankan program Java
Objek-objek dalam dunia nyata, mempunya 2 karakteristik khusus / khas, yaitu : Status dan
Perilaku. Contohnya, sepeda punya status (jumlah gir, jumlah pedal, dua buah ban, gir yang
sedang dipakai-terkadang sebuah sepeda punya lebih dari satu gir) dan Perilaku (mengerem,
ngebut, ubah gir, menabrak)
Bahasa yang berorientasi pada objek pun mempunyai karakteristik yang sama dengan
objek-objek di duna nyata.
Yaitu Status atau properti objek yang dalam bahasa pemograman disimpan sebagai
Variabel, dan Perilaku yang diimplementasikan sebagai Method.
1. Enkapsulasi (pembungkusan)
LP3T NurulFikri 7
Inhouse Training Java Fundamental
Enkapsulasi adalah pelindung program dan data yang sedang diolah. Enkapsulasi
mendifinisikan perilaku dan melindungi program dan data agar tidak diakses secara sembarangan
oleh program lain.
Dalam java, dasar enkapsulasi adalah class. Anda membuat suatu class yang menyatakan
bahwa variabel atau method sebuah class tidak dapat diakses oleh class lain dengan menjadikan
class tersebut private, atau menjadikan class tersebut protected - yaitu hanya bisa diakses oleh
turunannya, atau menjadikan class tersebut public - yaitu bisa diakses oleh sembarang class.
2. Inheritansi (pewarisan)
Objek-objek yang berada di sekitar kita adalah objek-objek yang saling terhubung secara
hirarkis. Misalnya:
Objek Gambar
Bentuk 2D Bentuk 3D
Lingkaran dan Bujur Sangkar adalah turunan dari Bentuk 2D dan Bentuk 2D adalah
turunan dari Objek Gambar.
Lingkaran dan Bujur Sangkar mewarisi (inherit) sifat-sifat dari Bentuk 2D, juga mewarisi
sifat-sifat dari Objek Gambar.
Lingkaran dan bujur sangkar dapat di katakan subclass dari Bentuk 2D. Bentuk 3D adalah
parent-class dari Bola dan Piramida, dan seterusnya.
3. Polimorfisme
Walaupun Lingkaran dan Bujur Sangkar sama-sama turunan dari Bentuk 2D, tetapi cara
mengubah ukuran masing - masing berbeda, untuk lingkaran anda harus merubah besar jari-
jarinya, sedang untuk bujur sangkar anda harus mengubah panjang sisinya
Dalam java implementasi, method suatu parent-class dapat diubah oleh sub-classnya, hal
ini dikenal dengan overriding method. Deklarasi Method sama tapi implementasi atau difinisinya
berbeda (Method / perilaku yang sama tapi implementasinya/caranya yang berbeda-beda inilah
yang disebut dengan Polimorfisme).
LP3T NurulFikri 8
Inhouse Training Java Fundamental
class <nama_class>
{
public static void main (String args[])
{
statement ;
____________ ;
____________ ;
}
}
Berikut contoh membuat program yang menampilkan kalimat : Selamat Belajar Java
1 //Nama File Salam.java
2 class Salam
3 {
4 public static void main( String args[ ] )
5 {
6 System.out.println("Selamat Belajar Java");
7 }
8 }
langkah selanjutnya:
1. Simpan dengan nama: Salam.java, Nama file harus sama dengan nama classnya
2. Compile Salam.java: javac Salam.java
3. Hasilnya akan menghasilkan: Salam.class
4. Jalankan Salam.class: java Salam.class atau java Salam
5. akan menghasilkan output :
Selamat Belajar Java
LP3T NurulFikri 9
Inhouse Training Java Fundamental
Aplikasi java adalah program java yang dijalankan pada shell, sedangkan applet java
adalah program java yang dijalankan dalam browser. Tampilan applet adalah tampilan grafis.
1 import javax.swing.JApplet;
2 import java.awt.Graphics;
3 import java.awt.Color;
4
5 public class SalamApplet extends JApplet {
6 public void paint(Graphics g) {
7 g.drawRect(0, 0,
8 getSize().width 1,
9 getSize().height 1);
10 setBackground( Color.yellow );
11 g.drawString("Selamat Belajar Java!", 5, 20);
12 }
13
14 }
langkah selanjutnya :
1. compile SalamApplet.java
2. menghasilkan SalamApplet.class
3. jalankan di browser dengan memanggil salam.html di address bar-nya.
cara menjalankan di browser:
LP3T NurulFikri 10
Inhouse Training Java Fundamental
LP3T NurulFikri 11
Inhouse Training Java Fundamental
2.1 Tujuan
2.2.1 Statemen
Bentuk Statemen atau pernyataan dalam satu program di Java adalah sebagai berikut
int i = 1;
import java.util.Calendar;
System.out.println ("Selamat Datang " + teman +
" di LPK NurulFikri Margonda");
pegawai.tetap = true;
total = a + b + c + d + e ;
sama dengan
total = a + b + c +
d + e ;
LP3T NurulFikri 12
Inhouse Training Java Fundamental
java memperbolehkan spasi dalam jumlah berapa saja (spasi, tab, baris baru)
1 class Hello
2 {
3 public static void main(String args[])
4 {
5 System.out.println("Hello World !");
6 }
7 }
class Hello { public static void main(String args[])
{ System.out.println("Hello World !"); } }
2.2.2 Identifier
Dalam Java, identifier adalah nama yang diberikan untuk variabel, class atau method.
Identifier hanya boleh dimulai dengan huruf, underscore( _ ) atau tanda dollar ($).
Identifier adalah case sensitive (membedakan huruf besar/kecil) dan tak ada batas
maksimum.
Ingat: Aturan penamaan Java adalah memperhatikan besar kecil huruf atau Case
Sensitive
Contoh:
username
user_name
_sys_var1
$change
LP3T NurulFikri 13
Inhouse Training Java Fundamental
Variabel adalah suatu item dari data yang diberi nama identifikasi (identifier), variabel
dapat diartikan lokasi di dalam memori yang mana suatu nilai (value) dapat disimpan.
Contoh cara pendeklarasian dan inisialisasi Tipe Data primitif sebagai berikut
char ch; // deklarasi variabel
ch = "R"; // inisialisasi variabel
float jari = 8; // deklarasi dan inisialisasi variabel
int x , y , z ; // dekalarasi tiga variabel integer
boolean tetap = true
LP3T NurulFikri 14
Inhouse Training Java Fundamental
3. Interface
Mengenai tipe data reference akan diuraikan dalam bab selanjutnya.
2.5 Komentar
2.6 Literal
Karakter literal adalah karakter yang di tulis diantara kutip satu : 'r', '#', '14' dan
sebagainya. Karakter ini disimpan sebagai 16 bit Unicode Characters. Berikut daftar special kode
yang mereprentasikan karakter-karakter yang tidak dapat diprint (nonprintable characers ).
Tabel 2.3
Escape Meaning
\n Newline
\t Tab
\b Backspace
\r Carriege return
LP3T NurulFikri 15
Inhouse Training Java Fundamental
Escape Meaning
\f Formfeed
\\ Backslash
\' Single Quote
\" Double Quote
\ddd Octal
\xdd Hexadecimal
\udddd Unicode character
Contoh :
"dalam kalimat ini terdapat sebuah \t tab didalamnya"
"Java adalah \"OOP\" programming "
"Trade Mark dari Java\u2122"
Contoh :
1 //Nama File Aritmatika.java
2 class Aritmatika {
3 public static void main (String args[]) {
4
5 short x = 10;
6 int y = 4 ;
7 float a = 12.5f;
8 float b = 7f;
9
LP3T NurulFikri 16
Inhouse Training Java Fundamental
10 System.out.println(" x = " + x + ", y = " + y );
11 System.out.println("x + y = " + (x + y));
12 System.out.println("x y = " + (x y));
13 System.out.println("x / y = " + (x / y));
14 System.out.println("x % y = " + (x % y));
15
16 System.out.println(" a = " + a + ", b = " + b);
17 System.out.println(" a / b = " + (a / b));
18
19 }
1 }
Assignment Operator
Tabel 2.5
Ekpresion Meaning
x += y x = x + y
x = y x = x y
x *= y x = x * y
xX /= y x = x / y
Namun tidak seperti C / C++ , Java mengizinkan x untuk bilangan floating point.
1 //Nama File : IncrementX.java
2 Class IncremenX {
3 public static void main (String args[]) {
4
5 int x = 0;
6 System.out.println ( " Nilai awal x : " + x);
7 x++;
LP3T NurulFikri 17
Inhouse Training Java Fundamental
8 System.out.println ( " Nilai x : " + x);
9 x++;
10 System.out.println ( " Nilai x : " + x);
11 }
12 }
Tabel 2.6
Operator Meaning Example
== Equal X == 3
!= Not Equal X != 3
< Less than X < 3
> Greater than X > 3
<= Less than or equal to X <= 3
>= Greater than or equal to X >= 3
Tabel 2.7
Operator Meaning
&& Logical AND
|| Logical OR
! Logical NOT
& AND
| OR
^ XOR
<< Left shift
>> Right shift
>>> Zero fill right shift
~ complement
<<= Left shift assignment (x= x << y)
>>= Right shift assignment (x = x >> y)
>>>= Zero fill right shift assignment (x = x >>> y)
x&=y AND assignment ( x = x & y)
x|=y OR assignment (x + x | y)
x^=y XOR assignment (x = x ^ y)
LP3T NurulFikri 18
Inhouse Training Java Fundamental
3.1 Tujuan
3.2 Array
Array adalah kelompok variabel dengan tipe sejenis dan dinyatakan dengan nama yang
sama. Untuk membuat sebuah array di java, kita gunaka tiga step berikut ini :
1. Deklarasi sebuah variabel yang betipe array
2. Buat object array baru dan asign ke variabe array
3. Simpan nilai dalam array
TipeData namaVariabe[ ];
atau
TipeData[ ] namaVariabel;
Contoh :
int bulan[ ];
Point sudut[ ];
atau
int[ ] bulan;
Point[ ] sudut;
LP3T NurulFikri 19
Inhouse Training Java Fundamental
Baris statement terakhir diatas membuat suatu object dengan tipe data String dengan 10
element (slot) didalamnya.
Ketika membuat sebuah array dengan menggunakan operator new, semua elemen di
inisialisasi :
• array numeric bernilai 0
• array boolean bernilai false
• array character bernilai '\0'
• array object bernilai null
String[ ] strbulan = { "Januari", "Februari", "Maret","April" };
Setiap elemen dalam kurung kurawal { } , harus mempunyai tipe data yang sama.
String[ ] bulan = new String[12];
bulan [1] = "Januari"; // menberi nilai slot 1 dari array bulan;
int jml = bulan.length;// hasil output 12 (banyaknya slot dalam
array bulan)
3.4 Kondisional if
if (expresi boolean)
{
satu statement atau block statement;
}
LP3T NurulFikri 20
Inhouse Training Java Fundamental
Contoh :
1 if ( x < y )
2 {
3 System.out.println(" Nilai x : " + x +" Nilai y : " + y );
4 System.out.println(" x lebih kecil dari y");
5 }
if (Kondisi adalah benar)
{
satu statement atau block statement;
}
else
{
satu statement atau block statement;
}
Contoh :
1 if ( x < y )
2 {
3 System.out.println(" x lebih kecil dari y");
4 }
5 else
6 {
7 System.out.println(" x lebih besar atau sama dengan y ");
8 }
3.4.3
1 /**
2 * BilanganTerbesar.java
3 *
4 **/
LP3T NurulFikri 21
Inhouse Training Java Fundamental
5 import java.util.Scanner;
6 public class BilanganTerbesar
7 {
8 public static void main (String args[])
9 {
10
11 boolean benar;
12 // class java.util.Scanner digunakan untuk membaca inputan
keyboard
13 Scanner sc = new Scanner(System.in);
14
15 System.out.print("Input variabel x : ");
16 int x = sc.nextInt();
17
18 System.out.print("Input variabel y : ");
19 int y = sc.nextInt();
20
21 if (x < y)
22 {
23 System.out.println("x lebih kecil dari y ");
24 benar =true;
25 }
26 else
27 {
28 System.out.println("x lebih besar atau sama dengan dari y");
29 benar =false;
30 }
31
32 if (benar)
33 System.out.println("x Kecil, y Besar ");
34 else
35 System.out.println("x Besar, y Kecil ");
36 }
37 }
Kadang kala seorang programer dihadapkan pada kondisi untuk mengetes suatu nilai
dengan banyak kondisi, dengan menggunakan operator kondisional if (nested if) memang bisa
dilakukan namun terkadang terlalu rumit.
Contoh menggunakan nested if
1 if (operator == "+" )
2 addargs(arg1, arg2)
3 else if (operator == "")
4 subargs(arg1,arg2);
5 else if (operator == "*")
6 multargs(arg1,arg2);
7 else if (operator == ":")
8 divargs(arg1,arg2);
LP3T NurulFikri 22
Inhouse Training Java Fundamental
Contoh :
1 switch (operasi) {
2 case "+" ;
3 addargs(arg1,arg2);
4 break;
5 case "" ;
6 subargs(arg1,arg2);
7 break;
8 case "*" ;
9 mulargs(arg1,arg2);
10 break;
11 case ":" ;
12 divargs(arg1,arg2);
13 break;
14 }
1 //Nama File : ContohSwitch
2 import java.util.Scanner;
3
4 public class ContohSwitch{
5 public static void main(String args[]) {
6
7 Scanner sc = new Scanner(System.in);
LP3T NurulFikri 23
Inhouse Training Java Fundamental
8 System.out.print("Input Bilangan Antara 1 s/d 5 : ");
9
10 int bil = sc.nextInt();
11 String nama_bil = "";
12
13 switch (bil) {
14 case 1:
15 nama_bil = "Satu";
16 break;
17 case 2:
18 nama_bil = "Dua";
19 break;
20 case 3:
21 nama_bil = "Tiga";
22 break;
23 case 4:
24 nama_bil = "Empat";
25 break;
26 case 5:
27 nama_bil = "Lima";
28 break;
29 default :
30 System.out.println(bil + " bukan antara 1 s/d 5
Tahuu !!");
31 System.exit(1);// keluar
32
33 }
34 System.out.println(nama_bil);
35
36 }
37 }
for (expresi inisialisasi; expresi boolean; expresi)
{
statement block statement;
}
Contoh :
1 for (int i = 1; i < 10; i++)
2 {
3 System.out.println("looping ke "+ i );
4 }
5 System.out.println("Selesai ....");
LP3T NurulFikri 24
Inhouse Training Java Fundamental
Contoh lain:
1 String[ ] nama2 = { " ","Toto", "Irfan", "Efrizal","Umam","Ilham"};
2
3 for ( int i = 1 ; i < nama2.length; i++)
4 {
5 System.out.println( i + ". " + nama2[i]);
6 }
7 System.out.println( " Namanama diatas adalah Staff LP3T NF");
Contoh:
1 int i = 0 ;
2 while (i < 10)
3 {
4 System.out.println("Looping ke ") ;
5 i++ ;
6 }
7 System.out.println("Selesai ...");
8 do {
9 statement atau block statement;
10 }
11 while (boolean)
Contoh :
LP3T NurulFikri 25
Inhouse Training Java Fundamental
1 int i = 1;
2 do {
3 System.out.println("Looping, round " + i );
4 i++;
5 } while ( i < = 10)
6 System.out.println("Finish Looping...");
Untuk keluar dari Looping (for, while dan do) kita gunakan keyword break atau continue.
Misalkan ada sederat bilanga dalam object array, kita akan mencetak bilangan-bilangan
tersebut, pencetakan akan berhenti jika ditemukan bilangan 0 dalam elemet object array tersebut
1 //Nama File : ContohOutLoop
2 // Contoh kasus dengan keyword break
3
4 class ContohOutLoop {
5
6 public static void main (String args[]){
7 int count = 0;
8 int[] bil = { 2,3,27,6,0,3,23 };
9
10 System.out.print("Test BilanganBilangan : ");
11 for (int i = 0; i < bil.length ; i++)
12 System.out.print (bil[i] + ", ");
13 System.out.println();
14 System.out.println("Kalau Bilangannya 0 sisa Bilangan tidak
dicetak");
15 System.out.println("");
16
17 while (count < bil.length) {
18 if (bil[count] == 0 ) {
19 break; // keluar dari Looping
20 }
21 count++;
22 System.out.println("Bilangan ke : "+ count + ": " +
bil[count]);
23 }
24 System.out.println("");
25 }
26 }
Untuk keluar dari looping bisa digunakan label loop, berikut contoh penggunaan label
looping dalam Nested Looping :
1 //Nama File : ContohNestedLoop.java
LP3T NurulFikri 26
Inhouse Training Java Fundamental
2 class ContohNestedLoop {
3
4 public static void main (String args[]){
5
6 foo :
7 for (int i = 1; i <= 5 ; i++)
8 for (int j = 1 ; j <= 3 ; j++) {
9 System.out.println(" i = " + i + " ," + "j = "+ j);
10 if ((i + j) > 4)
11 break foo;
12 }
13
14 System.out.println("Loop Selesai ...");
15
16 }
17 }
LP3T NurulFikri 27
Inhouse Training Java Fundamental
4.1 Tujuan
Setelah mengikuti modul ini anda diharapkan mengetahui :
• Cara mencipatakan Java Object
• Testing dan modifikasi class dan variabel instance
• Memanggil Method dan Objek
• Bagaimana bekerja dengan Objek
• Overview Java class libraries
Dalam dunia nyata, kita sering berinteraksi dengan banyak object. Kita tinggal di rumah,
rumah adalah suatu object, dalam terminologi Pemrograman Berorientasi Object (OOP) rumah
kita adalah instance dari suatu class rumah.
Misal kita tinggal dalam suatu komplek perumahan, sebelum membangun rumah developer
akan berpanduan pada rancang bangun rumah (blue print) yang telah dibuat seorang arsitek.
Blue print dari rumah adalah class, sedang rumah yang kita tinggal (rumah-rumah dalam
komplek) disebut instance atau object.
Manusia adalah sebuah class; Anda, Saya, Kita adalah instance dari class Manusia.
Contoh lain, adalah resep masakan yang ada di majalah kuliner atau buku resep, resep
masakan adalah class, sedangkan makanan yang dimasak berdasarkan resep adalah object.
Object adalah instance dari class. Jika class secara umum merepresentasikan (template)
suatu object, sebuah instance adalah representasi secara konkrit dari class itu sendiri.
Ketika anda membuat program dengan Java, anda akan mendefinisikan beberapa class,
anda juga akan menggunakan class untuk membuat suatu instance dan akan tentu saja akan
bekerja dengan instance-instance tersebut.
LP3T NurulFikri 28
Inhouse Training Java Fundamental
String str = new String();
Random r = new Random();
Pegawai p2 = new Pegawai();
hari adalah object reference dari class Date yang akan digunakan untuk mengakses class
Date. Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference
ke instance dari class Date().
Contoh :
Kita akan menggunakan class Date untuk membuat suatu object date.
1 import java.util.Date;
2
3 class CreateDates {
4
5 public static void main (String args[]) {
6 Date d1, d2, d3;
7
8 d1 = new Date();
9 System.out.println("Hari 1 : " + d1);
10
11 d2 = new Date(71, 4, 14, 8, 35);
12 System.out.println("Hari 2 : " + d2);
13
14 d3 = new Date("September 3 1976 2:25 PM");
15 System.out.println("Hari 3 : " + d3);
16 }
17 }
Ketika anda menggunakan operator new, sesungguhnya beberapa kejadian telah terjadi.
1. Instance baru yang telah diberikan oleh class diciptakan
2. Memori dialokasikan untuk instance tersebut.
3. Special method didefinisikan pada class (Konstruktor)
Konstruktor : Suatu method spesial yang digunakan inisialisasi sebuah instance baru dari
class. Konstruktor menginisialisasi object-object baru dan variabel-variabel. Pemberian nama
method Konstruktor harus sama dengan nama classnya (Penjelasan tentang kontruktor akan
dibahas dalam bab berikutnya).
LP3T NurulFikri 29
Inhouse Training Java Fundamental
Pegawai adalah object, status adalah variabel. Misalkan status adalah object yang
mempunyai variabel instance tersendiri yaitu tetap, penulisan dapat ditulis sebagai berikut
Pegawai.status.tetap;
Contoh :
1 //Nama File : TestPoint.java
2 import java.awt.Point;
3
4 class TestPoint {
5 public static void main (String args[]) {
6
7 Point poin = new Point(10,10);
8 System.out.println(" X = " + poin.x);
9 System.out.println(" Y = " + poin.y);
10
11 System.out.println(" Setting X = 6.");
12 poin.x = 6;
13 System.out.println(" Setting Y = 14.");
14 poin.y = 14;
15
16 System.out.println(" X = " + poin.x);
17 System.out.println(" Y = " + poin.y);
18
19 }
20 }
Contoh :
1 class Pegawai {
2 static String nama_kantor = "PT NCS";
3 String nama_panggilan;
4 int umur;
5 boolean status;
6 . . .
7 }
LP3T NurulFikri 30
Inhouse Training Java Fundamental
Untuk mengakses variabel class sama seperti sebelumnya dengan menggunakan notasi titik
(dot).
Sintak berikut akan menghasilkan output yang sama
Pegawai NCSStaff = new Pegawai();
Pegawai NCSSatpam = new Pegawai();
System.out.println("Nama Kantor : " + NCSStaff.nama_kantor);
System.out.println("Nama Kantor : " + NCSSatpam.nama_kantor);
Contoh :
1 //Nama File : TestString.java
2 class TestString {
3
4 public static void main (String args[]) {
5 String str = "Awalilah segala sesuatu pekerjaan dengan
Bismillah";
6
7 System.out.println("Kalimat bijak : " + str);
8 System.out.println("Panjang (Length) dari String : "
9 + str.length());
10 System.out.println("Character pada Posisi ke 4 adalah : "
11 + str.charAt(4));
12 System.out.println("SubString antara posisi 25
13 sampai 33 adalah : "+str.substring(25,33));
14 System.out.println("index dari huruf B
15 adalah ; " + str.indexOf('B'));
16 System.out.println("Tampilan kalimat bijak
17 dengan huruf besar : "+str.toUpperCase());
18 }
19 }
LP3T NurulFikri 31
Inhouse Training Java Fundamental
Dalam program diatas , kita mendeklarasikan dua variabel bertipe Point, dan meng-asign
suatu Point baru ke poin1. Kemudian meng-asign poin2 dengan nilai dari poin2.
Output yang tejadi adalah :
Point 1 : 200, 200
Point 2 : 200, 200
terlihat poin2 juga berubah. Ketika kita meng-asign suatu nilai dari poin1 ke poin2,
sesungguhnya kita menciptakan sebuah reference dari poin2 menunjuk kesatu object yang sama
dengan poin1.
poin1 Point Object
X : 200
poin2 y : 200
Kadangkala kita perlu menyimpan suatu nilai dalam tipe data yang berbeda.
Casting adalah mekanisme untuk menconvert (mengubah) tipe data dari suatu object atau
data primitif
LP3T NurulFikri 32
Inhouse Training Java Fundamental
Perintah Casting : (TypeData) value
TypeData : short, int, float,boolean
Contoh :
1 float x = 9 ;
2 float y = 2;
3 int z = (int) x/y;
Casting dapat diartikan pula mengubah type / class suatu variabel. Variabel hanya dapat di
Casting ke class lain yang merupakan super-class dari class lainnya.
Instance dari Class (object) dapat di Casting menjadii instance dari class lain. Object hanya
bisa di Casting menjadi instance dari super-classnya.
Perintah Casting : (nama class) object
Contoh :
1 Window win = new Window();
2 Container ctr = (Container) win;
Kita gunakan method yang terdapat dalam class Integer, method intValue() untuk
mendapatkan tipe data int (tipe data primitif) dari object Integer.
LP3T NurulFikri 33
Inhouse Training Java Fundamental
int num = intObject.intValue();
Berikut beberapa class dalam package bagian dari Java class library :
LP3T NurulFikri 34
Inhouse Training Java Fundamental
Bab 5 Class
Class
5.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Memahami struktur dari suatu class
• Memahami dan mengenal Member dari Class Variabel dan Method
• Cara penggunaan Member Class
[ 'public'] [( 'abstract' | 'final' ) ] 'class' nama_class
' { '
// statement / blok statement
// member class
'}'
Menggunakan keyword public pada class, berarti class tersebut bisa di akses class-class di
seluruh package. Perlu diingat jangan menggunakan public jika class yang dibuat hanya di akses
oleh class-class dalam satu package dengan class itu sendiri.
Gunakan keyword abstract untuk mengidentifikasi suatu class abstract dimana object tidak
bisa diciptakan dalam class abstract.
Gunakan keyword final untuk mengidentifikasi suatu class final, dimana tidak dapat
diciptakan class baru turunan (inheretance) dari class final.
Penamaan class dengan ketentuan huruf character pertamanya adalah huruf besar.
Contoh:
class Account {
Jika class adalah sub class (turunan) dari class lain gunakan keyword extends.
Class AccountBank extends Account {
. . .
}
LP3T NurulFikri 35
Inhouse Training Java Fundamental
class AccountBank implements Asset {
. . .
}
Contoh :
1 class Account {
2 String no_acc = "" ;
3 double saldo = 0;
4 }
Jika tidak digunakan keyword public , private atau protected didepan tipe data dari variable
berarti : Hanya kode-kode yang terdapat dalam MyClass dan class-class lain yang dideklarasikan
dalam package dimana MyClass dideklarasikan yang hanya dapat mengakses variabel nama.
LP3T NurulFikri 36
Inhouse Training Java Fundamental
2. private
1 class Account
2 {
3 private double saldo;
4 }
Berarti : Hanya kode-kode yang terdapat dalam class Account yang dapat mengakses
variabel saldo.
3. public
1 public class Pegawai
2 {
3 public String nama;
4 }
Berarti : Kode-kode yang terdapat didalam class Pegawai dan class-class yang terdapat
didalam package lain dapat mengakses variabel nama (class Pegawai harus dideklarasikan public
juga agar dapat diakses class-class dalam package lain)
4. protected
1 public class Pegawai
2 {
3 protected String nama;
4 }
Berarti : Hanya kode-kode yang terdapat dalam class Pegawai dan class-class lain dalam
satu package yang sama dengan class Pegawai dan seluruh sub class dari class Pegawai (yang
dideklarasikan dalam package lain) dapat mengakses variabel nama.
5.3.4 Modifier
Pilihan Modifier menggunakan keyword : final atau volatile dan atau static dan atau
transient.
LP3T NurulFikri 37
Inhouse Training Java Fundamental
Contoh:
1 class Pegawai
2 {
3 final int AKUNTAN = 1;
4 final int HRD_STAFF = 2;
5 final int MANAGER = 3;
6 }
● Jika suatu variabel dideklarasikan dengan final, variabel dianggap sebagai variabel
konstan (konstanta) yang bersipat read only. Biasanya pemberian nama variabel dengan huruf
besar.
● Variabel yang dideklarasikan dengan volatile akan dapat diakses oleh multiple thread.
● Keyword static digunakan untuk mendeklarasikan variabel, dimana seluruh object dapat
mengambil (share) nilai variabel tersebut, jika variabel yang dideklarasikan dengan static
diberi nilai baru maka seluruh object akan mengambil/melihat nilai terbaru.
● Variabel yang dideklarasikan dengan transient tidak akan disimpan selama object
serialization.
LP3T NurulFikri 38
Inhouse Training Java Fundamental
5 }
6 }
Untuk mengakses variabel class dari suatu method dalam satu class lain, kita hanya perlu
memanggil nama variabel dengan terlebih dahulu menyebut nama classnya, misal:
Lingkaran.PHI
Contoh :
1 class Lingkaran {
2 static float PHI = 3.14;
3}
1 class UseLingkaran
2 {
3 public static void main (String args[])
4 {
5 System.out.println ("NILAI PHI : " + Lingkaran.PHI );
6 }
7 }
5.3.7 Konstanta
Konstanta adalah variabel yang hanya bisa di baca (read only variabel) dan tidak bisa
diubah nilainya.
Untuk mendeklarasi variabel konstan gunakan keyword modifier final.
Contoh :
1 class Lingkaran {
2 final static float PHI = 3.14;
3}
LP3T NurulFikri 39
Inhouse Training Java Fundamental
kata kerja, dalam bahasa lainnya method disebut juga function, subroutine atau procedure. Di
Java kita bisa mempunyai beberapa method dengan nama yang sama tapi mempunyai tipe nilai
balik yang berbeda atau argumen-argumen yang berbeda pula.
Penamaan method jika satu kata gunakan huruf kecil untuk awal kata dan jika mengandung
arti lebih dari satu kata (dua kata atau lebih) maka awal kata berikutnya gunakan huruf besar.
Contoh: hitung(), setNama( ), getNamaLengkap( ).
LP3T NurulFikri 40
Inhouse Training Java Fundamental
4 int sum (int x, int y)
5 {
6 int jumlah;
7 jumlah = x + y ;
8 return jumlah;
9 }
10
11 public static void main (String args[]) {
12
13 Kalkulasi kal = new Kalkulasi();
14 int hasil;
15 System.out.println("Penjumlahan Menggunakan Method sum : Bil 6
dan 7");
16 hasil = kal.sum(6,7);
17 System.out.println ( "Jumlah : " + hasil);
18 }
19 }
Dari program diatas hanya method-method pada class Temperature dan class-class lain
dalam satu package dengan class Temperature hanya bisa mengakses method setDerajat() dan
getDerajat().
LP3T NurulFikri 41
Inhouse Training Java Fundamental
5 if ( n == 0)
6 return 1; // 0! (0 factorial) nilainya 1
7
8 int kali = 1;
9
10 for (int i = 2; i <= n ; i++)
11 kali *= i;
12
13 return kali;
14 }
15
16 int permutasi (int n, int r)
17 {
18 return factorial (n) / factorial (n r);
19 }
20 }
Hanya kode-kode dalam class MathUtilitas yang dapat mengakses method factorial().
LP3T NurulFikri 42
Inhouse Training Java Fundamental
Hanya kode-kode yang terdapat dalam class Pegawai, class-class lain yang dideklarasikan
dalam satu package yang sama dengan class Pegawai dan kode-kode pada subclass Pegawai
(yang dideklarasikan di package manapun) dapat mengakses method hitungGaji().
5.4.6 Modifier
Method dapat dideklarasikan dengan Modifier abstract atau final dan atau static dan atau
native dan atau synchronized
Jika method dideklarasikan dengan abstract, maka method hanya terisi dengan nama-nama
method saja, tidak ada block statement, Method dengan deklarasi abstract hanya terdapat pada
class abstract. Method dengan deklarasi abstract tidak bisa dideklarasikan dengan final, static,
native, synchronized atau private secara bersamaan.
Jika method dideklarasikan dengan final, merhod tersebut tidak bisa di override oleh
subclass dari class tersebut.
Jika method dideklarasikan dengan static, method tersebut dikenal sebagai sebuah class
method karena method ini hanya bisa diakses oleh variabel-variabel class.
Method dengan deklarasi native adalah hanya berisi nama method dan argumen-
argumennya (method signature), dimana body dari method (kode-kode) ditulis dengan program
C++ dan tersimpan dalam library C++.
Sedangkan method dengan deklarasi synchronized berhubungan dengan thread, Hanya satu
thread pada satu saat yang dapat mengeksekusi method synchronized.
LP3T NurulFikri 43
Inhouse Training Java Fundamental
Pada class Account terdapat sebuah variable class bernama no_acc. Pada method
setNoAccount() dengan parameter argumen dengan nama yang sama dengan nama variable
class, maka untuk membedakannya gunakan kata kunci this untuk akses variable class.
Keyword this digunakan untuk mengakses member class (variable atau method) dari dalam
class, atau keyword this digunakan untuk mengidentifikasi object saat ini (current object).
1. Memanggil instance method dari instance method lain dalam class yang sama
Contoh :
1 public class Account
2 {
3 private String no_acc = "";
4 private double saldo = 0;
5
6 public void setNoAccount(String no_acc)
7 {
8 this.no_acc = no_acc;
9 }
10 public void deposit(double uang )
11 {
12 this.saldo = this.saldo + uang;
13 }
14
15 public void withdraw( double uang )
16 {
17 this.saldo = this.saldo uang;
18 }
19 public void transfer(Account ac_tujuan, double uang)
20 {
21 ac_tujuan.deposit( uang );
22 this.withdraw( uang );
23 }
LP3T NurulFikri 44
Inhouse Training Java Fundamental
24 }
Pada program diatas instance method transfer() memanggil instance method
deposit() dan withdraw().
2. Memanggil instance method dari class lain terlebih dahulu dibuat object dari class
instance method yang akan dipangil.
Contoh:
1 /**
2 * UseAccount.java
3 **/
4 public class UseAccount
5 {
6 public static void main (String args[])
7 {
8 Account ac = new Account();
9 ac.setNoAccount("007");
10 ac.deposit(400);
11 }
12 }
Contoh program pada class UseAccount pada method main didefinisikan terlebih dahulu
object instance dari classs Account bernama ac, baru kemudian memanggil method
setNoAccount() dan deposit().
LP3T NurulFikri 45
Inhouse Training Java Fundamental
Pada program diatas method main() pada HelloGoodBye menciptakan object (gp) yang
akan memanggil method hello(). Karena hello() mengembalikan suatu reference ke object
yang sama (pada statement return this) sehingga method goodbye() dapat dipanggil setelah
method hello().
LP3T NurulFikri 46
Inhouse Training Java Fundamental
1 // Nama File : UseAnakPegawai.java
2
3 class UseAnakPegawai {
4 public static void main (String args[]) {
5 AnakPegawai.namaPegawai("Yan Farmawan",2);
6 }
7 }
Suatu method dalam subclass dapat mengganti (meng-overide) method yang ada di dalam
superclassnya. (akan dijelaskan dalam bab berikutnya )
LP3T NurulFikri 47
Inhouse Training Java Fundamental
boleh dideklarasikan dengan menggunakan tipe data kembalian (return data type).
class X kelihatannya kosong, tetapi dalam sebenarnya compiler melihat class X dengan
sebuah contruktur tanpa argumen-argumen, seperti sebagai berikut:
1 class X
2 {
3 X()
4 {
5 }
6 }
Jika class lain akan menggunakan object , terlebih dahulu class tersebut harus menciptkan
suatu object sesuai dengan argumen yang diberikan construktornya.
1 class X
2 {
3 private int i;
4 X (int i)
5 {
6 this.i = i;
7 }
8 }
1 class UseX {
2
3 public static void main (String args[]){
4 X x1 = new X(2);
5 X x2 = new X(); // akan terjadi error
6 }
7 }
LP3T NurulFikri 48
Inhouse Training Java Fundamental
6 public Account ( String no, double saldo)
7 {
8 this.no_acc = no;
9 this.saldo = saldo;
10 }
11
12 public String toString()
13 {
14 return "No.Acc " + this.no_acc + ", Saldonya:" +
this.saldo;
15
16 }
17
18 public static void main (String args[])
19 {
20 Account ac1 = new Account("007",400);
21 Account ac2 = new Account("010",256);
22 System.out.println( ac1 );
23 System.out.println( ac2 );
24 }
25 }
Contoh :
1 //Nama File : Persegi.java
2 import java.awt.Point;
3
4 class Persegi {
5 int x1 = 0;
6 int y1 = 0;
7 int x2 = 0;
8 int y2 = 0;
9
10 Persegi (int x1, int y1, int x2, int y2) {
11 this.x1 = x1;
12 this.y1 = y1;
13 this.x2 = x2;
14 this.y2 = y2;
15 }
16
17 Persegi (Point topLeft, Point bottomRight) {
18 x1 = topLeft.x;
19 y1 = topLeft.y;
20 x2 = bottomRight.x;
21 y2 = bottomRight.y;
22 }
LP3T NurulFikri 49
Inhouse Training Java Fundamental
23
24 Persegi (Point topLeft, int lebar, int tinggi) {
25 x1 = topLeft.x;
26 y1 = topLeft.y;
27 x2 = (topLeft.x + lebar);
28 y2 = (topLeft.y + tinggi);
29 }
30
31 void CetakPersegi() {
32 System.out.print("Koordinat Persegi : < " + x1 + ", " +
y1);
33 System.out.println(", " + x2 + ", " + y2 + " >");
34 }
35 }
LP3T NurulFikri 50
Inhouse Training Java Fundamental
2 import java.awt.Point;
3 class Point3D extends Point {
4 int z;
5 Point3D(int x, int y, int y) {
6
7 super(x,y);
8 this.z = z;
9 }
10 }
1 // Nama File : Point3D.java
2 import java.awt.Point;
3 class Point3D extends Point {
4 int z;
5 Point3D(int x, int y, int y) {
6
7 super(x,y);
8 this.z = z;
9 }
10 }
. . .
}
LP3T NurulFikri 51
Inhouse Training Java Fundamental
2. Member Method
◦ Method untuk menambahkan uang (deposit) kedalam account
◦ Method untuk mengurangi / mengambil uang ( withdraw) dari account
◦ Method mengembalikan informasi dari account berupa String ( toString)
3. Konstruktor
◦ Konstruktor kosong
◦ Konstruktor dengan dua argumen : nomor account dan saldo awal
LP3T NurulFikri 52
Inhouse Training Java Fundamental
LP3T NurulFikri 53
Inhouse Training Java Fundamental
Bab 6 Inheritance
Inheretance
6.1 Tujuan
Setelah mempelajari bab ini anda diharapkan mengetahui :
• Definisi Inheretance
• Subclass dan Superclass
• Overredding Method
• Casting Object
Kendaraan
Motor Sepeda
LP3T NurulFikri 54
Inhouse Training Java Fundamental
Pegawai
Manager Akuntan
Miss Vonny
'class' classIdentifier1 'extends' classIdentifier2
'{'
// Variabelvariabel dan methodmethod
'}'
LP3T NurulFikri 55
Inhouse Training Java Fundamental
5
6 private String nama = "";
7
8 Base(String nama)
9 {
10 this.nama = nama;
11 }
12
13 void info()
14 {
15 System.out.println("Nama : " + this.nama );
16 }
17
18 String getNama()
19 {
20 return this.nama;
21 }
22 }
Kode diatas terdiri dari dua class, Base dan Child. Class Child adalah turunan dari class
Base. Member class yang bukan private dapat diakses oleh Sub Class.
LP3T NurulFikri 56
Inhouse Training Java Fundamental
Child (String nama, int umur )
{
super( nama ) ; // panggil konstruktor parent class
this.umur = umur;
}
Dua hal yang perlu diperhartikan ketika memanggil konsturktor dari superclass :
1. Konstruktor dari superclass hanya bisa dipanggil dari subclass
2. Urutan baris kode dalam menggunalan keyword harus tepat, contoh kode program pada
class Child, jika penulisan dari statement this.umur = umur; lebih dahulu dari
statement super(nama); akan mengakibatkan error.
Hal ini terjadi karena kode pada konstruktor dari subclass tergantung pada variabel dan
method-method yang didekalarasikan oleh superclassnya.
Kode diatas berarti membuat sebuah object Base dan di -asign reference ke object yang
reference ke variabel dari Child.
LP3T NurulFikri 57
Inhouse Training Java Fundamental
LP3T NurulFikri 58
Inhouse Training Java Fundamental
LP3T NurulFikri 59
Inhouse Training Java Fundamental
Bab 7 Komposisi
Komposisi
(Membuat object dari object-object lain)
7.1 Tujuan
Setelah mempelajari bab ini anda diharapkan mengetahui :
• Difinisi komposisi
• Cara mengaplikasikan komposisi
Kendaraan
Mesin
1 class Mesin
2 {
3 / * variabelvariabel dan methodmethod
4 didefinisikan untuk mengidentifikasi struktur Mesin */
5 }
6
7 class Kendaraan
8 {
9 Mesin mesin;
10 Kendaraan (Mesin m)
11 {
12 mesin = m;
LP3T NurulFikri 60
Inhouse Training Java Fundamental
13 }
14 }
Contoh diatas, di deklarasikan dua class , Mesin dan Kendaraan. Didalam class Kendaraan
dideklarasikan sebuah variabel bertipe Mesin dengan nama mesin.
Class Kendaraan mempunyai konstruktor dengan parameter (Mesin m) yang
menginisialisasi mesin sebagai referensi dari sebuah object Mesin, yaitu dengan meng-asign
parameter m ke variabel mesin. Setelah meng-asign, mesin akan mereferensi ke object yang
sama sebagaimana object m (lihat gambar).
Untuk membuat object Mesin dan object Kendaraan dari object Mesin digunakan sintak
berikut ini :
Mesin m = new Mesin();
Kendaraan k = new Kendaraan(m);
Pada baris pertama dibuat object Mesin dan di-asign dengan alamat dari object Mesin
reference ke variabel m. Di baris kedua dibuat object Kendaraan k dengan diberi nilai object
Mesin melalui (didalam m) konstruktor dari Kendaraan.
Lebih jauh lagi, konstruktor akan menyimpan isi dari m didalam variabel private mesin.
Sehingga dapat dilihat bahwa object Kendaraan direferensi oleh object k untuk mengkomposisi
object Mesin yang direferensi oleh variabel internal dari Kendaraan. Hubungan antara object
baru dari Kendaraan dan Mesin dapat terlihat dalam gambar 7.2
-k
Kendaraan
mesin
Mesin
Gambar 7.2: Hubungan antara Object Kendaraan dan Object Mesin dari Kendaraan
LP3T NurulFikri 61
Inhouse Training Java Fundamental
menerapkan konsep komposisi dengan variabel String nama pemilik akan diubah menjadi sebuah
object instance dari class Customer yang dapat menampung informasi bukan hanya sekedar
nama customer saja melainkan banyak hal seperti informasi biodata lainnya.
7.3.1 Class Customer
Pada contoh berikut class Customer hanya menyimpan data nama customer dan alamat
saja. Pada class ini disediakan juga method untuk mengambil member variabel nama dan alamat.
1 /**
2 * Nama File : Customer.java
3 */
4 public class Customer {
5
6 private String nama = "";
7 private String alamat = "";
8
9 public Customer (String nama, String alamat)
10 {
11 this.nama = nama;
12 this.alamat = alamat;
13 }
14
15 public String getNama()
16 {
17 return this.nama;
18 }
19
20 public String getAlamat()
21 {
22 return this.alamat;
23 }
24
25 public String toString()
26 {
27 return "Nama Customer " + this.nama + ", Alamat :
" + this.alamat;
28 }
29 }
LP3T NurulFikri 62
Inhouse Training Java Fundamental
7 private Customer cust = null;
8
9 public AccountBank (String no, Customer cust , double
saldo_awal )
10 {
11 super (no, saldo_awal);
12 this.cust = cust;
13 }
14 public String toString()
15 {
16 return super.toString() + ", Pemilik " + this.cust.getNama();
17 }
18 public void transfer(AccountBank ac_tujuan, double uang)
19 {
20 ac_tujuan.deposit( uang ) ; // saldo rekening tujuan bertambah
21 withdraw( uang ); // uang rekening ini berkurang
22 }
23 }
LP3T NurulFikri 63
Inhouse Training Java Fundamental
Bab 8 Interface
Interface
8.1 Tujuan
Setelah mempelajari bab ini anda diharapkan mengetahui :
• Penggunaan interface
• Cara implementasi interface pada sebuah class
Pada interface Bentuk2D didefinisikan method kosong untuk menghitung luas dan
menghitung keliling benda-benda 2D. Bagaimana menghitung luas dari benda-benda bentuk 2
LP3T NurulFikri 64
Inhouse Training Java Fundamental
dimensi tergantung dari bentuk bendanya, contohnya untuk menghitung luas lingkaran dan luas
persegi panjang tentu caranya tidak sama (lihat gambar 8.1), namun nama perilakunya tetap
sama yaitu untuk mendapatkan luas dari benda 2 dimensi.
Penggunaan dari interface berfungsi sebagai alternatif dari penggunaan konsep mulitiple
inheretance yang tidak memungkinkan pada program Java. Sebuah class di Java hanya boleh
memiliki satu parentclass tetapi dapat mengimplemen beberapa interface. Sebuah class yang
mengimplemen beberapa interface dapat dikatakan telah menggunakan konsep multiple
inheretance.
LP3T NurulFikri 65
Inhouse Training Java Fundamental
8
9 public Lingkaran(float jari )
10 {
11 this.jari = jari;
12 }
13
14 public float getLuas()
15 {
16 return PHI * this.jari * this.jari;
17 }
18
19 public float getKeliling()
20 {
21 return 2f * PHI * this.jari ;
22 }
23
24 public String getNamaBentuk()
25 {
26 return "Lingkaran";
27 }
28
29 }
1 /**
2 * Nama File : PersegiPanjang.java
3 */
4
5 public class PersegiPanjang implements Bentuk2D
6 {
7 private float panjang = 0f;
8 private float lebar = 0f;
9
10 public PersegiPanjang(float p , float l )
11 {
12 this.panjang = p;
13 this.lebar = l;
14 }
15
16 public float getLuas()
17 {
18 return this.panjang * this.lebar;
19 }
20
21 public float getKeliling()
22 {
23 return 2f * ( this.panjang + this.lebar);
24 }
25
LP3T NurulFikri 66
Inhouse Training Java Fundamental
26 public String getNamaBentuk()
27 {
28 return "PersegiPanjang";
29 }
30
31 }
LP3T NurulFikri 67
Inhouse Training Java Fundamental
8 {
9 Lingkaran l = new Lingkaran(8f);
10 PersegiPanjang p = new PersegiPanjang( 7.2f, 4.5f);
11 BujurSangkar b = new BujurSangkar(5f);
12
13 // Array dari benda benda Bentuk2D
14 Bentuk2D[] benda2d = { l , p , b };
15
16 for (int i = 0 ; i < benda2d.length ; i++)
17 {
18 System.out.println( "Luas " +
benda2d[i].getNamaBentuk() + " : " + benda2d[i].getLuas());
19 }
20
21 }
22
23 }
LP3T NurulFikri 68
Inhouse Training Java Fundamental
9.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Pengertian collection
• Menggunakan class-class collection (List dan Map)
LP3T NurulFikri 69
Inhouse Training Java Fundamental
Contoh Program :
//Buat list
List list = new LinkedList();// Doublylinked list
list = new ArrayList(); // List implemented as growable array
// Memasukan sebuah elemen ke list
list.add("a");
// Memasukan sebuah element ke urutan pertama pada list
list.add(0, "b");
// Mengambil jumlah ukuran dari list
int size = list.size(); // 2
// Ambil element terakhir pada list
Object element = list.get(list.size()1); // a
// Ambil element 1 pada list
element = list.get(0); // b
// Remove element pada list yang berkesesuaian
boolean b = list.remove("b"); // true
b = list.remove("b"); // false
// Remove element pada index tertentu
element = list.remove(0); // a
String[] strArray = new String[] {"z", "a", "C"};
List list = Arrays.asList(strArray);
// Sort
Collections.sort(list); // C, a, z
// Caseinsensitive sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);//a,C,z
// Reverseorder sort
Collections.sort(list, Collections.reverseOrder());// z, a, C
// Copy semua element dari list2 ke list1 (list1 += list2)
// list1 adalah gabungan dari list1 and list2
list1.addAll(list2);
// Remove semua element pada list1 yang terdapat pada list2
// (list1 = list2)
list1.removeAll(list2)
// Ambil irisan element yang sama pada list1 dan list2 atau
// irisan list1 dan list2
list1.retainAll(list2)
// Remove semua element pada list
list1.clear();
LP3T NurulFikri 70
Inhouse Training Java Fundamental
Contoh Program :
// Create a hash table
Map map = new HashMap(); // hash table
map = new TreeMap(); // sorted map
// Menambahkan pasangan key/value ke map
map.put("a", new Integer(1));
map.put("b", new Integer(2));
map.put("c", new Integer(3));
// ambil jumlah entry pada map
int size = map.size(); // 2
// Menambahkan sebuah entry pada key yang telah ada pada map
map.put("a", new Integer(9)); // 1
// Remove sebuah entry dari map yang memiliki key
map.remove("c"); // 3
Map map = new LinkedHashMap();
// Add some elements
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
map.put("2", "value4");
// List the entries
for (Iterator it=map.keySet().iterator(); it.hasNext(); ) {
Object key = it.next();
Object value = map.get(key);
}
// [1=value1, 2=value4, 3=value3]
LP3T NurulFikri 71
Inhouse Training Java Fundamental
Bab 10 Exception
Exception
10.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Pengertian exception
• Menggunakan keyword try, catch dan finally
• menghandel exception dalam suatu program
Ketika di compile tidak ada masalah dengan kode program diatas, namun ketika program
di jalankan akan muncul Exception, seperti dibawah ini :
$ java HelloWorld
LP3T NurulFikri 72
Inhouse Training Java Fundamental
Hallo Dunia
Maksud saya
Hallo Semua !!
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at HelloWorld.main(HelloWorld.java:14)
// kodekode yang mengakibatkan Exception
} catch (Tipe_Exception parameter_Exception
Bisa saja terjadi blok catch berkali-kali (multiple catch), dimana setiap block catch
menghandal exception yang berbeda-beda.
Contoh :
Pada kode program sebelumnya error terjadi ketika mengakses variabel hello[] yang
bertipe array pada saat looping dengan while dijalankan. Berikut penggunaan Exception untuk
meng-handle Kesalahan yang terjadi:
1 public class HelloWorld {
2
3 public static void main (String args[]) {
4
5 int i = 0;
6 String hello[] = {
7 "Hallo Dunia",
8 "Maksud saya",
9 "Hallo Semua !! "
10 };
11
12 while (i < 4) {
13 try {
14 System.out.println(hello[i]);
15
16 } catch (ArrayIndexOutOfBoundsException e)
17 { System.out.println("Error ... pada nilai i"); }
18
19 i++;
20
21 } // tutup dari while
22 }
23 }
LP3T NurulFikri 73
Inhouse Training Java Fundamental
LP3T NurulFikri 74
Inhouse Training Java Fundamental
VirtualMachineError
OutOfMemoryError StackOverFlowError
Error
AWTError
AritmaticException
RunTimeException NullPointerException
IndexOutOfBounds
Throwable Exception
Exception
EOFExcption
IOException
FileNotFoundException
LP3T NurulFikri 75
Inhouse Training Java Fundamental
16 }
17 }
Dari program client-server, misalkan user (client) untuk koneksi ke server diperlukan
hanya dalam waktu 5 detik. Jika dalam waktu tersebut server tidak merespon, kode yang kita
buat dapat melempar (throw) sebuah exception (misalnya exception SeverTimeOutException)
yang telah kita buat. Berikut contoh kode program bagaimana melempar (throw) sebuah
exception.
public void connectMe(String serverName) throws ServerTimedOutException
{
int success;
int portToConnect = 80;
success = open(serverName, portToConnect);
if (success == 1) {
throw new ServerTimedOutException ("Could not connect", 80);
}
}
Kemudian untuk menangkap exception yang telah kita buat. Kita gunakan keyword try .
Public void findServer() {
. . .
try {
connectMe(defaultServer);
} catch (ServerTimedOutException e) {
System.out.println("Server time out, try alternative");
try {
connectMe(alternateServer);
} catch (ServerTimedOutException e1) {
System.out.println("No server curremtly available");
}
}
. .
LP3T NurulFikri 76
Inhouse Training Java Fundamental
$]javac Excep02.java
Excep02.java:5: unreported exception java.lang.InterruptedException;
must be caught or declared to be thrown
obj.myMethod();
^
Error sekarang terjadi di main method , Error harus dihandle dengan try - catch
1 // File Excep03.java
2 import java.lang.Thread;
3
4 class Excep03{
5 public static void main(String[] args){
6 Excep03 obj = new Excep03();
7 try{ //begin try block
8 obj.myMethod();
9 }catch(InterruptedException e){
10 System.out.println("Handle exception here");
11 }//end catch block
12 }//end main
13 void myMethod()
14 throws InterruptedException{
15 Thread.currentThread().sleep(1000);
16 }//end myMethod
17 }//end class Excep03
LP3T NurulFikri 77
Inhouse Training Java Fundamental
11.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• GUI di Java
• Menggunakan Abstract Windowing Toolkit (AWT)
• Difinisi Container
• Komponen-komponen AWT
• Macam-macam Layout Manager
11.3 Cointainer
Ada dua tipe container : Window dan Panel
11.3.1 Window :
Windowwindow adalah object dari java.awt.Window, ada dua tipe window : Frame dan Dialog
➔ Frame
Frame adalah subclass dari Window. Frame adalah window dengan sebuah title dan kotak
resize. Frame adalah turunan dari java.awt.Container sehingga dapat diletakan komponen
komponen didalamnya dengan menggunakan method add(). Layout Frame dapat diubah dengan
menggunakan method setLayout().
Contoh :
//Nama File : MyFrame.java
import java.awt.*;
LP3T NurulFikri 78
Inhouse Training Java Fundamental
public class MyFrame extends Frame {
public static void main (String args[]) {
MyFrame fr = new MyFrame("Hello saya Sekarang di LPK NF !");
fr.setSize(500,500);
fr.setBackground(Color.blue);
fr.setVisible(true);
}
public MyFrame (String str) {
super(str);
}
}
Catatan : Frame harus di set visible dan size harus didefinisikan terlebih dahulu sebelum Frame
ditampilkan.
11.3.2 Panel
Panel seperti Frame, menyediakan lokasi untuk semua komponen GUI termasuk panel lain. Setiap
panel mempunyai layout masingmasing.
Ketika suatu Panel dibuat, Panel harus di letakan dalam object Window atau object Frame agar
dapat dimunculkan dalam layar.
Contoh :
//Nama File : MyFrame.java
import java.awt.*;
public class FrameWithPanel extends Frame {
public FrameWithPanel (String str) {
super (str);
}
public static void main (String args[]) {
FrameWithPanel fr = new FrameWithPanel("Frame dengan Panel");
Panel pan = new Panel();
fr.setSize(300,300);
fr.setBackground(Color.blue);
fr.setLayout(null); // Override default dari layout manager
pan.setSize(100,100);
pan.setBackground(Color.yellow);
fr.add(pan);
fr.setVisible(true);
}
LP3T NurulFikri 79
Inhouse Training Java Fundamental
Gambar 11.1 Frame dengan Panel
11.4.1 FlowLayout
FlowLayout digunakan untuk meletakan Komponen per baris, setiap baris ditambah dengan
Komponen maka akan dibuat baris baru.
Contoh :
//Nama File : Flowku.java
import java.awt.*;
public class Flowku {
private Frame f;
private Button button1, button2, button3;
public static void main (String args[]) {
Flowku flowit = new Flowku();
flowit.tampil();
}
public void tampil() {
f = new Frame("Flow Layout");
f.setLayout(new FlowLayout());
button1 = new Button("Ok");
button2 = new Button("Open");
button3 = new Button("Close");
f.add(button1);
f.add(button2);
f.add(button3);
LP3T NurulFikri 80
Inhouse Training Java Fundamental
f.setSize(100,100);
f.setVisible(true);
}
}
Tampilan hasilnya :
Setelah User resize Frame
Gambar 11.2. Form Layout
Border Layout manager digunakan untuk melayout elemenelemen yang bisa dilebarkan (stretch)
kesemua arah ketika user resize Frame.
Contoh :
//Nama File : Flowku.java
import java.awt.*;
public class Borderku {
private Frame f;
private Button bn, bs, bw, be, bc;
public static void main (String args[]) {
Borderku borderit = new Borderku();
borderit.tampil();
}
public void tampil() {
f = new Frame("Flow Layout");
bn = new Button("B1");
bs = new Button("B2");
bw = new Button("B3");
be = new Button("B4");
bc = new Button("B5");
f.add(bn, BorderLayout.NORTH);
f.add(bs, BorderLayout.SOUTH);
f.add(bw, BorderLayout.EAST);
f.add(be, BorderLayout.WEST);
f.add(bc, BorderLayout.CENTER);
f.setSize(200,200);
f.setVisible(true);
LP3T NurulFikri 81
Inhouse Training Java Fundamental
}
}
Hasil Tampilan :
Setelah User resize Frame
Gambar 11.3 : Border Layout
Grid Layout menyediakan fleksibilatas untuk menempatkan komponenkomponen didalamnya.
Perhatikan contoh GridLayout (3,2) yang membuat 6 cell didalamnya.
Contoh :
//Nama File : Flowku.java
import java.awt.*;
public class Gridku {
private Frame f;
private Button b1, b2, b3, b4, b5, b6;
public static void main (String args[]) {
Gridku gridit = new Gridku();
gridit.tampil();
}
public void tampil() {
f = new Frame("Grid Layout");
f.setLayout (new GridLayout(3,2));
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("3");
b4 = new Button("4");
b5 = new Button("5");
b6 = new Button("6");
f.add(b1);
f.add(b2);
f.add(b3);
LP3T NurulFikri 82
Inhouse Training Java Fundamental
f.add(b4);
f.add(b5);
f.add(b6);
f.pack();
f.setVisible(true);
}
}
Hasil Tampilan :
Gambar 11: 4 Grid Layout
Contoh :
//Nama File : Layoutku.java
import java.awt.*;
public class Layoutku {
private Frame f;
private Panel p;
private Button bw, bc;
private Button bfile, bhelp;
public static void main (String args[]) {
Layoutku layoutit = new Layoutku();
layoutit.tampil();
}
public void tampil() {
LP3T NurulFikri 83
Inhouse Training Java Fundamental
f = new Frame("Aneka Layout");
bw = new Button("Kiri");
bc = new Button("Area Kerja");
f.add(bw, BorderLayout.WEST);
f.add(bc, BorderLayout.CENTER);
p = new Panel();
bfile = new Button("File");
bhelp = new Button("Help");
p.add(bfile);
p.add(bhelp);
f.add(p, BorderLayout.NORTH);
f.pack();
f.setVisible(true);
}
}
Hasil Tampilan :
Gambar 11.5 : Aneka Layout
LP3T NurulFikri 84
Inhouse Training Java Fundamental
12.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Definisi Event
• Event Handler
• GUI behaviour
Event Handler adalah sebuah method yang menerima sebuah event dari object, menguraikan dan
memproses dari aksi yang dilakukan oleh user terhadap suatu interface.
}
Gambar 12.1 : Event Handler
Pada model diatas, digambarkan eventevent akan mengirimkan kepada komponen dimana event itu
berasal, tetapi tergantung pada tiap komponen untuk meregistrasi satu atau lebih class, yang
dinamakan listener, dimana terdapat event handler yang dapat menerima dan memproses event.
Dalam hal ini event handler dapat berupa object yang terpisah dari komponen.
LP3T NurulFikri 85
Inhouse Training Java Fundamental
Listeners adalah classclass yang mengimplementasikan Listener interface.
Eventevent adalah objectobject yang hanya melaporkan ke listener untuk di registrasi. Setiap event
berhubungan dengan listener interface yang mempunyai tugas untuk mendefinisikan method mana
yang sesuai dengan tipe dari event.
Contoh penggunanaan Event Handler :
//Nama File : TestButton.java
import java.awt.*;
import java.awt.event.*;
public class TestButton {
public static void main (String args[]){
Frame f = new Frame("Testing..");
Button b = new Button("Tekan Saya!");
b.addActionListener(new ButtonHandler());
f.add(b,"Center");
f.pack();
f.setVisible(true);
}
}
public class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Aksi Terjadi");
System.out.println("Label Button : " + e.getActionCommand());
}
}
Hasil Tampilan :
$ java TestButton
Gambar 12.2 Event Pertama
Ketika button ditekan akan muncul dalam prompt :
Aksi Terjadi
Label Button : Tekan Saya!
Penjelasan :
➢ Class Button mempunyai sebuah method addActionListener(ActionListener)
➢ Interface ActionListener mendefinisikan satu method, actionPerformed, yang akan menerima
sebuah actionEvent.
➢ Ketika sebuah object button diciptakan, object tersebut dapat meregistrasi listener untuk
ActionEvent actionEvent melalui method ActionListener.
➢ Ketika object button di click dengan mouse, sebuah ActionEvent di kirim. ActionEvent menerima
melalui method actionPerformed() dari tiap actionListener yang meregistrasi melalui method
addActionListener().
➢ Method getActionCommand() dari class ActionEvent akan mengembalikan perintah yang
terhubung dengan aksi ini. Misalnya, Ketika Button di click akan mengembalikan nama label dari
button.
LP3T NurulFikri 86
Inhouse Training Java Fundamental
Pada saat kita menggunakan mouse event, berarti interface MouseListener harus kita
implementasikan. Seluruh method yang ada di dalam interface harus di panggil termasuk
mouseEntered, mouseExited, mousePressed, mouseReleased dan mouseClicked.
LP3T NurulFikri 87
Inhouse Training Java Fundamental
Contoh :
//Nama File : ContohEvent.java
import java.awt.*;
import java.awt.event.*;
public class ContohEvent implements
MouseMotionListener, MouseListener {
private Frame f;
private TextField tf;
public static void main (String args[]) {
ContohEvent eve = new ContohEvent();
eve.tampil();
}
public void tampil() {
f = new Frame("Contoh Penggunaan Event ...");
f.add (new Label ("Click and Drag Mousenya"),BorderLayout.NORTH);
tf = new TextField(30);
f.add(tf,BorderLayout.SOUTH);
f.addMouseMotionListener(this);
f.addMouseListener(this);
f.setSize(300, 200);
f.setVisible(true);
}
// Event MouseMotionListener
public void mouseDragged (MouseEvent e) {
String s = "Mouse Digerakan ke Posisi : X = " + e.getX() + " Y = " +
e.getY();
tf.setText(s);
}
public void mouseMoved(MouseEvent e) { }
// Event MouseListener
public void mouseClicked(MouseEvent e) { }
public void mouseEntered (MouseEvent e) {
String s = "Mouse di tekan";
tf.setText (s);
}
public void mouseExited (MouseEvent e) {
String s = "Mouse telah meninggalkan Ruangan ini ";
tf.setText (s);
}
public void mousePressed (MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
LP3T NurulFikri 88
Inhouse Training Java Fundamental
Pemrograman Bahasa Java menyediakan class adapter yang mengimplementasikan setiap isi dari
interface lebih dari satu method.
Contoh program sebelumnya, yaitu ketika kita menggunakan interface dari MouseListener, adalah
sangat tidak nyaman pada saat kita hanya membutuhkan satu method dari interface MouseListener
kita harus memanggil seluruh method yang ada.
Dengan class Adapter anda dapat mengoveride methodmethod yang diinginkan.
Contoh :
import java.awt.*;
import java.awt.event.*;
public class MouseClickedHandler extends MouseAdapter {
// yang dibutuhkan hanya mouseClicked handler
//Karenanya kita menggunakan Adapter untuk mengabaikan
//Semua method dari event Handler
public void MouseClicked(MouseEvent e) {
// Kode untuk melakukan sesuatu ketka mouse di click
}
}
LP3T NurulFikri 89
Inhouse Training Java Fundamental
13.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Komponen-Komponen AWT
• Cara Menggunakan Komponen-Komponen AWT
13.2 Button
Sebelumnya anda sudah berkenalan dengan komponen Button. Button adalah interface dasar
dimana akan aktif ketika di tekan. Label pada Button berupa text yang langsung bisa di tampilkan
pada saat komponen Button diciptakan.
Button b = new Button("OK Dech");
b.setActionCommand("Action Command Was here");
b.addActionListener(this);
add(b);
Method ActionPerformed() adalah method dari suatu class yang mengimplementasikan interface
ActionListener , yang meregistrasi listener, dan akan dipanggil ketika button di tekan dengan
mengclik mouse.
public void actionPerformed(ActionEvent ae) {
System.out.println("Button press received");
System.out.println("Button's action command is :" +
ae.getActionCommand());
}
13.3 Checkbox
Komponen Checkbox menyediakan perintah sederhana "on/off" dengan text label disampingnya.
Frame f = new Frame("Checkbox");
Checkbox satu = new Checkbox("Satu", true);
Checkbox dua = new Checkbox("Dua", true);
Checkbox tiga = new Checkbox("Tiga", true);
satu.addItemListener(this);
dua.addItemListener(this);
tiga.addItemListener(this);
f.add(satu);
f.add(dua);
f.add(tiga);
Pemilihan (mengisi ) dari object checkbox akan dikirim ke interface ItemListener. ItemEvent akan
diberi method getStateChange(), yang akan mengembalikan ItemEvent.SELECTED atau
ItemEvent.DESELECTED. Method getItem() akan mengembalikan chekbox yang aktif dalam bentuk
LP3T NurulFikri 90
Inhouse Training Java Fundamental
text label dari checkbox tersebut
class Handler implements ItemListener {
public void itemStateChanged(ItemEvent ev) {
String pilih = "tidak";
if (ev.getStateChange() == ItemEvent.SELECTED) {
pilih = "ya";
}
System.out.println(ev.getItem() + " " + pilih);
}
}
Checkbox Group adalah Kumpulan dari checkbox yang dapat dipilih secara bersamaan, ketika
suatui checkbox dipilih akan mengembalikan nilai true. Checkbox Group akan menampilkan sipat
yang sama dengan Radio Button.
Frame f = new Frame("Checkbox Group");
CheckboxGroup cbg = new CheckboxGroup();
Checkbox satu = new Checkbox("One", false, cbg);
Checkbox dua = new Checkbox("Two", false, cbg);
Checkbox tiga = new Checkbox("Three", true), cbg;
one.addItemListener(this);
two.addItemListener(this);
three.addItemListener(this);
f.add(satu);
f.add(dua);
f.add(tiga);
13.5 Choice
Komponen Choice menyediakan pilihan dari suatu list item, atau biasa kita menyebut sebagai
ComboBox
Frame f = new Frame("Choice");
Choice c = new Choice();
c.add("Agus");
c.add("Henry");
c.add("Henry");
c.addItemListener(this);
f.add(c);
Hasil Tampilan :
LP3T NurulFikri 91
Inhouse Training Java Fundamental
Gambar 13.1 : Komponen AWT
13.6 Canvas
Canvas adalah komponen dari AWT yang menyediakan ruang kosong dengan warna background.
Ruang kosong dapat digunakan untuk menggambar, menulis text dan menerima inputan dari
keyboard atau mouse.
Frame f = new Frame("Canvas");
Canvas cv = new Canvas();
Color warna = new Color(200,0,0);
cv.setBackground(warna);
f.add(cv , BordeLayout.CENTER);
13.7 Label
Object Label akan ditampilkan di layar sebagai satu baris text yang statis. User dapat mengubah text
dari Label Melalui program.
Label lbl = new Label("Selamat Belajar Java");
add(lbl);
13.8 TextField
Text Field adalah barisan dari text yang dapat diinput langsung.
TextField tf = new TextField("Satu Baris Kata", 30);
tf.addActionListener(this);
add(tf)
ActionListener dapat diaktifkan melalui method actionPerformed() ketika di tekan enter pada
keyboard. Dengan menggunakan TextListener yang menerima input tertentu dari keyboard, method
textValueChanged(TextEvent) dapat digunakan.
13.9 TextArea
TextArea adalah komponen dengan banyak baris text (multiple column text). TextArea bisa di set
hanya untuk dibaca (readonly) dengan menggunakan method setEditable(boolean). TextArea akan
LP3T NurulFikri 92
Inhouse Training Java Fundamental
di tampilkan dalam layar dengan horizontal dan vertical scrollbar.
TextArea ta = new TextArea("Hello Semua ", 4 , 30);
ta.addTextListener(this);
add(t);
AddTextListener akan menerima pesan pada saat menekan keyboard sama seperti dengan
TextField.
13.10 List
List menyediakan pilihan text yang semuanya ditampilkan dalam layar.
List lt = new List(4, true);
lt.add("Agus");
lt.add("Henry");
lt.add("Mas Yan");
lt.add("Rojul");
Argumen angka digunakan untuk mendefinisikan tinggi dari list.
13.11 Dialog
Komponen Dialog berhubungan dengan Frame. Dialog adalah window yang berdiri sendir dengan
beberapa dekorasi item didalamnya.
Dialog d = new Dialog(f, "Dialog", false);
d.add(new Label("Hallo, Saya adalah Dialog", BorderLayout.CENTER));
d.pack();
Dialog biasanya dalam modus yang tidak ditampilkan ketika user membuat Dialog, Jika ingin
menampilkan dialog user harus menekan suatu interface, misalnya sebuah button.
Public void actionPerformed(ActionEvent ev) {
d.setVisible(true);
}
FileDialog df = new FileDialog(parentFrame, "FileDialog");
df.setVisible(true);
String NamaFile = df.getFile();
13.13 ScrollPane
ScrollPane tidak dapat berdiri sendiri, ScrollPane harus terhubung dengan dengan container lain
(Frame). ScrollPane akan membuat tampilan yang memunculkan scrollbar yang dapat di manipulasi.
LP3T NurulFikri 93
Inhouse Training Java Fundamental
Frame f = new Frame("ScrollPane");
Panel p = new Panel();
ScrollPane sp = new ScrollPane();
p.setLayout(new GridLayout(3,4));
sp.add(p);
f.add(sp, "Center");
f.setSize(200,200);
f.setVisible(true);
13.14 Menu
Komponen menu menyediakan tampilan menu pulldown.
MenuBar mb = new MenuBar();
menu m1 = new Menu("File");
menu m2 = new Menu("Edit");
menu m3 = new Menu("Help");
mb.add(m1);
mb.add(m2);
mb.setHelpMenu(m3);
f.setMenuBar(mb);
Menu m1 = new Menu("File");
MenuItem mi1 = new MenuItem("New");
MenuItem mi2 = new MenuItem("Open");
MenuItem mi3 = new MenuItem("Save");
MenuItem mi4 = new MenuItem("Exit");
mi1.addActionListener(this);
mi2.addActionListener(this);
mi3.addActionListener(this);
m1.add(mi1);
m1.add(mi2);
m1.add(mi3);
m1.addSeparator();
m1.add(mi4);
LP3T NurulFikri 94
Inhouse Training Java Fundamental
Gambar 13.3 : Menu di AWT
13.16 CheckboxMenuItem
CheckboxMenuItem adalah untuk menandakan suatu item dari menu dipilih.
Menu m2 = new Menu("Window");
MenuItem mi1 = new MenuItem("Gambar1");
CheckboxMenuItem mi2 = new CheckboxMenuItem("Gambar2");
mi1.addActionListener(this);
mi2.addActionListener(this);
m2.add(mi1);
m2.add(mi2);
LP3T NurulFikri 95
Inhouse Training Java Fundamental
14.1 Tujuan
JFC adalah kelanjutan dari AWT. JFC dikembangkan dengan menambahkan beberapa library class
grafik yang portable. JFC diperkenalkan pertama kali tahun 1997, Kata Swing diambil dari kode
project dalam pengembangan komponenkomponen GUI oleh JFC.
Swing menyediakan komponenkomponen dasar GUI dari button hingga tabel, Swing juga
mensupport Look and Feel pada komponenkomponen dasar GUI.
Package untuk Swing
Packagepackage standar yang menggunakan dalam membuat program dengan Swing adalah:
• Swing
• Pluggable LookandFeel ( PLAF)
• DragandDrop
• Accessibility
• 2D graphics
Sebagian ClassClass Swing diawali dengan huruf J, berikut tabel komponen Swing
AWT Swing
Button JButton
Label JLabel
Choice JComboBox
List JList
CheckBox JcheckBox,JradioButton
Text Field JTextField
LP3T NurulFikri 96
Inhouse Training Java Fundamental
AWT Swing
TextArea JTextArea
Applet JApplet
Panel JPanel
Frame JFrame
Menu JMenu
Class Swing lainnya adalah Jtree, JTabbedPane, JPasswordField, JProgressBar, JTable, JToolTip,
JToolBar dan Timer.
Untuk menggunakan classclass Swing cukup dengan menuliskan kode berikut
import java.swing.*;
Gambar 14.1 : Hirarki Swing
Kode program dengan AWT untuk menambahkan button
Frame awtFrame = new Frame(“AWT Frame”);
Button button1 = new Button(“AWT Button”);
awtFrame.add(button1);
awtFrame.setVisible(true);
LP3T NurulFikri 97
Inhouse Training Java Fundamental
awtFrame.setSize(200,200);
Hal yang sama dengan menggunakan Swing
JFrame swingFrame = new JFrame(“Swing Frame”);
JButton button1 = new JButton(“Swing Button”);
swingFrame.getContentPane().add(button1);
swingFrame.setVisible(true);
swingFrame.setSize(200,200);
Jenis border komponen
• Line border
JButton button1 = new JButton(“Swing Button”);
Border lineBorder = BorderFactory.createLineBorder(Color.Black, 3);
button1.setBorder(lineBorder);
Gambar 14.2 : Swing Pertama
Class Color berada di package java.awt.
• Etched border
JButton button1 = new JButton(“Swing Button”);
Border etcedBorder = BorderFactory.createEtchedBorder();
button1.setBorder(etchedBorder);
Gambar 14.3 : Swing Button
• Bevel border
JButton button1 = new JButton(“Swing Button”);
Border bevelBorder =
BorderFactory.createBevelBorder(BevelBorder.RAISED);
button1.setBorder(bevelBorder);
LP3T NurulFikri 98
Inhouse Training Java Fundamental
Gambar 14.4: Bevel Border
Sebuah shortcut key (mnemonic) adalah karakter yang digaris bawahi pada sebuah komponen
label, menu atau button. Kita bisa menentukan karakter shortcut dengan mengkombinasikan
penekanan tombol keyboard Alt dengan Character pilihan anda. Gunakan method setMnemonic()
untuk membuat shortcut pada komponen.
Contoh :
Jbutton button = new Jbutton(“Next”);
button.setMnemonic('N');
Gambar 14.5: ShortCut Key
Dengan tabbed panes, kita bisa membuat banyak panel yang bisa ditampilkan dalam satu area.
Dalam tabbed panes terkandung kumpulan dari tab. Dengan tab kita bisa mengelompokkan
informasi dalam satu area, class dari java swing yang digunakan untuk membuat tabbed panes
adalah JTabbedPanes
Gambar 14.6: Tabbed Pane
Berikut kode program membuat tabbed pane
// Nama File SwingApp
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
public class SwingApp
{
LP3T NurulFikri 99
Inhouse Training Java Fundamental
public static void main (String args[])
{
JFrame frame;
// membuat Frame
frame = new JFrame("Menggunakan Tabbed Pane");
// membuat tabbed pane
JTabbedPane tabbedPane = new JTabbedPane();
// Menambahkan tab ke tabbed pane
JPanel officialPanel = new JPanel();
tabbedPane.addTab("Official",null,officialPanel,"Official Info");
// Menambahkan button ke tab pada tabbed pane
JButton btn1 = new JButton("Panel Pertama");
officialPanel.add(btn1);
JPanel personelPanel = new JPanel();
tabbedPane.addTab("Personal",null,personelPanel,"Personal Info");
personelPanel.add(new JButton("Panel Kedua"));
// Menambahkan tabbed pane ke Frame
frame.getContentPane().add(tabbedPane);
frame.show();
frame.setSize(200,200);
}
}
Langkahlangkah membuat menu dengan Swing
1. Buat object JMenuBar
2. Gunakan method add() pada frame untuk menambahkan menu bar pada frame
3. Buat object JMenu untuk setiap menu yang kita ingin buat
4. Gunakan method add() pada JmenuBar untuk menambahkan setiap object menu ke menu bar
5. Buat objectobject JmenuItem, JCheckboxMenuItem atau JRadioButtonMenuItem untuk setiap
item sub menu
6. Gunakan method add() pada Menu untuk menambkan setiap menu item ke object menu yang
sesuai.
/**
* File: MyMenu.java
**/
import javax.swing.*;
public class MyMenu
{
public static void main (String args[])
{
//Buat Frame dan MenuBar
JFrame frame;
JMenuBar menuBar;
frame = new JFrame("Frame with a Menu");
menuBar = new JMenuBar();
//Menambkan menubar ke frame
frame.setJMenuBar(menuBar);
//Buat menu File dan menu Edit
JMenu mFile,mEdit;
mFile = new JMenu("File");
mEdit = new JMenu("Edit");
menuBar.add(mFile);
menuBar.add(mEdit);
//Buat menuitem New dan Close ke menu File
JMenuItem mNew,mClose,mCopy,mPaste;
mNew = new JMenu("New");
mClose = new JMenu("Close");
mCopy = new JMenu("Copy");
mPaste = new JMenu("Paste");
mFile.add(mNew);
mFile.add(mClose);
mEdit.add(mCopy);
mEdit.add(mPaste);
// Buat menu close agar disabled
mClose.setEnabled(false);
// Create Print checkbox, followed by separator
JCheckBoxMenuItem mPrint;
mPrint = new JCheckBoxMenuItem("Print");
mFile.add(mPrint);
mFile.addSeparator();
// Create Font sub menu
JMenu mFont;
mFont = new JMenu("Font");
mFile.add(mFont);
mFont.add("Arial");
mFont.add("Times New Roman");
//Resize frame
frame.setSize(400,400);
frame.setVisible(true);
}
}
Output yang dihasilkan :
Gambar 14.7: Menu Pada Frame
Layout manager saat ini masih menggunakan classclass layout dari AWT, Swing memungkinkan
menggunakan BoxLayout untuk mengatur tata letak komponen swing dalam sebuah container.
/**
* File : Box.java
**/
import java.awt.*;
import javax.swing.*;
public class Box
{
public static void main (String args[])
{
JFrame frame = new JFrame("Box Layout");
JPanel panel = new JPanel();
BoxLayout boxLayout = new BoxLayout(panel,BoxLayout.Y_AXIS);
panel.setLayout(boxLayout);
JButton OK = new JButton("OK");
JButton Cancel = new JButton("Cancel");
frame.setVisible(true);
frame.setSize(200,200);
frame.getContentPane().add(panel,BorderLayout.CENTER);
panel.add(new JLabel("Ini"));
panel.add(new JLabel("Adalah"));
panel.add(new JLabel("Box Layout"));
panel.add(OK);
panel.add(Cancel);
}
Gambar 14.8: Box Layout
Menggunakan event di Swing adalah hampir sama dengan AWT ( bisa dilihat di BAB XII), yaitu
menggunakan package java.awt.event
Berikut kode program dengan hasil output yang sama, seperti pada BAB XII
//Nama File : TestButton.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestButton {
public TestButton()
{
JFrame f = new JFrame("Testing..");
JButton b = new JButton("Tekan Saya!");
b.addActionListener(new ButtonHandler());
f.getContentPane().add(b,"Center");
f.pack();
f.setVisible(true);
}
public static void main (String args[])
{
TestButton t = new TestButton();
}
public class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Aksi Terjadi");
System.out.println("Label Button : " + e.getActionCommand());
}
}
}
15.1 Tujuan
Setiap program aplikasi pasti akan mengalami proses input dari user dan tentu saja output yang di
hasilkan. Karena setiap bahasa pemrograman menyediakan operasi input dan output. Java
menyediakan package java.io untuk operasi input dan output.
Bentuk input dan ouput dalam Java adalah berupa Stream. Stream adalah sebuah barisan /
kumpulan dari byte data yang bergerak dari sumber menuju tujuan melewati suatu jalur, bisa
dibayangkan stream adalah seperti air yang mengalir dalam suatu pipa.
Jika sebuah program menulis ke sebuah stream, maka stream tersebut adalah stream sumber.
Sebaliknya jika program membaca sebuah stream, stream tersebut adalah stream tujuan. Stream
inilah yang digunakan dalam proses operasi input dan output.
Class utama stream dalam package java.io adalah InputStream dan OutputStream. Dua kelas
abstract ini menyediakan berbagai fasilitas input dan output, dimana InputSteam adalah fondasi dari
classclass input dan OutputStream adalah fondasi dari classclass output.
Gambar 15.1 : Hirarki Class InputStream
Gambar 15.2 : Hirarki Class OutputStream
Dalam JDK 1.1 diperkenalkan class Reader dan Writer untuk proses Input Output (I/O). Class ini
mensupport internationalization ( Suatu proses design program yang bisa mengadaptasi berbagai
macam bahasa)
Gambar 15.3 : Hirarki Class Reader
Gambar 15.4: Hirarki Class Writer
Berikut beberapa method pada class InputStream
Method Penjelasan
int read() Baca sebuah byte data dari input stream
int read(byte[] b) Baca kumpulan byte data dari input stream dan simpan dalam
sebuah array
int read(byte[] b, int off, int len) Baca sejumlah byte data sesuai argumen ke 3 dari input stream
dan simpan dalam sebuah array. Argumen ke 2 berisi posisi
awal untuk membaca byte data
int available() Mengembalikan sejumlah byte yang tersedia dari selama
membaca dari input stream
void close() Tutup sebuah input stream dan membebaskan semua resources
yang berhubungan dengan input stream tersebut
Berikut beberapa method pada class OutputStream
Method Penjelasan
void write ( int a) Tulis sebuah byte data tertentu ke output stream
void write (byte[] b) Tulis sebuah array byte data ke output stream
void write(byte[] b, int off, int len) Tulis sebagian dari array byte data ke output stream
void flush( ) Paksa menulis ketika data telah terkumpul di ouput stream
void close( ) Tutup output stream, semua data yang terdapat dalam output
stream di simpan
Class Stream ini digunakan untuk membaca dan menulis data yang terdapat dalam media
penyimpanan, data dibaca / ditulis sebagai node stream.
Contoh :
FileInputStream inputFile = new FileInputStream(“pegawai.txt”);
FileOutputStream outputFile = new FileOutputStream(“phonebook.dat”);
Class BufferedInputStream menciptakan dan mengatur sebuah buffer untuk sebuah input stream,
Class ini digunakan untuk meningkatkan efisiensi proses input, hal ini dilakukan ketika membaca
data dari stream setiap byte pada suatu waktu. BufferedInputStream menciptakan dan mengatur
sebuah buffer untuk sebuah output stream.
Class Stream ini berfungsi untuk melakukan filter pada stream, sehingga memungkinkan untuk
membaca dan menulis tipe data primitif.
DataInputStream menyediakan kemampuan untuk membaca tipe data primitif dari input stream.
Berikut beberapa method pada class DataInputStream
Method Penjelasan
boolean readBoolean( ) membaca satu byte dan mengembalikan nilai true jika byte
bukan nol dan false jika 0
byte readByte( ) membaca sebuah byte sebagai 8bit signedvalue
char readChar() membaca sebuah character
int readInt( ) Membaca sebuah nilai integer
Berikut beberapa method pada class DataOutputStream
Method Penjelasan
void writeChar ( int v ) Menulis sebuah character ke output stream
void writeLong ( long v ) Menulis sebuah long integer ke ouput stream
void writeInt ( int v ) Menulis sebuah integer ke output stream
Class Stream ini memungkinkan menulis dan membaca sebuah array byte data.
Method Penjelasan
ByteArrayInputStream (byte[] Membuat sebuah input stream dari sebuah array byte data
bytes)
int size() Mengembalikan total angka dari data byte yang di tulis ke
sebuah stream
Class Reader dan Writer adalah abstract class yang mensupport membaca dan menulis stream
character unicode. Unicode digunakan untuk mewakili data dari tiap karakter 16 bit.
Subclass class Writer dan Reader yang terpenting adalah InputStreamReader dan
OutputStreamWriter, Class ini digunakan sebagai interface antara data byte stream dan character
untuk dibaca dan ditulis.
Berikut contoh kode program input lewat keyboard :
/**
* Nama File : IOApp.java
**/
import java.lang.*;
import java.io.*;
public class IOApp
{
public static void main (String args[]) throws IOException
{
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
String readString ;
do
{
System.out.print("\n Input Sesuatu : ");
System.out.flush();
readString = br.readLine();
System.out.println("Hello User > inikah yang anda ketikan ");
System.out.println(" > " + readString);
} while (readString.length() != 0);
}
}
Method readLine() pada class BufferedReader berfungsi membaca inputan dari keyboard.
Output Program :
Gambar 15.5: Aplikasi Input
Java mensupport operasi input dan output berbasis Stream pada File. Class yang disediakan
diantaranya class File, FileDescriptor, FileInputStream, FileOutputStream, RandomAccesFile,
FileReader dan FileReader.
Class File digunakan untuk mengakses objek file dan objek direktori, dan mempunyai method
method untuk memanipulasi file. Class FileDescriptor membantu system untuk melihat apakah suatu
file sedang diakses. Sedangkan class FileInputStream dan FileOutputStream menyediakan
kemampuan untuk membaca dan menulis dari stream file.
Berikut contoh program untuk membaca dan menulis pada file.
// Nama File IOFile.java
import java.lang.*;
import java.io.*;
public class IOFile
{
public static void main (String args[]) throws IOException
{
FileOutputStream fos = new FileOutputStream("IOFile.txt");
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader bs = new BufferedReader(is);
String ioString;
System.out.print("\n Please enter Something : ");
System.out.flush();
ioString = bs.readLine();
for (int i = 0 ; i < ioString.length(); i++)
fos.write(ioString.charAt(i));
fos.close();
FileInputStream fis = new FileInputStream("IOFile.txt");
int numberOfBytes = fis.available();
System.out.println("No. of bytes present : " + numberOfBytes);
byte inBuff[] = new byte [numberOfBytes];
int readByte = fis.read(inBuff, 0 , numberOfBytes);
System.out.println("No. of bytes read : " + readByte);
System.out.println(" Your Write : " + new String (inBuff));
fis.close();
System.out.println("\n Deleting ....");
File testFile = new File("IOFile.txt");
testFile.delete();
}
}
Pada program diatas, Input dari konsole / command prompt akan ditulis ke file IOFile.txt. Program
juga akan menampilkan isi dari File, dan kemudian menghapus file.
Output Program :
Gambar 15.6: Output File
15.7 Serialization
Ketika kita membuat sebuah file melalui text editor, dimungkinkan untuk menyimpan sebuah text
pada file tersebut. Text yang kita tulis dan tersimpan pada file adalah sesungguhnya sebuah
informasi / data yang di bungkus (encapsulasi) didalam sebuah object file. Kemampuan sebuah
object untuk tetap ada (exist) diantara jalannya / dieksekusinya sebuah program yang membuat
object tersebut dinamakan persistence
Pada diskripsi diatas object file tetap ada meskipun program editor telah ditutup. Agar object file
persisten kita harus menyimpan file tersebut, proses simpan object file disebut serialization.
Serialization adalah kunci dari persistence, dimana dengan serialization kita dapat menulis dan
membaca sebuah object ke stream, untuk proses berikutmya pada object file tersebut.
Berikut contoh program untuk membaca dan menulis object ke stream file
// ObjWrite.java
import java.io.*;
public class ObjRead
{
ObjRead()
{
String str = null;
try
{
FileInputStream file = new FileInputStream ("String.dat");
ObjectInputStream objInput = new ObjectInputStream(file);
str = (String) objInput.readObject();
file.close();
}
catch (Exception e)
{
System.out.println("Tidak bisa membaca Object");
}
System.out.println("Object yang dibaca dari String : \n " + str);
}
public static void main (String args[])
{
new ObjRead();
}
}
Pada program diatas tidak akan memunculkan output pada screen monitor. Namun output file bisa
dilihat pada direktori program yaitu String.dat
// ObjWrite.java
import java.io.*;
public class ObjWrite
{
ObjWrite()
{
String str = new String ("Rojulman Belajar Stream .... and Scream");
try
{
FileOutputStream file = new FileOutputStream ("String.dat");
ObjectOutputStream objOut = new ObjectOutputStream(file);
objOut.writeObject( str );
file.close();
}
catch (IOException e)
{
System.out.println("Object sekarang di tulis");
}
}
public static void main (String args[])
{
new ObjWrite();
}
}
Program diatas adalah membaca file dan ditampikan ke screen.
Output program :
Object yang dibaca dari String :
Rojulman Belajar Stream .... and Scream
Bab 16 Thread
Thread
16.1 Tujuan
Misalkan sebuah komputer sederhana yang mempunyai CPU dimana proses komputasi
berlangsung, ROM (readonly memory) yang berisi programprogram yang akan di eksekusi oleh
CPU, RAM (Random Acces Memory) yang bertugas menampung data yang akan dioperasikan oleh
program. Misalkan komputer sederhana ini hanya dapat menjalankan satu pekerjaan saja. Dalam
sesungguhnya Komputer memperbolehkan untuk melakukan beberapa pekerjaan secara
bersamaan.
Kita tidak perlu memusingkan diri dengan bagaimana hal diatas terjadi, fokus kita adalah bagaimana
implikasinya dipandang dari Pemrogramannya. Jika kita mempunyai lebih dari satu pekerjaan yang
sedang dilaksanakan adalah sama dengan kita memiliki lebih dari satu komputer. Dari uraian diatas
digambarkan thread adalah encapsulasi (pembungkusan) dari CPU, kode program dan data.
Class java.lang.thread memungkinkan user untuk mengontrol thread yang terjadi.
Konstruktor Class Thread mempunyai argumen yang merupakan instance dari Runnable. Sebuah
instance dari Runnable dibuat dari class yang mengimplemen interface Runnable (yang mempunyai
Method void run() )
16.3 Multithread
Pemrograman Multithread memperbolehkan untuk membuat banyak thread dengan menggunakan
instance Runnable. Penulisannya sebagai berikut :
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Dalam kasus ini dua Thread (t1 dan t2) saling membagi data dan kode yang sama.
Suatu thread dapat dihentikan dengan cara membuat flag yang mengindikasikan suatu method run()
dihentikan.
class Tes implements Runnable {
private boolean keluar=false;
public void run() {
while(! Keluar) {
. . .
}
}
public void stopRunning() {
keluar=true;
}
public class ControlThread() {
private Runnable r = new Tes();
private Thread t = new Thread(r);
public void startThread() {
t.start();
}
public void stopThread() {
// menggunakan instance dar Tes
r.stopRunning();
}
}
Thread dapat dijalankan dengan berbagai alasan, Kodekode thread dapat mengeksekusi sebuah
Thread.sleep(), yang artinya memanggil thread untuk berhenti sementara (pause) selama beberapa
waktu. Thread harus menunggu untuk mengakses suatu kode, (resource) dan tidak akan
dilanjutkan sampai suatu kode (resource) tersedia.
public class Tes implements Runnable {
public void run() {
// berisi kodekode melakukan sesuatu hal
;
//
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// Sleep interrupted
// oleh Thread Lain
}
}
}
}
Thread.sleep(x) dengan argumen x adalah angka minimum dalam milisecond dimana thread tidak
diaktifkan.
Contoh :
public class ThreadHello
{
public static void main(String args[])
{
Hello h1 = new Hello("Assalamu'alaikum ...");
Hello h2 = new Hello("... Wa'alaikum salaam");
Thread t1 = new Thread(h1);
Thread t2 = new Thread(h2);
t1.start(); t2.start();
}
}
public class Hello implements Runnable
{
int i;
String salam;
public Hello(String s)
{
salam = s;
}
public void run()
{
try
{
while(true)
{
System.out.println(salam);
Thread.sleep(500); i++;
if(i==5){break;}
}
}
catch(InterruptedException e){}
}
}
User dapat membuat thread sendiri dengan memanfaatkan class Thread sebagai ParentClass dan
mengimplements Runnable.
//Nama File Hitung3.java
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Hitung3 extends Applet {
private SeparateSubTask sp = null;
private TextField t = new TextField(10);
private Button start = new Button("Start");
private Button onOff = new Button("Toggle");
private class SeparateSubTask extends Thread {
private int count = 0;
private boolean runFlag = true;
SeparateSubTask() { start(); }
void invertFlag() { runFlag = !runFlag; }
public void run() {
while (true) {
try {
sleep(100);
} catch(InterruptedException e) {
System.err.println("Interrupted");
}
if(runFlag)
t.setText(Integer.toString(count++));
} // tutup while
}
}
class StartL implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(sp == null)
sp = new SeparateSubTask();
}
}
class OnOffL implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(sp != null)
sp.invertFlag();
}
}
public void init() {
add(t);
start.addActionListener(new StartL());
add(start);
onOff.addActionListener(new OnOffL());
add(onOff);
}
public void run(Applet applet, int width, int height) {
Frame frame = new Frame("Test Thread");
setupClosing(frame);
frame.add(applet);
frame.setSize(width, height);
applet.init();
applet.start();
frame.setVisible(true);
}
public void setupClosing(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
Hitung3 hint = new Hitung3();
hint.run(new Hitung3(), 300, 100);
}
}
17.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Definisi dan Pengertian database
• Koneksi Database dengan Java (JDBC)
• Query Database
• Object ResultSet
Saat ini ada banyak DBMS, diantaranya :
• PostgreSQL
• MySql
• MSSQL Server
• MSAcces
• Oracle
• Sybase
• Informix
JDBC adalah sebuah Java API (Application Programming Interface) yaitu suatu kumpulan
dokumen dari interfaceinterface dimana tercatat bagaimana program Java berkomunikasi
dengan Database.
Saat ini JDBC API 2.1 adalah standard komponen dari platform J2SE. JDBC menggunakan
Structured Query Language (SQL) untuk memudahkan kerja programmer dalam membangun
aplikasi database, karena SQL adalah standar bahasa database yang digunakan di hampir
semua sistem database. JDBC API menyediakan aplikasiaplikasi Java untuk mengakses
sistem database.
Dalam JDBC API didefinisikan kumpulan interface yang mengencapsulasi fungsifungsi utama
suatu database, didalamnya temasuk menjalankan query, memproses result data, dan juga
informasi konfigurasi dari masingmasing vendor database yang disebut JDBC driver, yang
merupakan kumpulan dari class yang mengimplement interfaces dari suatu sistem database
tertentu.
Gambar berikut mengilustrasikan bagaimana suatu aplikasi menggunakan JDBC yang dapat
berinteraksi dengan lebih dari satu database.
Tahapan koneksi ke database dengan JDBC :
1. Meload JDBC Driver untuk tipe database yang digunakan
2. Melakukan koneksi ke database dengan membuat object Connection
3. Mengirimlan query SQL dengan membuat object Statement
4. Memjalankan method yang berkesesuaian dengan query SQL dari object Statement, seperti
ExecuteQuery() atau ExecuteUpdate()
5. Mengambil ResultSet dari hasil eksekusi query SQL
JDBC menggunakan package java.sql, dimana dalam package java.sql terdapat classclass
untuk melakukan koneksi ke database, mengirimkan statement SQL ke database dan
memproses hasil query database.
Driver
Driver JDBC dibutuhkan untuk melakukan koneksi ke database. Driver JDBC yang dibutuhkan
berbeda masingmasing database.
Berikut pernyataan untuk meload sebuah Driver JDBC dengan database PostgreSql :
Class.forName ( org.postgresql.Driver );
Berikut daftar JDBC Driver :
PostgreSql org.postgresql.Driver
jdbc.postgresql://localhost:5432/namadb
Oracle com.jdbc.driver.OracleDriver
jdbc:oracle:thin:@site:port:namadb
ODBCBridge sun.jdbc.odbc.JdbcOdbcDriver
jdbc:odbc:datasource;odbcoptions
HSQLDB org.hsqlb.jdbc.Driver
jdbc:hsqldb:hsql//localhost/dbname
Connection conn = DriverManager.getConnection(URL, user , password)
Parameter URL, user dan password berbeda untuk masingmasing database, tergantung
database yang digunakan. Database MySQL memiliku URL
jdbc:mysql://<hostname>/<dbname>
Sedangkan database postgresql menggunakan URL :
jdbc:postgres://<hostname>:<port>/<dbname>
Contoh program untuk test koneksi dengan database postgres
1 /**
2 * File Name : DbConnect.java
3 **/
4 import java.sql.*;
5 import java.util.*;
6
7 public class DbConnect
8 {
9
10 public static void main (String args[])
11 {
12 try
13 {
14 Class.forName("org.postgresql.Driver");
15 Connection con =
16 DriverManager.getConnection("jdbc:postgresql://localhost:5432/latih
an","rojul","secret");
17 System.out.println("Koneksi ke database Sukses ...");
18 con.close();
19 }
20 catch( ClassNotFoundException cnfex)
21 {
22 System.out.println("Failed load JDBC/ODBC Driver...");
23 cnfex.printStackTrace();
24 System.exit(1);
25 }
26 catch (SQLException sqlex)
27 {
28 System.out.println("Tidak Bisa melakukan Koneksi ...");
29 sqlex.printStackTrace();
30 System.exit(1);
31 }
32 }
33 }
$ java cp .:postgresql.jar DbConnect
Jika koneksi dengan database telah terjadi, kita dapat melakukan query ke database dan mem
proses result set (himpunan kumpulan record) hasil query.
JDBC menyediakan tiga Class untuk mengirim SQL ke database :
Berikut langkahlangkah yang dibutuhkan untuk menjalankan query ke database :
1. Buat object Statement untuk kirim SQL ke database
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT * FROM produk”);
3. Mengambil ResultSet dari hasil Query
While ( rs.next())
{
String kode_produk = rs.getString(“kode”);
double harga_produk = rs.getDouble(“harga”);
}
Berikut kode program untuk menampilkan hasil query select
1 /**
2 * File Name : QueryApp.java
3 **/
4 import java.sql.*;
5 import java.util.*;
6
7 public class QueryApp
8 {
9 public static void main (String args[])
10 {
11 try
12 {
13 Class.forName("org.postgresql.Driver");
14 Connection con =
DriverManager.getConnection("jdbc:postgresql://localhost:5432/latihan"
,"rojul","secret");
15 System.out.println("Koneksi ke database Sukses ...");
16
17 Statement stmt = con.createStatement();
18 ResultSet rs = stmt.executeQuery("SELECT * FROM produk");
19
20 int _id ;
21 String _kode, _nama;
22 double _harga;
23
24 System.out.println("ID | KODE | NAMA | HARGA ");
25 if (rs != null)
26 {
27 int row = 0;
28 while (rs.next())
29 {
30 row++;
31 _id = rs.getInt("id");
32 _kode = rs.getString("kode");
33 _nama = rs.getString("nama");
34 _harga = rs.getDouble("harga");
35
36 System.out.println(_id + " | " +
37 _kode + " | " + _nama + " | " + _harga);
38 }
39 }
40 rs.close();
41 con.close();
42 }
43 catch( ClassNotFoundException cnfex)
44 {
45 System.out.println("Failed load JDBC/ODBC Driver...");
46 cnfex.printStackTrace();
47 System.exit(1);
48 }
49 catch (SQLException sqlex)
50 {
51 System.out.println("Tidak Bisa melakukan Koneksi ...");
52 sqlex.printStackTrace();
53 System.exit(1);
54 }
55 }
56 }
Melakukan query INSERT, UPDATE dan DELETE berbeda dengan query SELECT, yaitu tidak
menggunakan method executeQuery(). Namun menggunakan method executeUpdate() dan
hasilnya bukan berupa object ResultSet
1. Membuat object Statement untuk mengirim query ke database
Statement stmt = con.createStatement();
2. Menjalankan method executeUpdate() dari object Statement
INSERT :
stmt.executeUpdate(“INSERT INTO produk values
(3,'TV001','Televisi',1400000)”);
UPDATE :
stmt.executeUpdate(“UPDATE produk SET nama ='Televisi 20inch' WHERE
id=3)”;
DELETE :
stmt.executeUpdate(“DELETE FROM produk where id=3);
Contoh menggunakan SQL INSERT
1 /**
2 * File Name : QueryInsert.java
3 **/
4 import java.sql.*;
5 import java.util.*;
6
7 public class QueryInsert
8 {
9 public static void main (String args[])
10 {
11 try
12 {
13 Class.forName("org.postgresql.Driver");
14 Connection con = DriverManager.getConnection
15 ("jdbc:postgresql://localhost:5432/latihan","rojul","secret")
;
16 System.out.println("Koneksi ke database Sukses ...");
17
18 Statement stmt = con.createStatement();
19 stmt.executeUpdate("INSERT INTO produk VALUES
(3,'MTR0001','Motor Honda SupraX',1,12200000,24)");
20 stmt.close();
21 con.close();
22 }
23 catch( ClassNotFoundException cnfex)
24 {
25 System.out.println("Failed load JDBC/ODBC Driver...");
26 cnfex.printStackTrace();
27 System.exit(1);
28 }
29 catch (SQLException sqlex)
30 {
31 System.out.println("Tidak Bisa melakukan Koneksi ...");
32 sqlex.printStackTrace();
33 System.exit(1);
34 }
35 }
36 }
17.10 PreparedStatement
Perhatikan contoh perintah SQL INSERT berikut ini :
Statement stmt = con.createStatement();
stmt.executeUpdate(“INSERT INTO produk values (4,'PR001','Printer'))”;
Nilai yang dimiliki SQL diatas bersifat statis yaitu 4, 'PR001' dan 'Printer'. Kita tidak dapat
mengganti dengan nilai lain, artinya kita harus menulis perintah SQL yang baru. Apabila nilai
yang dimasukkan kedalam SQL berasal dari input/masukkan user, kita tidak dapat
menggunakan object Statement.
PreparedStatement digunakan untuk nilai SQL yang dinamis, seperti inputan dari user, yaitu
dengan mengganti nilai yang akan dimasukkan dengan tanda ' ? ' .
1. Buat object PreparedStatement untuk mengirim perintah SQL ke database :
INSERT :
PreparedStatement pstmt = con.prepareStatement(“INSERT INTO produk
VALUES (?,?,?)”;
UPDATE :
PreparedStatement pstmt = con.prepareStatement(“UPDATE produk SET nama=?
WHERE kode = ?”);
DELETE :
PreparedStatement pstmt = con.prepareStatement(“DELETE FROM produk WHERE
kode=?”);
2. Masukkan nilai sesungguhnya dari record yang akan diinput untuk menggantikan tanda '?'
INSERT :
pstmt.setInt(1,4);
pstmt.setNama(2,'AC001');
pstmt.setNama(3,'AC Milan');
UPDATE :
pstmt.setString(1,'AC EOLA');
pstmt.setString(2,'AC001');
DELETE :
pstmt.setString(1,'AC001');
3. Jalankan method executeUpdate pada object PrepareStatement
pstmt.executeUpdate();
Contoh Program dengan PreparedStatement :
1 /**
2 * File Name : QueryPrepare.java
3 **/
4 import java.sql.*;
5 import java.util.*;
6
7 public class QueryPrepare
8 {
9 public static void main (String args[])
10 {
11 try
12 {
13 Class.forName("org.postgresql.Driver");
14 Connection con = DriverManager.getConnection
15 ("jdbc:postgresql://localhost:5432/latihan","rojul","secret");
16 System.out.println("Koneksi ke database Sukses ...");
17
18 PreparedStatement pstmt = con.prepareStatement("INSERT
19 INTO produk (kode,nama,harga,id_jenis_produk,stok)
20 VALUES (?,?,?,?,?)");
21
22 pstmt.setString(1,"LP001");
23 pstmt.setString(2,"Laptop Impian");
24 pstmt.setDouble(3,12700000);
25 pstmt.setInt(4,3); // 3 id jenis_barang elektronik
26 pstmt.setInt(5,12);
27
28 pstmt.executeUpdate();
29 pstmt.close();
30 con.close();
31 }
32 catch( ClassNotFoundException cnfex)
33 {
34 System.out.println("Failed load JDBC/ODBC Driver...");
35 cnfex.printStackTrace();
36 System.exit(1);
37 }
38 catch (SQLException sqlex)
39 {
40 System.out.println("Tidak Bisa melakukan Koneksi ...");
41 sqlex.printStackTrace();
42 System.exit(1);
43 }
44 }
45 }
46
DAFTAR PUSTAKA
1. Tutorial dan Dokumentasi Java, http://java.sun.com
2. Modul Java Edisi I Thn. 2002, LP3T NurulFikri