Anda di halaman 1dari 127

Inhouse Training Java Fundamental

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

4.2 Definisi Class dan Object ..................................................................................................28


4.3 Bekerja dengan Object.......................................................................................................28
4.3.1 Membuat Object..........................................................................................................28
4.4 Akses dan Seting Class dan Variabel Instance...................................................................29
4.4.1 Akses variabel instance...............................................................................................29
4.4.2 Menberi Nilai Variabel................................................................................................30
4.4.3 Variabel-variabel class................................................................................................30
4.4.4 Memanggil Method.....................................................................................................31
4.5 Object Reference ................................................................................................................32
4.6 Casting dan Converting Object-Object dan Tipe Data Primitif.........................................32
4.6.1 Casting Tipe Data Primitif..........................................................................................33
4.6.2 Casting Object.............................................................................................................33
4.6.3 Konversi Tipe Data Primitif ke Object dan Sebaliknya..............................................33
4.7 Overview Java class library................................................................................................34
Bab 5 Class ...................................................................................................................................35
5.1 Tujuan.................................................................................................................................35
5.2 Mendeklarasikan Class.......................................................................................................35
5.3 Member Class : Variable.....................................................................................................36
5.3.1 Deklarasi Variable.......................................................................................................36
5.3.2 Akses dan Scope Variabel...........................................................................................36
5.3.3 Table Akses Member Class Variable..........................................................................37
5.3.4 Modifier.......................................................................................................................37
5.3.5 Variabel Instance.........................................................................................................38
5.3.6 Variabel Class..............................................................................................................38
5.3.7 Konstanta.....................................................................................................................39
5.4 Member Class : Method......................................................................................................39
5.4.1 Deklarasi Method........................................................................................................39
5.4.2 Nama Method..............................................................................................................39
5.4.3 Nilai Kembalian (Return Value).................................................................................40
5.4.4 List parameter .............................................................................................................40
5.4.5 Spesifikasi Acces Method...........................................................................................41
5.4.6 Modifier.......................................................................................................................43
5.4.7 Instance Method .........................................................................................................43
5.4.8 Penggunaan keyword this............................................................................................43
5.4.9 Class Method...............................................................................................................46
5.4.10 Overloading methods................................................................................................47
5.4.11 Overredding Method.................................................................................................47
5.5 Konstruktor Class................................................................................................................47
5.5.1 Konstruktor Kosong....................................................................................................48
5.5.2 Konstruktor untuk inisialisasi variable class...............................................................48
5.5.3 Overloading Konstruktor.............................................................................................49
5.5.4 Overredding Konstruktor............................................................................................50
5.6 Finalizer Method.................................................................................................................51
5.7 Contoh Class Account ........................................................................................................51
5.7.1 Informasi Class Account ............................................................................................51
5.7.2 Kode Program Class Account ....................................................................................52
5.7.3 Menggunakan Class Account .....................................................................................53
Bab 6Inheritance ...........................................................................................................................54
6.1 Tujuan.................................................................................................................................54

LP3T NurulFikri 2
Inhouse Training Java Fundamental

6.2 Apa itu inheretance.............................................................................................................54


6.3 Extend Class........................................................................................................................55
6.4 Mengakses Member Class dari Superclass ........................................................................57
6.5 Overredding Method...........................................................................................................57
6.6 Casting object......................................................................................................................57
6.7 Class AccountBank extends Account ................................................................................58
6.7.1 Diskripsi Class AccountBank......................................................................................58
6.7.2 Kode Program AccountBank.......................................................................................58
6.7.3 Menggunakan class AccountBank .............................................................................59
Bab 7 Komposisi............................................................................................................................60
7.1 Tujuan.................................................................................................................................60
7.2 Apa itu Komposisi ?............................................................................................................60
7.3 Komposisi pada class AccountBank...................................................................................61
7.3.1 Class Customer............................................................................................................62
7.3.2 Modifikasi class AccountBank ...................................................................................62
7.3.3 Menggunakan class AccountBank .............................................................................63
Bab 8Interface ..............................................................................................................................64
8.1 Tujuan.................................................................................................................................64
8.2 Apa itu Interface ?...............................................................................................................64
8.3 Sintaks dari Interface...........................................................................................................65
8.4 Class yang mengimplementasi interface.............................................................................65
8.4.1 Class Lingkaran ..........................................................................................................65
8.4.2 Class PersegiPanjang...................................................................................................66
8.4.3 Class BujurSangkar ....................................................................................................67
8.5 Implementasi Bentuk2D .....................................................................................................67
Bab 9Collection Class ..................................................................................................................69
9.1 Tujuan.................................................................................................................................69
9.2 Difinisi Collection...............................................................................................................69
9.3 Interface List.......................................................................................................................69
9.4 Interface Map .....................................................................................................................71
Bab 10 Exception ..........................................................................................................................72
10.1 Tujuan...............................................................................................................................72
10.2 Apa itu exception ?............................................................................................................72
10.3 Handle Exception..............................................................................................................73
10.4 Kategori Exception............................................................................................................75
10.5 Membuat Exception..........................................................................................................75
10.6 Contoh Penggunaan Exception.........................................................................................76
Bab 11 GUI dengan AWT.............................................................................................................78
11.1 Tujuan...............................................................................................................................78
11.2 Apa itu AWT ?..................................................................................................................78
11.3 Cointainer..........................................................................................................................78
11.3.1 Window :...................................................................................................................78
11.3.2 Panel..........................................................................................................................79
11.4 Layout Manager...............................................................................................................80
11.4.1 FlowLayout...............................................................................................................80
11.4.2 Border Layout............................................................................................................81
11.4.3 Grid Layout...............................................................................................................82
11.4.4 Card Layout...............................................................................................................83
11.5 Membuat Panel dengan Layout yang kompleks...............................................................83

LP3T NurulFikri 3
Inhouse Training Java Fundamental

Bab 12 Event di AWT...................................................................................................................85


12.1 Tujuan...............................................................................................................................85
12.2 Apa sih Event ?.................................................................................................................85
12.3 Event Handler...................................................................................................................85
12.4 Kategori Method dan Interfaces........................................................................................87
12.5 Event Adapter...................................................................................................................89
Bab 13 Komponen AWT..............................................................................................................90
13.1 Tujuan...............................................................................................................................90
13.2 Button................................................................................................................................90
13.3 Checkbox..........................................................................................................................90
13.4 Radio Button.....................................................................................................................91
13.5 Choice...............................................................................................................................91
13.6 Canvas..............................................................................................................................92
13.7 Label..................................................................................................................................92
13.8 TextField...........................................................................................................................92
13.9 TextArea............................................................................................................................92
13.10 List..................................................................................................................................93
13.11 Dialog..............................................................................................................................93
13.12 File Dialog.......................................................................................................................93
13.13 ScrollPane.......................................................................................................................93
13.14 Menu...............................................................................................................................94
13.15 Menu Item ......................................................................................................................94
13.16 CheckboxMenuItem........................................................................................................95
Bab 14 GUI dengan Swing...........................................................................................................96
14.1 Tujuan...............................................................................................................................96
14.2 Java Fondation Class.........................................................................................................96
14.3 Menggunakan Class-Class Swing.....................................................................................96
14.4 Kelas Hirarki Swing..........................................................................................................97
14.5 Menambahkan Component Swing....................................................................................97
14.6 Menambahkan Border pada Komponen .........................................................................98
14.7 Setting ShortCut Key........................................................................................................99
14.8 Menggunakan Tabbed Panes............................................................................................99
14.9 Membuat Menu ..............................................................................................................100
14.10 Layout dengan JFC.......................................................................................................102
14.11 Event dengan Swing......................................................................................................103
Bab 15 Object Stream...............................................................................................................104
15.1 Tujuan.............................................................................................................................104
15.2 Apa itu Stream ?..............................................................................................................104
15.3 Hirarki Class Stream.......................................................................................................104
15.4 Cara Menggunakan Stream.............................................................................................105
15.4.1 FileInputStream dan FileOutputStream...................................................................106
15.4.2 BufferedInputStream dan BufferedOutputStream...................................................106
15.4.3 DataInputStream dan DataOutputStream................................................................106
15.4.4 ByteArrayInputStream dan ByteArrayOutputStream.............................................107
15.4.5 Class Reader dan Writer ........................................................................................107
15.5 Membaca input dari Keyboard........................................................................................107
15.6 Input dan Output File......................................................................................................108
15.7 Serialization.....................................................................................................................110
Bab 16 Thread .............................................................................................................................112

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

Jakarta, 1 Mei 2009

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

1.2 Apa itu java?


Java adalah salah satu bahasa pemrograman ber-orientasi objek (OOP - Object Oriented
Programming). Paradigma OOP menyelesaikan masalah dengan merepresentasikan masalah ke
model objek.
Keutamaan java dibanding bahasa pemrograman lain
1. Cross platform, dengan adanya Java virtual machine
2. Robust & Secure ( tangguh dan aman)
3. Pengembangannya didukung oleh programmer secara luas
4. Automatic garbage collection, membebaskan programmer dari tugas manajemen memori

1.3 Object Orientied Programming (OOP)

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.3.1 Karakteristik OOP


1. Enkapsulasi
2. Inheritansi
3. Polimorfisme

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 Bujur Sangkar Piramida Bola

Gambar 1.1. Pewarisan pada object gambar

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

1.4 Program pertama


Format penulisan sintaks program Java adalah sebagai berikut :

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 

1.5 Apa yang anda butuhkan?


1. Editor :
◦ Text editor (vi, kwrite, notepad, editplus dan editor lainnya)
◦ IDE ( Integrated Development Environment : NetBeans, JBuilder, Eclipse )
2. JDK (Java Development Kit)
3. Dokumentasi Class Java / Java API
4. Web Browser yang support java (IE / Netscape) untuk bekerja dengan applet, servlet atau
JSP

LP3T NurulFikri 9
Inhouse Training Java Fundamental

Gambar 1.2. Alur proses pembuatan program Java

1.6 Aplikasi java vs applet java

Aplikasi java adalah program java yang dijalankan pada shell, sedangkan applet java
adalah program java yang dijalankan dalam browser. Tampilan applet adalah tampilan grafis.

Contoh applet java ( SalamApplet.java) :

1 import javax.swing.JApplet; 
2 import java.awt.Graphics; 
3 import java.awt.Color; 

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

1. buat file salam.html


1 <html>
2 <head>
3 <title>aplikasi salam applet</title>
4 </head>

6 <body>
7 <applet code="SalamApplet.class" width="20" height="40"> </applet>

9 </body>
</html>

2. panggil Applet.html pada address bar browser

LP3T NurulFikri 11
Inhouse Training Java Fundamental

Bab 2 Variable dan Operator


Variable dan Operator

2.1 Tujuan

Setelah mengikuti Modul ini ada diharapkan mengenal :


• Statement dan Identifier
• Java Keywords
• Variabel dan Tipe Data
• Komentar
• Literal
• Operator dan Ekspresi
• Operator Aritmatic (Arithmetic operators)
• Operaror Pembanding (Comparisons operators)
• Operator Logika (Logical operators)

2.2 Statemen dan Identifier

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 ;

setiap statemen selalu di akhiri dengan titikkoma(;)

Blok adalah 2 tanda kurung kurawal ({ }) yang menyatukan statemen


  {
    x = x + 1 ;
    y = y * 3 ;
  }

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 }

bisa ditulis dalam bentuk seperti dibawah ini

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

2.3 Java keywords


Java keywords adalah kata-kata / nama yang mempunyai arti khusus yang dikenali oleh
java dan tak boleh digunakan untuk nama variabel, method atau class yang akan kita buat.
Tabel 2.1
abstract do implements private throw
boolean double import protected throws
break else instanceof public transient
byte extends int return true
case false interface short try
catch final long static void
char finally native super volatile
class float new switch whil
continue for null synchronized
default if package this

LP3T NurulFikri 13
Inhouse Training Java Fundamental

2.4 Variabel dan Tipe Data

2.4.1 Definisi Variabel

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.

2.4.2 Tipe Data

Java membagi tipe data menjadi 2 bagian :


1. Tipe data primitif
Tabel 2.2
KeyWord Size Range
Bilangan Integer
byte 8 bits -128 s/d 127
short 16 bits -32768 s/d 32767
int 32 bits -2.147.483.648 s/d 2.147.483.647
long 64 bits -9223372036854775808 s/d 9223372036854775807
Bilangan Real (Desimal)
float 32 bits Single Precesion
double 64 bits Double Precesion
Tipe Data Lain
char 16 bits Single Characer
boolean True / false Nilai boolean

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 

2. Tipe data reference

reference adalah pointer ke data atau penyimpanan alamat.


Terdapat tiga data reference yaitu :
1. Array
2. Class

LP3T NurulFikri 14
Inhouse Training Java Fundamental

3. Interface
Mengenai tipe data reference akan diuraikan dalam bab selanjutnya.

2.5 Komentar

Ada tiga cara memberikan komentar :

Berikut cara menyisipkan komentar pada program:


1 class Hello 
2 {
3    // Program Pertama
4    
5    /**
6     * Method main akan dieksekusi
7     * ketika class di jalankan
8     */

10    public static void main(String args[]) 
11    {
12       System.out.println("Hello World !");
13    }
14 
15 }

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" 

hasil output jika dicetak pada baris terakhir akan muncul :


Trade Mark dari JavaTM

2.7 Operator dan Ekspresi (Expression)

Ekspresi (Expression) : adalah statemen yang mengembalikan suatu nilai


Operator : suatu simbol yang biasanya digunakan untuk ekspresi

2.7.1 Operator Aritmatika


Tabel 2.4
Operator Meaning Example
+ Addition   3 + 4
­ Substraction ' 5 / 9
* Multiplication  5 * 5
/ Division  14 / 7
% Modulus   20 % 7

Contoh :
1 //Nama File Aritmatika.java
2 class Aritmatika {
3 public static void main (String args[]) {

5  short x =  10;
6  int y = 4 ;
7  float a = 12.5f;
8  float b = 7f;

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 }

Lebih jauh dengan Assignment

Variabel assignment adalah suatu bentuk ekspresi .


x = y = z = 0;
pada contoh diatas variabel x, y, z bernilai 0.

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

Incrementing dan Decrementing

Sebagaimana di C/C++ , operator ++ dan -- dapat digunakan untuk Incrementing


(penambahan) dan Decrementing (pengurangan) nilai 1.

x++ : penambahan variabel x dengan 1 ( x = x +1)


x-- : pengurangan variabel y dengan 1 ( y = y+1)

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[]) {

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 }

2.7.2 Operator Pembanding

Java mempunyai beberapa ekspresi untuk menguji hasil suatu perbandingan.

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

2.8 Operator Logika

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

Bab 3 Array, Struktur Kondisi g


Looping
Array, Struktur Kondisi dan Looping

3.1 Tujuan

Setelah mengikuti modul ini anda diharapkan mengetahui :


• Cara penggunaan Array
• Cara penggunaan Konditional if dan switch
• Cara penggunaan Looping for dan while

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

3.2.1 Deklarasi Variabel Array

TipeData namaVariabe[ ];
atau
TipeData[ ] namaVariabel;

Contoh :
int bulan[ ];
Point sudut[ ]; 
atau
int[ ] bulan;
Point[ ] sudut;

3.2.2 Membuat Object Array

Ada dua cara untuk membuat object Array


1. Menggunakan keyword new
int[ ] nilai = new int[100];
String[ ] nama = new String[10];

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

2. Langsung inisialisasi dari element array

String[ ] strbulan = { "Januari", "Februari", "Maret","April" };

Setiap elemen dalam kurung kurawal { } , harus mempunyai tipe data yang sama.

3.2.3 Acces Element dari Array

Untuk acces element array dapat diperhatikan contoh berikut :

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.3 Array Multidimensi

Contoh multidimensi array :


int koordinat [ ] [ ] = new int [10] [10];
koordinat[0][0] = 1;
koordinat[0][1] = 2;

3.4 Kondisional if

3.4.1 Sintaks Statement 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 }

3.4.2 Sintaks if dan else statement

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 }

contoh kondisional dengan tipe data boolean;


1 if (statusMesin  ==  true)
2 System.out.println("Mesin sedang hidup ");
3 else
4 System.out.println("Mesin sedang Mati ");

3.4.3

3.4.4 Contoh Kasus


Pada contoh kasus ini anda diminta untuk input dua bilangan bulat (integer), bilangan
pertama disimpan dalam variabel x, bilangan ke dua dalam variable y. Kemudian kedua bilangan
dibandingkan.

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 } 

3.5 Kondisional Switch

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

Bentuk ringkas dari nested if adalah dengan menggunakan switch

3.5.1 Bentuk switch statement


switch (expr1)
{
  case expr2:
     statemen­statemen;
     break;
  case expr3:
     statemen­statemen;
     break;
  case expr4:
     statemen­statemen;
     break;
  default:
     statemen­statemen;
     break;
}

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 }

3.5.2 Contoh Kasus Switch


Pada contoh kasus ini anda diminta untuk input bilangan antara 1 s/d 5 , kemudian
dihasilkan output nama bilangan yang diinput.

1 //Nama File : ContohSwitch
2 import java.util.Scanner; 

4 public class ContohSwitch{ 
5   public static void main(String args[]) { 

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 : "); 

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 }

3.6 Looping for


Looping for digunakan untuk mengulang statement atau block statement beberapa kali
sampai kondisi terpenuhi.

3.6.1 Bentuk sintaks for

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"};

3 for ( int i = 1 ;  i  < nama2.length; i++)
4 {
5  System.out.println( i + ". " + nama2[i]);
6 }
7  System.out.println( " Nama­nama diatas adalah Staff LP3T NF"); 

3.7 Looping while


Looping while digunakan untuk mengulang statement atau block statement selama kondisi
tertentu benar.
while (boolean)
{
   statement atau block statement;
}

Contoh:
1 int i = 0 ;
2 while (i < 10)
3 {
4    System.out.println("Looping ke ") ;
5    i++ ;
6 }
7 System.out.println("Selesai ..."); 

3.8 Looping do ... loop


Looping do ... loop hampir sama dengan Looping while,kecuali statement atau block
statement dilakukan sampai kondisi tidak terpenuhi (salah).
Perbedaan utama antara Looping while dengan Looping do ... loop adalah, Looping while
menguji kondisi sebelum di lakukan looping, sementara do ... loop mengeksekusi perintah dalam
block statement baru kemudian menguji kondisi.

3.8.1 bentuk do ... while

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...");

3.9 Keluar dari 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

4 class ContohOutLoop {

6 public static void main (String args[]){
7     int count = 0;
8     int[] bil = { 2,3,27,6,0,3,23 };

10     System.out.print("Test Bilangan­Bilangan : ");
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 }

3.10 Label Looping

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 {

4 public static void main (String args[]){

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

Bab 4 Mengenal Object dan


Class
Mengenal Object dan Class

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

4.2 Definisi Class dan Object

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.

4.3 Bekerja dengan Object

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.

4.3.1 Membuat Object


Untuk membuat object, kita gunakan keyword new dengan sebuah nama class yang akan
dibuat sebagai instance dari class 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).

4.4 Akses dan Seting Class dan Variabel Instance

4.4.1 Akses variabel instance


Untuk mengambil value dari suatu variabel instance kita gunakan notasi titik (.)
Dengan notasi titik, sebuah instance atau variabel class dibagi dua bagian. Object berada
disebelah kiri titik, dan variabel berada di kanan titik.
Pegawai.status;

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;

4.4.2 Menberi Nilai Variabel


Untuk memberi nilai suatu variabel kita gunakan operator “samadengan” (=) disebelah
kanan ekspresi.
Pegawai.status.tetap = true;

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  }

4.4.3 Variabel-variabel class

Variabel-variabel class adalah variabel-variabel yang didefinisikan dan tersimpan dalam


class tersebut (lebih jelas akan di bahas dalam bab selanjutnya).

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); 

4.4.4 Memanggil Method


Untuk memanggil method didalam object, sama seperti memanggil variabel instance; yaitu
dengan menggunakan notasi titik (dot).
Object berada disebelah kiri titik, dan method beserta argumen-argumen berada di kanan
titik.
ObjectSatu.methodDua(arg1, arg2, arg3);

method tanpa argumen:


ObjectSatu.methodNoArg();
 
Jika method yang dipanggil mempunyai object yang mempunyai method tersendiri.
ObjectSatu.getClass().getName();

Method dengan kombinasi memanggil variabel instance


Pegawai.Golongan.getGaji(arg1, arg2)

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

4.5 Object Reference


Ketika bekerja dengan object-object, salah satu hal yang penting untuk dimengerti adalah
bagaimana menggunakan reference ke suatu object.
Ketika kita meng-asign suatu object ke variabel, atau menjadikan object-object sebagai
argumen pada suatu method, sesungguhnya kita telah membuat reference ke object-object
tersebut, bukan object atau duplikasi (copy) dari object yang membuat suatu reference.
Contoh berikut akan membuat kita jelas :
1 //Nama File : ReferencesTest.java
2 import java.awt.Point;

4 class ReferencesTest {
5  public static void main (String args[]) {

7  Point poin1, poin2;
8  poin1 = new Point(100,100);
9  poin2 = poin1;
10 
11  poin1.x = 200;
12  poin2.y = 200;
13  System.out.println("Point 1 : " + poin1.x  + ",  " + poin1.y);
14  System.out.println("Point 2 : " + poin2.x  + ",  " + poin2.y);
15 
16  }
17 }

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

4.6 Casting dan Converting Object-Object dan Tipe Data Primitif

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

4.6.1 Casting Tipe Data Primitif


Casting antara tipe data primitif biasa dilakukan untuk tipe data numeric; tipe data boolean
tidak dapat di casting ke tipe data primitif lain.

Perintah Casting :  (TypeData) value
TypeData : short, int, float,boolean

Contoh :
1 float x = 9 ;
2 float y = 2;
3 int z = (int) x/y;

4.6.2 Casting Object

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;

4.6.3 Konversi Tipe Data Primitif ke Object dan Sebaliknya.


Sebelumnya kita telah mengetahui bagaimana mengcasting tipe data primitif ke tipe data
primitif lainnya, dan dari satu class casting ke kelas lainnya.
Bagaimana Casting tipe data primitif ke type reference (object), ...Oops Anda Tidak bisa
melakukannya, karena dalam Java, Tipe Data Primitif dan Object adalah dua hal yang bebeda.
Namun demikian package java.lang telah menyediakan beberapa class yang berhubungan
dengan tipe data primitif. Integer -> ints, Float -> floats, Boolean -> boolean dan sebagainya.
Contoh : Membuat object (instance) dari class Integer
Integer intObject = new Integer(14);

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

Lebih jauh lagi anda bisa pelajari dokumentasi Java API.

4.7 Overview Java class library

Berikut beberapa class dalam package bagian dari Java class library :

1. java.lang : Class-class yang mengaplikasikan penggunaan bahasa java, temasuk


didalamnya object class, String class, dan System class. Terdapat pula spesial class dari
Tipe data primitif (Integer, Character,Float dan sebagainya)
2. java.util : Berisi class-class utilitas, seperti Date, Calendar berisi pula collection class
seperti Vector, List, ArrayList dan Hashtable
3. java.io : Berisi class-class untuk proses input dan menulis output (standard input dan
standar output) juga berhubungan dengan menghandel file-file.
4. java.awt (abstract window toolkit) dan javax.swing ; class yang mengimplementasikan
graphical user interface, dalam class ini terdapat class / komponen untuk membangun
aplikasi grafis dengan Java
5. java.applet : class-class untuk implementasikan java applet.

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

5.2 Mendeklarasikan Class


Class adalah kumpulan kode atau cetak biru (blue print) dari suatu object. Di dalam cetak
biru menerangkan sipat dari object dan identitas suatu variabel.
Sintak untuk mendeklarasikan 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

Dapat diartikan class AccountBank adalah turunan dari class Account.

Jika class mengimplementasikan suatu interface :

class AccountBank implements Asset {
. . .
}

5.3 Member Class : Variable

5.3.1 Deklarasi Variable


Sintaks:
[ ( 'public' | 'private' | 'protected') ]
     [ ( 'final' | 'volatile' ) ]
[ 'static' ] [ 'transient' ]
Tipe_Data  Nama_Variabel  [ '=' ekspresi ] '; '

Untuk nama variable biasakan gunakan huruf kecil .

Contoh :
1 class Account  {
2  String no_acc = "" ;
3  double  saldo = 0;
4 }

5.3.2 Akses dan Scope Variabel


Untuk akses dan skup variabel digunakan keyword: public , private atau protected.

1. Tanpa Keyword public, private atau protected


1 class MyClass 
2 {
3    int nama;
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.3 Table Akses Member Class Variable


Akses Public Protected Private Default
Dari Class Yang Sama Ya Ya Ya Ya
Dari Non Sub Class dalam package Ya Ya Tidak Ya
yang sama
Dari Non Sub Class diluar package Ya Tidak Tidak Tidak
Dari Sub Class dalam package yang sama Ya Ya Tidak Ya
Dari Sub Class diluar package Ya Ya Tidak Tidak

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.

5.3.5 Variabel Instance


Sebuah variabel instance adalah variabel yang dideklarasikan dengan tidak menggunakan
keyword modifier static.
Contoh :
1 class Lingkaran {

3 int  jari = 14;

5 public static void main (String args[])
6   {
7  Lingkaran lingkar1 = new Lingkaran();
8  System.out.println ("Jari­Jari : " + lingkar1.jari);
9   }
10 }

5.3.6 Variabel Class


Variabel class adalah variabel yang dideklarasikan dengan menggunakan keyword
modifier static. Variabel-variabel class berhubungan dengan class-class bukan object-object.
Variabel class di ciptakan ketika class di load dan dihapus (destroyed) ketika keluar dari class
(unload).
Contoh :
1 class  Lingkaran {
2 static float  PHI = 3.14;
3 public static void main (String args[])  {
4  System.out.println ("NILAI PHI :  " + PHI );

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}

5.4 Member Class : Method

5.4.1 Deklarasi Method


Java menggunakan “method” untuk mengacu fungsi atau prosedur dalam class. Jika
variabel object digunakan untuk menyimpan status object. Maka method menggambarkan sipat-
sipat (behaviours) dari object atau class.
Sintaks:
[ ('public' | 'private' | 'protected') ]
   ( [ 'abstract' ] | [ 'final' ] [ 'static'] [ 'native'] 
     [ 'synchronized' ] )
  NilaiKembalian_TipeData  nama_method ' ( ' [ list_parameter ] ' )'
block_statement

5.4.2 Nama Method


Nama method akan mengidentifikasi suatu method, biasanya nama method menggunakan

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( ).

5.4.3 Nilai Kembalian (Return Value)


Nilai kembalian dapat berupa tipe data primitif , atau nama dari class ataupun tidak
mempunya nilaiKembalian dengan keyword void.
Nilai Kembalian yang bertipe data primitif menggunakan keyword boolean, byte, char,
double, float, int, long atau short.
Contoh:
1 public class Account 
2 { 
3     private String no_acc = ""; 
4     private double saldo = 0; 

6     ­­­ 

8     public String getNoAccount() 
9     { 
10      return this.no_acc; 
11     } 
12 
13    public double getSaldo() 
14    { 
15      return this.saldo; 
16    } 
17     
18    public void showInfo()
19    {
20      System.out.println("No Account: " + this.no_acc + ", Saldo"  + 
this.no_acc;
21    }   
22  ­­ 
23 } 

5.4.4 List parameter


List Parameter pada method adalah variabel-variabel yang di-passing sebagai masukan
method yang dipisahkan oleh tanda coma (,)
Contoh :
1 // Nama File Kalkulasi.java
2 class Kalkulasi {

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 }

5.4.5 Spesifikasi Acces Method


Deklarasi dari method menggunakan keyword : public , private atau protected.
1. Tanpa Deklarasi Method
Contoh :
1 class Temperature
2 {
3     private int derajat;
4     void setDerajat(int d)
5     {
6       derajat = d;
7     }
8  
9     int getDerajat()
10     {
11       return derajat;
12     }
13 }

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().

2. Deklarasi Method dengan private


Contoh :
1 class MathUtilitas {
2  
3 private int factorial (int n)
4     {

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().

3. Deklarasi method dengan public


Jika kita mendeklarasikan suatu method dengan public mengakibatkan seluruh kode yang
terdapat didalam class tersebut dan class-class dalam package lain dapat memanggil method
tersebut.
Contoh :
1 public class Account 
2 { 
3     private String no_acc = ""; 
4     private double saldo = 0; 

6     public String getNoAccount() 
7     { 
8      return this.no_acc; 
9     } 
10 }

4. Deklarasi method dengan protected


Contoh :
1 class Pegawai 
2 {
3  // kode­kode lain tidak ditampilkan dalam program ini 

5  protected double hitungGaji()
6  {
7  return  jam_kerja *  gaji_perjam;
8  }
9 }

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.

5.4.7 Instance Method


Sebuah instance method dapat mengakses variabel instance atau variabel class yang
dideklarasikan di dalam class. Untuk mendeklarasikan instance method tidak menggunakan
keyword static di dalam body dari instance method.
Perhatikan contoh di bawah ini.
1 class Pegawai
2 {
3    private double gaji;

5    void setGaji (double g)
6  {
7  this.gaji = g;
8  }
9 }

setGaji() adalah sebuah instance method, setGaji() mengakses variabel instance


gaji.

5.4.8 Penggunaan keyword this


Misalkan kita mempunyai sebuah instance method dengan parameter yang mempunya
nama yang sama dengan variabel instance. Adalah dimungkinkan untuk meng-asign suatu nilai

LP3T NurulFikri 43
Inhouse Training Java Fundamental

parameter ke variabel dengan nama yang sama.


Contoh :
1 /**
2  * Nama File : Account.java
3  */
4 public class Account 
5 { 
6     private String no_acc = ""; 
7     private double saldo = 0; 

9     public void setNoAccount(String no_acc)
10    {
11             this.no_acc = no_acc;
12    }
13 
14 } 

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().

3. Memanggil instance method dengan teknik method chaining


Contoh :
1 // Nama File : HelloGoodBye
2  
3 class HelloGoodBye {
4  
5   public static void main (String args[]) 
6   {
7  
8     HelloGoodBye gb = new HelloGoodBye();
9     gb.hello().goodbye();
10  }
11  
12  HelloGoodBye hello()
13  {
14         System.out.println("Hello .. ");
15         return this;
16  }
17  void goodbye()
18  {
19         System.out.println("Goodbye ...");
20  }
21 }

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().

5.4.9 Class Method


Class method adalah suatu method yang dapat diakses oleh variabel yang dideklarasikan
dalam class tersebut. Untuk mendeklarasikan sebuah class method menggunakan keyword static
pada awal nama class method.
Contoh :
1 class Pegawai 
2 {
3  private static int nomorPegawai;

5  static void setNomorPegawai (int nopeg)
6  {
7  nomorPegawai = nopeg;
8  }
9 }

Method setNomorPegawai meng-asign suatu parameter nilai nopeg ke variabel class


nomorPegawai.
Sebuah class method dapat dipanggil dari class method lain dalam class yang sama dengan
menyebutkan nama methodnya dan argumen yang diberikan.
Contoh :
1 // Nama File : AnakPegawai.java
2 class AnakPegawai
3 {
4    static void namaPegawai(String nama, int jumlah_anak)
5    {
6             System.out.println("Nama Ayah : " + nama);
7             jumlahAnak(jumlah_anak);
8    }
9    static void jumlahAnak(int anak)
10    {
11             System.out.println("Jumlah anak = " + anak);
12    }
13 }

Contoh diatas menyatakan method namaPegawai() memanggil class method


jumlahAnak(). Untuk memanggil class method dari class lain akan diperlihatkan dalam
contoh dibawah ini.

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 }

5.4.10 Overloading methods


Mendeklarasikan beberapa method dengan nama yang sama tetapi dengan parameter-
parameter yang berbeda dikenal sebagai Overloading Method. Ketika method dipanggil,
compiler akan memilih method yang sesuai dengan parameter-parameter yang diberikan.
1 /** 
2  * Nama File : Hitung.java 
3  * 
4  **/ 

6 public class Hitung 
7 { 
8     public static int jumlah(String a, String b) 
9     { 
10         return Integer.parseInt( a ) + Integer.parseInt( b ); 
11     } 
12 
13     public static int jumlah(int a, int b ) 
14     { 
15         return a + b ; 
16     } 
17 
18     public static int jumlah(float a, float b) 
19     { 
20         return (int) a + (int) b; 
21     } 
22 } 

Contoh diatas memperlihatkan tiga method overloading, method jumlah mempunyai


parameter-parameter dengan tipe data yang berbeda.

5.4.11 Overredding Method

Suatu method dalam subclass dapat mengganti (meng-overide) method yang ada di dalam
superclassnya. (akan dijelaskan dalam bab berikutnya )

5.5 Konstruktor Class


Construkor adalah spesial method yang dipergunakan untuk menginisialisasii object. Nama
Construktor harus sama dengan nama class dimana construktor dideklarasikan. Construktor tidak

LP3T NurulFikri 47
Inhouse Training Java Fundamental

boleh dideklarasikan dengan menggunakan tipe data kembalian (return data type).

5.5.1 Konstruktor Kosong


Jika kita membuat suatu class sebagai berikut :
1 class X
2 {
3 }

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 {

3 public static void main (String args[]){
4     X x1 = new X(2);
5     X x2 = new X(); // akan terjadi error
6     }
7 }

5.5.2 Konstruktor untuk inisialisasi variable class


Konstruktor dapat digunakan untuk inisialiasi awal member variabel class, berikut contoh
class Account dimana argumen konstruktornya adalah nomor account dan saldo awal.
1 public class Account 
2 { 
3     private String no_acc = ""; 
4     private double saldo = 0; 

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 }

5.5.3 Overloading Konstruktor


Sebagaimana method, konstruktor dapat mempunyai parameter-parameter yang berbeda.
Sehingga dimungkinkan untuk membuat object dengan input argumen yang berbeda-beda pula.

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  }

Berikut contoh program untuk memanggil class Persegi.


1 //Nama File PanggilPersegi.java
2  
3 import java.awt.Point;
4 class PanggilPersegi {
5  
6 public static void main (String args[]){
7  Persegi psegi;

9 System.out.println ("Persegi dengan koordinat 20,20,40,40");
10 psegi = new Persegi(20,20,40,40);
11 psegi.CetakPersegi();
12 System.out.println("______________________");
13  
14 System.out.println ("Persegi dengan Point (10,10), Point (50,50)");
15 psegi = new Persegi(new Point(10,10) , new Point(50,50));
16 psegi.CetakPersegi();
17 System.out.println("______________________");
18  
19 System.out.println ("Persegi dengan Point (15,15) dan Lebar = 25 
Tinggi = 20");
20 psegi = new Persegi(new Point(15,15), 25,20);
21 psegi.CetakPersegi();
22 System.out.println("______________________");
23     }
24  
25 }

5.5.4 Overredding Konstruktor


Sebagaimana method, konstruktor pun kita bisa override. Misalnya kita ingin membuat
object baru modifikasi dari java.awt.Point
Contoh :
1 // Nama File : Point3D.java

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 }

5.6 Finalizer Method


Finalizer method bisa dikatakan sebagai lawan dari construktor method, Jika construktor
method digunakan untuk inisialisasi sebuah object, maka finalizer method di panggil pada saat
sebelum object dilakukan garbage collection (suatu proses yang dilakukan JVM untuk
menghapus alokasi di memori /optimisasi memori).
Deklarasi finalizer method : finalize().
Protected void finalize() {

. . . 
}

Dalam body finalize() contohnya berisi perintah-perintah untuk membersihkan


reference-reference dari object yang tidak digunakan lagi. Method finalize()  berfungsi
juga sebagai optimasi program.

5.7 Contoh Class Account

5.7.1 Informasi Class Account


Class Account memiliki member class seperti berikut ini :
1. Member Variable
◦ variabel untuk menyimpan nomor account
◦ variabel untuk menyimpan jumlah uang / saldo yang tersimpan

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

5.7.2 Kode Program Class Account


Berikut kode program class Account
1 /** 
2  * Nama File : Account.java 
3  * 
4  **/ 
5 public class Account { 

7   private String no_acc = ""; 
8   private double saldo = 0; 

10   public Account() 
11   { 
12   } 
13 
14   public Account(String no, double saldo) 
15   { 
16  this.no_acc = no; 
17         this.saldo = saldo; 
18   } 
19 
20   public void deposit(double uang) 
21   { 
22  this.saldo = this.saldo + uang; 
23   } 
24 
25   public void witdraw(double uang) 
26   { 
27        this.saldo = this.saldo ­ uang; 
28   } 
29 
30   public String toString() 
31   { 
32  return "No.Account : " + this.no_acc + ", Saldo : " + 
this.saldo; 
33   } 
34 
35 }

LP3T NurulFikri 52
Inhouse Training Java Fundamental

5.7.3 Menggunakan Class Account


Berikut kode program yang menggunakan class Account.
1 /** 
2  * Nama File : AccountDemo.java 
3  **/ 

5 public class AccountDemo { 

7   public static void main (String args[]) 
8   { 
9          Account ac1 = new Account("007",400); 
10         Account ac2 = new Account("001",500); 
11 
12         // ac1 ditambah $20 
13         ac1.deposit(20); 
14         // cetak info ac1 
15         System.out.println( ac1 ); // akan eksekusi method toString 
16         // ac1 dikuran $75 
17         ac1.withdraw(75); 
18         // cetak info ac1 
19         System.out.println( ac1 );  
20 
21   } 
22 } 

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

6.2 Apa itu inheretance


Kita sering berhadapan dengan kata "Inheretance" -suatu kemampuan spesifik yang
didapat dari sesuatu yang generik- di keseharian hidup kita. Contohnya, Honda Astrea SupraX
warna hitam garis merah di parkir di halaman LP3T NurulFikri margonda adalah sebuah instance
dari apa yang dikategorikan sebagai motor. Sementara waktu anda melihat sepeda balap melaju
di depan anda yang juga adalah sebuah instance dari apa yang dikategorikan sepeda. Jika kita
bandingkan sepeda dan motor pada level yang lain, keduanya mempunyai kategori yang sama
yaitu sama-sama termasuk kategori kendaraan. Keadaan diatas bisa digambarkan pada Gambar
6.1

Kendaraan

Motor Sepeda

Honda Supra X Sepeda Balap

Gambar 6.1: Inheretance pada Kendaraan


Contoh diatas mengilustrasikan single inheretance. Dengan single inheretance suatu entitas
secara langsung adalah mewarisi (inherits) keadaan dan sipat-sipat dari satu dan hanya satu
kategori. Berlainan dengan multiple inheretance yang menperbolehkan suatu entitas secara
langsung mewarisi keadaan dan sipat-sipat dari dua atau lebih kategori.
Contoh Miss Vonny adalah karyawan dari suatu perusahaan. Lebih spesifik lagi Miss
Vonny adalah seorang manager dan akuntan. Miss Vonny mewarisi dua kemampuan baik
sebagai seorang manager maupun seorang akuntan. Bisa dilihat seperti Gambar 6.2.

LP3T NurulFikri 54
Inhouse Training Java Fundamental

Pegawai

Manager Akuntan

Miss Vonny

Gambar 6.2 Multiple Inheretance

6.3 Extend Class


Dari perspektif Java, Inheretance adalah hasil dari perpanjangan (extend) class, disebut
juga implementation inheretance dan juga hasil dari implementasi dengan interface (interface
inheretance).

Berikut konsep sintak dari konsep extend class :

'class' classIdentifier1 'extends' classIdentifier2
'{'
    // Variabel­variabel dan method­method
'}'

sintak diatas dibaca : classIdentifier1 extends classIdentifier2, dengan kata lain


classIdentifier1 adalah turunan (mendapatkan kemampuan yang diekspresikan melalui variabel
dan method) dari classIdentifier2. ClassIdentifier1 dikenal sebagai subclass atau child class,
sedang classIdentifier2 dikenal sebagai superclass atau parent class.
Keyword extends mengakibatkan subclass mewarisi semua variabel-variabel dan method-
method yang didekalarasikan oleh superclass (termasuk yang ada di superclass dari superclass)
dimana superclass bukan final class .
Subclass dapat mengakses semua variabel-variabel dan method-method yang bukan private
atau subclass tidak dapat mengakses variabel-varaibel dan method-method yang didekalarasikan
private pada superclassnya (paling tidak secara tidak langsung).
Berikut contoh Class Base sebagai parent class dari class Child.
1 /**
2  * Nama File Base.java
3  */
4 class Base { 

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 }

Berikut class Child.


1 /**
2  * Nama File : Child.java
3  */
4 class Child extends Base 
5 { 
6    private int umur = 0 ; 
7   
8    Child (String nama, int umur ) 
9    { 
10  super( nama ) ; // panggil konstruktor parent class 
11  this.umur = umur; 
12    } 
13 
14    int getUmur() 
15    { 
16    return this.umur; 
17    } 
18 
19     // overriding method parent
20    void info() 
21    { 
22  System.out.println("Nama " + super.getNama() + ", Umur " + 
this.umur); 
23    } 
24  
25 }

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

6.4 Mengakses Member Class dari Superclass


Class dapat mengakases member class (variabel, method dan atau konstruktor) milik
superclass dengan menggunakan keyword super. Perlu diperhatikan yang hanya dapat diakses
adalah member class yang mempunyai akses modifier selain private.
Kode program pada class Child diantaranya menggunakan keyword super untuk
memanggil contruktur dari Base.

   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.

6.5 Overredding Method


Suatu method dalam subclass dapat menulis ulang atau mengganti (meng-overide) method
yang ada di dalam superclassnya.
Pada contoh sebelumnya, pada Class Child terdapat method info() yang mendefinisikan
ulang method info() milik superclassnya.
   void info() 
   { 
System.out.println("Nama " + super.getNama() + ", Umur " + 
this.umur); 
   } 

6.6 Casting object


Setiap object pada subclass adalah juga sebuah object pada superclassnya. Misalnya object
Child adalah juga object Base. Pernyataan diatas akan berimplikasi bahwa kita dapat meng-asign
suatu object pada subclass reference ke object reference variabel supeclass.
Contoh :
Base b1 = new Child ( "Rosalie", 6);

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

Perintah casting object dapat juga dilakukan dengan contoh berikut :


        Child c = new Child("Rosa",5); 
       c.info(); 
       Base b = (Base) c; // casting object 
       b.info(); 

6.7 Class AccountBank extends Account


Misalkan dibuat sebuah class AccountBank sebagai turunan dari class Account (lihat bab
5)

6.7.1 Diskripsi Class AccountBank


Class AccountBank disamping memiliki nomor account bank dan saldo juga mempunyai
variable untuk menyimpan nama pemilik account.
Class AccountBank memiliki fitur untuk transfer antar rekening bank, dan class
AccountBank juga mendefinisikan ulang method toString() milik parent classnya.

6.7.2 Kode Program AccountBank


1 /** 
2  * Nama File : AccountBank.java 
3  */ 
4  public class AccountBank extends Account { 

6   private String nama_customer = ""; 

8   public AccountBank (String no, String nama, double saldo_awal ) 
9   { 
10  super (no, saldo_awal); 
11  this.nama_customer = nama; 
12   } 
13 
14   public String toString() 
15   { 
16  return super.toString() + ", Pemilik " + this.nama_customer; 
17   } 
18 
19   public void transfer(AccountBank ac_tujuan, double uang) 
20   { 
21  ac_tujuan.deposit( uang ) ; // saldo rekening tujuan bertambah 
22  withdraw( uang ); // uang rekening ini berkurang 
23   } 
24 
25 }

LP3T NurulFikri 58
Inhouse Training Java Fundamental

6.7.3 Menggunakan class AccountBank


26 /** 
1  * Nama File : TransaksiBank.java 
2  */ 
3 public class TransaksiBank 
4 { 

6  public static void main (String args[]) 
7  { 
8  AccountBank ab1 = new AccountBank("007","Rosalie Naurah",650); 
9  // cetak info rekening rosalie 
10  System.out.println( ab1 ); 
11 
12  AccountBank ab2 = new AccountBank("010","Faiz Fikri",300); 
13  // cetak info rekening faiz 
14  System.out.println( ab2 ); 
15 
16  System.out.println("Kaka Rosalie mentransfer uang $200 ke ade 
Faiz "); 
17  ab1.transfer( ab2 , 200 ); 
18 
19  // cetak informasi rekening setelah proses transfer 
20  System.out.println( ab1 ); 
21  System.out.println( ab2 ); 
22 
23  } 
24 
25 }

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

7.2 Apa itu Komposisi ?


Didunia nyata, suatu entitas adalah komposisi dari entitas-entitas lain, contohnya entitas
CPU Komputer adalah gabungan dari Motherboard, VGA Card, Casing, dan hardware lainnya.
Dalam kasus lain Mobil tidak akan dikatakan sebagai mobil yang utuh dan bisa bekerja dengan
baik bila tanpa ban, mesin, pintu, kaca dan lain-lain. Suatu tindakan membuat (composing) suatu
object dari object-object lain disebut Komposisi (Composition / aggregation).

Kendaraan
Mesin

Gambar 7.1: Kendaraan adalah Komposisi dari Mesin

1 class Mesin
2 {
3  / * variabel­variabel dan method­method 
4   didefinisikan untuk mengidentifikasi struktur Mesin */
5 }

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

Komposisi akanlah sangat berguna ketika mengerjakan aplikasi besar.

7.3 Komposisi pada class AccountBank


Pada class AccountBank pada contoh bab 6, diwakilkan sebagai variabel String yang
menyimpan nama pemilik rekening bank. Pada class AccountBank ini bisa kita perbaiki dengan

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 { 

6         private String nama = ""; 
7         private String alamat = ""; 

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 }

7.3.2 Modifikasi class AccountBank


Pada class AccountBank informasi customer diwakili oleh object instance dari class
Customer.
1 /** 
2  * Nama File : AccountBank.java 
3  */ 

5 public class AccountBank extends Account { 

LP3T NurulFikri 62
Inhouse Training Java Fundamental

7   private Customer cust = null; 

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 }

7.3.3 Menggunakan class AccountBank


Pada implementasinya sebelum membuat object AccountBank, maka terlebih dahulu
dibuat object Customer. Object Customer adalah argumen kedua dari konstruktor class
AccountBank yang telah dimodifikasi.
1 /** 
2  * Nama File : TransaksiBank.java 
3  */ 
4 public class TransaksiBank { 

6  public static void main (String args[]) 
7  { 
8  Customer cust1 = new Customer("Rosalie Naurah","Jakarta"); 
9  AccountBank ab1 = new AccountBank("007",cust1,650); 
10  // cetak info rekening rosalie 
11  System.out.println( ab1 ); 
12 
13  Customer cust2 = new Customer("Faiz Fikri","Manchester"); 
14  AccountBank ab2 = new AccountBank("010",cust2,300); 
15  // cetak info rekening faiz 
16  System.out.println( ab2 ); 
17 
18  System.out.println("Kaka Rosalie mentransfer uang $200 ke ade 
Faiz "); 
19  ab1.transfer( ab2 , 200 ); 
20 
21  // cetak informasi rekening setelah proses transfer 
22  System.out.println( ab1 ); 
23  System.out.println( ab2 ); 
24  } 
25 }

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

8.2 Apa itu Interface ?


Interface adalah sebuah spesifikasi umum yang dapat dimiliki oleh sebuah object atau
beberapa object yang berbeda.
Contoh sederhana adalah spesifikasi umum tentang benda-benda 2 dimensi, dimana
didalamnya berisi behaviours / perilaku dari bentuk 2 dimensi.
Spesifikasi Benda 2 Dimensi ( interface Bentuk2D ) adalah :
1. Benda 2 dimensi dapat dihitung luasnya
2. Benda 2 dimensi dapat dihitung kelilingnya
Pada program Java interface didefinisikan sebagai method-method dengan isi yang kosong
atau belum didefinisikan isi dari methodnya. Method akan didefinisikan oleh class-class yang
mengimplemen interface.
interface Bentuk2D {
float getLuas();
float getKeliling();
}

Gambar 8.1: Spesifikasi Umum / Interface Bentuk2D

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.

8.3 Sintaks dari Interface


Penamaan interface mengikuti kaidah penamaan class, yaitu nama file harus sama dengan
nama interface.
Berikut sintaks penulisan interface :
[visibility] interface InterfaceName [ extends other interfaces] {
constant declarations
member type declarations
abstract method declarations
}

Berikut contoh interface Bentuk2D.


1 /**
2  *  Nama File : Bentuk2D.java
3  */
4 public interface Bentuk2D { 

6         final float PHI = 3.14f;
7         public float getLuas(); 
8         public float getKeliling(); 
9         public String getNamaBentuk();
10 } 
11 

8.4 Class yang mengimplementasi interface


Setiap class yang mengimplementasikan suatu interface harus terdapat method-method
yang ada dalam interface .
Berikut contoh tiga class bentuk 2 dimensi yang mengimplemen interface Bentuk2D.

8.4.1 Class Lingkaran


1 /** 
2  * Nama File : Lingkaran.java 
3  */ 

5 public class Lingkaran implements Bentuk2D 
6 { 
7  private float jari = 0f; 

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 } 

8.4.2 Class PersegiPanjang

1 /** 
2  * Nama File : PersegiPanjang.java 
3  */ 

5 public class PersegiPanjang implements Bentuk2D 
6 { 
7  private float panjang = 0f; 
8  private float lebar = 0f; 

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 }

8.4.3 Class BujurSangkar


1 /** 
2  * Nama File : BujurSangkar.java 
3  */ 

5 public class BujurSangkar implements Bentuk2D 
6 { 
7  private float sisi = 0f; 

9  public BujurSangkar(float sisi ) 
10  { 
11  this.sisi = sisi; 
12  } 
13 
14  public float getLuas() 
15  { 
16  return this.sisi * this.sisi; 
17  } 
18 
19  public float getKeliling() 
20  { 
21  return 4f  * this.sisi ; 
22  } 
23 
24  public String getNamaBentuk() 
25  { 
26  return "Bujur Sangkar"; 
27  } 
28 } 
29 

8.5 Implementasi Bentuk2D


Berikut program yang akan menggunakan class-class Bentuk 2 dimensi dan interface
Bentuk2D
1 /**
2  * Nama File : Benda2D.java
3  */
4 public class Benda2D 
5 { 

7  public static void main (String args[]) 

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

Bab 9 Collection Class


Collection Class

9.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Pengertian collection
• Menggunakan class-class collection (List dan Map)

9.2 Difinisi Collection


Collection adalah sebuah object yang mewakili suatu group dari object atau elemen.

Tujuan utama dari interface Collection adalah untuk


mengirim object-object Collection agar secara umum
bisa digunakan. Object -object collection digunakan
untuk menyimpan, mengambil dan memanipulasi data.
Contoh di dunia nyata seperti Buku Telpon adalah
kumpulan dari nomor-nomor telepon dan nama-nama
pemilik telpon tersebut. Buku Telpon adalah Collection
dan nomor telpon adalah elementnya.

9.3 Interface List


Interface List adalah turunan dari Interface Collection
Class yang mengimplemen Interface List diantaranya :AbstractList, ArrayList, LinkedList,
Vector.

LP3T NurulFikri 69
Inhouse Training Java Fundamental

Contoh Program :
    //Buat list 
  List list = new LinkedList();// Doubly­linked 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
    
  // Case­insensitive sort
  Collections.sort(list, String.CASE_INSENSITIVE_ORDER);//a,C,z
    
  // Reverse­order 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

9.4 Interface Map


Map adalah object key yang di mapping ke suatu nilai (value), dalam map tidak boleh ada
key yang sama, setiap key dapat di map paling tidak ke satu nilai.
Class yang mengimplemen Interface List diantaranya :
AbstractMap, Attributes, HashMap, Hashtable,
IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

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

10.2 Apa itu exception ?


Dalam bahasa pemrograman Java, class Exception didefinisikan untuk kondisi-kondisi
kesalahan ringan (error) ketika prorgam dijalankan. Kesalahan (error) dapat ditangkap atau lebih
tepatnya di handle dengan suatu exception dan program anda dapat terus berjalan.
Contoh Program jika dijalankan akan terjadi error atau exception :
• File yang coba dibuka tidak ada
• koneksi jaringan terputus
• class yang akan di load misalkan hilang

Contoh kode program berikut akan terjadi error :


1 public class HelloWorld {
2  
3     public static void main (String args[]) {
4  
5     int i = 0;
6  
7     String hello[] = {
8             "Hallo Dunia",
9             "Maksud saya",
10             "Hallo Semua !! "
11             };
12  
13         while (i < 4) {
14             System.out.println(hello[i]);
15             i++;
16             }
17     }
18  }

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)

10.3 Handle Exception


Pemrograman bahasa Java menyediakan suatu mekanisme untuk menangkap exception
lalu membuang exception tersebut.
1. Statement try and catch
Untuk menangani (meng-handle) suatu exception, letakan kode yang menakibatkan
exception di dalam blok :
try {

// kode­kode 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

2. Menggunakan keyword finally


Keyword finally di definisikan pada block kode setiap kali di eksekusi, walaupun
exception terjadi atau tidak kode finally tetap dijalankan.
Contoh :
1 public class HelloWorld {
2  
3     public static void main (String args[]) {
4  
5     int i = 0;
6  
7     String hello[] = {
8             "Hallo Dunia",
9             "Maksud saya",
10             "Hallo Semua !! "
11             };
12  
13         while (i < 4) {
14     try {
15             System.out.println(hello[i]);
16  
17         } catch (ArrayIndexOutOfBoundsException e)
18         { System.out.println("Error ...");
19  
20         } finally {
21         System.out.println("Tulisan ini akan selalu cicetak");
22         }
23         i++;
24  
25         } // tutup dari while
26  
27     }
28 }

LP3T NurulFikri 74
Inhouse Training Java Fundamental

10.4 Kategori Exception

VirtualMachineError

OutOfMemoryError StackOverFlowError
Error

AWTError
AritmaticException

RunTimeException NullPointerException

IndexOutOfBounds
Throwable Exception
Exception
EOFExcption
IOException

FileNotFoundException

10.5 Membuat Exception


User atau programmer dapat membuat sendiri exception yaitu dengan menggunakan class
Exception yang telah disediakan.
Contoh
1 public class ServerTimeOutException extends Exception {
2  
3     private String reason;
4     private int port;
5     public ServerTimeOutException (String reason, int port) {
6         this.reason = reason;
7         this.port = port;
8     }
9  
10     public String getReason() {
11         return reason;
12     }
13     public int getPort() {
14  
15         return port;

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

10.6 Contoh Penggunaan Exception


1 // File : Excep01.java
2 import java.lang.Thread;

4 class Excep01{
5   public static void main( String[] args){
6     Excep01 obj = new Excep01();
7     obj.myMethod();
8   }//end main
9   void myMethod(){
10     Thread.currentThread().sleep(1000);
11   } //end myMethod
12 } //end class Excep01

LP3T NurulFikri 76
Inhouse Training Java Fundamental

Ketika Program di Compile akan muncul pesan Error.


$ javac Excep01.java
Excep01.java:11: unreported exception java.lang.InterruptedException; 
must be caught or declared to be thrown
    Thread.currentThread().sleep(1000);
^
Pembetulan kode program :
1 // File : Excep02.java
2 import java.lang.Thread;
3 class Excep02{
4   public static void main(String[] args){
5     Excep02 obj = new Excep02();
6     obj.myMethod();
7   }//end main
8   void myMethod() throws InterruptedException{
9     Thread.currentThread().sleep(1000);
10   }//end myMethod
11 }//end class Excep02
12 

Program masih error ketika di compile

$]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;

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

Bab 11 GUI dengan AWT


GUI dengan AWT

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.2 Apa itu AWT ?


AWT menyediakan komponen-komponen dasar GUI yang digunakan di semua applet dan
aplikasi Java. Dalam membuat program aplikasi java dengan AWT anda harus sudah mengerti
konsep dari OOP terutama jargon inheritance, karena setiap komponen GUI yang muncul dalam
layar adalah subclass dari class abstract component, sehingga setiap object graphic yang
merupakan turunan dari class-class component akan memberikan sejumlah method dan variabel
instance yang mengizinkan untuk dilakukan diakses dan melakukan operasi terhadapnya.
Container adalah suatu subclass abstract dari Component, yang mengizinkan komponen-
komponen lain berada didalamnya. Komponen-komponen dapat juga berupa container-container
yang mengizinkan komponen lain berada didalamnya. Container sangat membantu dalam
mengatur tampilan dari komponen-komponen GUI di layar. Contoh konkret dari subclass
Container adalah Panel. Window.

11.3 Cointainer

Ada dua tipe container : Window dan Panel

11.3.1 Window :
Window­window 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 masing­masing.

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 Layout Manager

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

11.4.2 Border Layout

Border Layout manager digunakan untuk melayout elemen­elemen 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

11.4.3 Grid Layout

Grid Layout menyediakan fleksibilatas  untuk menempatkan komponen­komponen 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 :

Setelah User Resize Frame

Gambar 11: 4 Grid Layout

11.4.4 Card Layout


Card Layout manager memungkinkan untuk membuat interface sebagaimana rangkaian kartu, 
salah   satu   card   akan   ditampilkan   dalam   suatu   saat   tertentu.   Method   add()   digunaka   untuk 
memasukkan setiap card ke Card Layout. Card Layout manager akan menggunakan method 
show() untuk mengganti ke card yang baru sesuai dengan permintaan.
Untuk berpindah­pindah card dalam Card Layout digunakan Event Handler, Contoh Card Layout 
akan di jelaskan pada Sesi Event Handler.

11.5 Membuat Panel dengan Layout yang kompleks

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

Bab 12 Event di AWT


Event di AWT

12.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Definisi Event
• Event Handler
• GUI behaviour

12.2 Apa sih Event ?


Ketika seorang user melakukan aksi pada suatu interface (click ataupun menekan tombol keyboard), 
akan   menyebabkan   event   terjadi.   Event   adalah   suatu   object   yang   menggambarkan   apa   yang 
sedang terjadi. 
Ketika mouse di click pada suatu komponen button akan men­generate sebuah ActionEvent dengan 
button sebagai source. ActionEvent adalah object yang didalamnya terkandung informasi tentang 
event yang telah terjadi. Didalam ActionEvent terdapat :
✔ getActionCommand : Mengembalikan nama perintah yang berhubungan dengan aksi yang 
diberikan.
✔ GetModifiers   :   Mengembalikan   setiap   modifier­modifier   yang   tertahan   selama   aksi 
dijalankan.

12.3 Event Handler

Event Handler adalah sebuah method yang menerima sebuah event dari object, menguraikan dan 
memproses dari aksi yang dilakukan oleh user terhadap suatu interface.

Frame Panel dan Frame


Event handler
Panel
Action Event
Action Handler
Button ActionPerformed (ActionEvent e) {
. . .

Gambar 12.1 : Event Handler

Pada model diatas, digambarkan event­event 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 class­class yang mengimplementasikan Listener interface.
Event­event adalah object­object 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

12.4 Kategori Method dan Interfaces

Kategori Nama Interface Method ­ Method


Action  ActionListener actionPerformed(ActionEvent)
Item ItemListener ItemStateChanged(ItemEvent)
Mouse motion MouseMotionListener mouseDragged(MouseEvent)
mouseMoved(MouseEvent)
Mouse button  MouseListener mousePressed(MouseEvent)
mouseReleased(MouseEvent)
mouseEntered(MouseEvent)
mouseExited(MouseEvent)
mouseClicked(MouseEvent)
Key KeyListener keyPressed(KeyEvent)
keyReleased(KeyEvent)
keyTyped(keyEvent)
Focus FocusListener focusGained(FocusEvent)
focusLost(FocusEvent)
Adjustment AdjustmentListener AdjustmentValueChanged(AdjustmentEven
t)
Component ComponentListener componenMoved(ComponentEvent)
componenHidden(ComponentEvent)
componenResized(ComponentEvent)
componentShown(ComponenEvent)
Window WindowListener windowClosing(WindowEvent)
windowOpened(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified(WindowEvent)
windowClosed(WindowEvent)
windowActivated(WindowEvent)
WindowDeactivated(WindowEvent)
Container ContainerListener componentAdded(ContainerEvent)
componenRemoved(ContainerEvent)
Text TextListener textValueChanged(TextEvent)

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

12.5 Event Adapter

Pemrograman Bahasa Java menyediakan class adapter yang mengimplemen­tasikan 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 method­method 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

Bab 13 Komponen AWT


Komponen AWT

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

13.4 Radio Button

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 (read­only) 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);
}

13.12 File Dialog


FileDialog adalah sebuah implementasi dari memilih beberapa file. FileDialog  adalah window yang 
berdiri sendiri, dengan element didalamnya dan mengizinkan user untuk browse ke file system dan 
memilih file tertentu untuk dilakukan operasi

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 pull­down.

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);

13.15 Menu Item


Komponen MenuItem adalah text yang berada pada Menu (Node pada Tree). 

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

Bab 14 GUI dengan Swing


GUI dengan Swing

14.1 Tujuan

Setelah anda mempelajari Bab ini anda diharapkan mengetahui :


• JFC ( Java Fondation Class)
• Menggunakan Class-Class Swing
• Layout dengan JFC

14.2 Java Fondation Class

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 komponen­komponen GUI oleh JFC.
Swing   menyediakan   komponen­komponen   dasar   GUI   dari   button   hingga   tabel,   Swing   juga 
mensupport Look and Feel pada komponen­komponen dasar GUI.

Package untuk Swing

Package­package standar yang menggunakan dalam membuat program dengan Swing adalah:
• Swing
• Pluggable Look­and­Feel ( PLAF)
• Drag­and­Drop 
• Accessibility
• 2D graphics

14.3 Menggunakan Class-Class Swing

Sebagian Class­Class 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 class­class Swing cukup dengan menuliskan kode berikut

import java.swing.*;

14.4 Kelas Hirarki Swing

Gambar 14.1 : Hirarki Swing

14.5 Menambahkan Component 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);

Container   Swing   (  JWindow,   JFrame   ,   JDialog   ,   JApplet  )   menggunakan   sebuah 


contentPane untuk menambahkan layout­layout dan komponen, yaitu dengan memanggil method 
getContentPane().

14.6 Menambahkan Border pada Komponen

Class Border tersedia di package  javax.swing.border.  Gunakan method  setBorder()  pada 


komponen. Gunakan juga Class BorderFactory untuk membuat sebuah komponen border.

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

14.7 Setting ShortCut Key

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

14.8 Menggunakan Tabbed Panes

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

14.9 Membuat Menu

Langkah­langkah 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   object­object   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;

LP3T NurulFikri 100


Inhouse Training Java Fundamental

        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 :

LP3T NurulFikri 101


Inhouse Training Java Fundamental

Gambar 14.7: Menu Pada Frame

14.10 Layout dengan JFC

Layout manager saat ini masih menggunakan class­class 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);

    }

LP3T NurulFikri 102


Inhouse Training Java Fundamental

Gambar 14.8: Box Layout

14.11 Event dengan Swing

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

LP3T NurulFikri 103


Inhouse Training Java Fundamental

Bab 15 Object Stream


Object Stream

15.1 Tujuan

Setelah anda mempelajari Bab ini anda diharapkan mengetahui :


• Class Hirarki Stream
• Cara Menggunakan Stream
• Cara membaca input dari Keyboard
• Input dan Output File

15.2 Apa itu Stream ?

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 
class­class input dan OutputStream adalah fondasi dari class­class output.

15.3 Hirarki Class Stream

Gambar 15.1 : Hirarki Class InputStream

LP3T NurulFikri 104


Inhouse Training Java Fundamental

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 

15.4 Cara Menggunakan Stream

Berikut beberapa method pada class InputStream

LP3T NurulFikri 105


Inhouse Training Java Fundamental

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

15.4.1 FileInputStream dan FileOutputStream

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”);

15.4.2 BufferedInputStream dan BufferedOutputStream

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. 

15.4.3 DataInputStream dan DataOutputStream

Class   Stream   ini   berfungsi   untuk   melakukan   filter   pada   stream,   sehingga   memungkinkan   untuk 
membaca dan menulis tipe data primitif.

LP3T NurulFikri 106


Inhouse Training Java Fundamental

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 8­bit signed­value 
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

15.4.4 ByteArrayInputStream dan ByteArrayOutputStream

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

15.4.5 Class Reader dan Writer

Class Reader dan Writer adalah abstract class yang men­support 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.

15.5 Membaca input dari Keyboard

Berikut contoh kode program input lewat keyboard :

/**
 * Nama File : IOApp.java
 **/

LP3T NurulFikri 107


Inhouse Training Java Fundamental

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

15.6 Input dan Output File

Java   men­support   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.*;

LP3T NurulFikri 108


Inhouse Training Java Fundamental

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

LP3T NurulFikri 109


Inhouse Training Java Fundamental

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

LP3T NurulFikri 110


Inhouse Training Java Fundamental

    {
     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

LP3T NurulFikri 111


Inhouse Training Java Fundamental

Bab 16 Thread
Thread

16.1 Tujuan

Setelah anda mempelajari Bab ini anda diharapkan mengetahui :


• Definisi thread
• Membuat thread
• Synchronized

16.2 Ada apa dengan Thread ?

Misalkan   sebuah   komputer   sederhana   yang   mempunyai   CPU   dimana   proses   komputasi 
berlangsung, ROM (read­only memory) yang berisi program­program 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.

16.4 Mematikan Thread

Suatu thread dapat dihentikan dengan cara membuat flag yang mengindikasikan suatu method run() 

LP3T NurulFikri 112


Inhouse Training Java Fundamental

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, Kode­kode 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 kode­kode 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.

LP3T NurulFikri 113


Inhouse Training Java Fundamental

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

16.5 Membuat thread Sendiri

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");

LP3T NurulFikri 114


Inhouse Training Java Fundamental

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

LP3T NurulFikri 115


Inhouse Training Java Fundamental

   });
  }
  public static void main(String[] args) {
    Hitung3 hint = new Hitung3();
    hint.run(new Hitung3(), 300, 100);
}
}

LP3T NurulFikri 116


Inhouse Training Java Fundamental

Bab 17 Pengenalan JDBC


Pengenalan JDBC

17.1 Tujuan
Setelah anda mempelajari Bab ini anda diharapkan mengetahui :
• Definisi dan Pengertian database
• Koneksi Database dengan Java (JDBC)
• Query Database
• Object ResultSet

17.2 Apa itu Database


Database   adalah   kumpulan   informasi   /   data   yang   saling   terhubung.   DBMS   (Database 
Management   System)   adalah   sebuah   piranti   lunak   dimana   didalamnya   menyediakan   proses 
untuk   membaca   atau   mengambil,   mengubah   dan   menambahkan   data   ke   dalam   sebuah 
database.

Saat ini ada banyak DBMS, diantaranya :
• PostgreSQL
• MySql
• MS­SQL Server
• MS­Acces
• Oracle
• Sybase
• Informix

17.3 Java Database Connectivity ( JDBC)

JDBC   adalah   sebuah   Java   API  (Application   Programming   Interface)  yaitu   suatu   kumpulan 
dokumen   dari   interface­interface   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   aplikasi­aplikasi   Java   untuk   mengakses 
sistem database. 

17.4 Arsitektur JDBC

Dalam JDBC API didefinisikan kumpulan interface yang meng­encapsulasi fungsi­fungsi utama 
suatu database, didalamnya temasuk menjalankan query, memproses result data, dan juga 
informasi konfigurasi dari masing­masing vendor database yang disebut JDBC driver, yang 

LP3T NurulFikri 117


Inhouse Training Java Fundamental

merupakan kumpulan dari class yang meng­implement interfaces dari suatu sistem database 
tertentu.

Gambar berikut mengilustrasikan bagaimana suatu aplikasi menggunakan JDBC yang dapat 
berinteraksi dengan lebih dari satu database. 

17.5 Koneksi ke Database

Tahapan koneksi ke database dengan JDBC :

1. Me­load 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   class­class 
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 masing­masing database.
Berikut pernyataan untuk me­load sebuah Driver JDBC  dengan database PostgreSql :

Class.forName ( org.postgresql.Driver );

LP3T NurulFikri 118


Inhouse Training Java Fundamental

Berikut daftar JDBC Driver :

Database Driver URL


MySQL org.gjt.mm.mysql.Driver
jdbc:mysql:3306//namadb      

PostgreSql org.postgresql.Driver
jdbc.postgresql://localhost:5432/namadb      

Oracle com.jdbc.driver.OracleDriver
jdbc:oracle:thin:@site:port:namadb

ODBC­Bridge sun.jdbc.odbc.JdbcOdbcDriver
jdbc:odbc:datasource;odbcoptions

HSQLDB org.hsqlb.jdbc.Driver
jdbc:hsqldb:hsql//localhost/dbname

17.6 Object Connection

Connection conn = DriverManager.getConnection(URL, user , password)

Parameter   URL,   user   dan   password   berbeda   untuk   masing­masing   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.*;

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");

LP3T NurulFikri 119


Inhouse Training Java Fundamental

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 }

Untuk menjalankan  program  dimana database Connection  menggunakan  JDBC  Driver  anda 


membutuhkan library (berupa file dengan ektensi *.jar ) yang terkait dengan database. Library 
database bisa di download di website vendor database.
Perintah menjalankan program diatas :

$ java ­cp .:postgresql.jar DbConnect

17.7 Query SQL

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 :

• Object  Statement  dipanggil   dengan   menjalankan   method  createStatement()  dari   object 


Connection

• Object  PreparedStatement  dipanggil dengan menjalankan method prepareStatement() dari 


object Connection. Dengan Object PreparedStatement kita bisa menggunakan method untuk 
mengirimkan query dengan input parameter

•   Object  CallableStatement  dipanggil dengan menjalankan method  prepareCall()  dari object 


Connection.  Dengan   Object   CallableStatement   kita   menggunakan   store   procedure.   Juga 
dapat menggunakan parameter input dan output pada CallableStatement.

Berikut langkah­langkah yang dibutuhkan untuk menjalankan query ke database :

1.  Buat object Statement untuk kirim SQL ke database

Statement stmt = con.createStatement();

LP3T NurulFikri 120


Inhouse Training Java Fundamental

2. Jalankan method  executeQuery()  dari object Statement dan menyimpan hasilnya ke object 


ResultSet

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”);
}

17.8 Tabel Tipe Data, Java Type dan Method

SQL Data Type Java Type getXXX (Method)


CHAR String getSring()
VARCHAR String getString()
LONGVARCHAR String getString()
NUMERIC java.math.BigDecimal getBigDecimal()
DECIMAL java.math.BigDecimal getBigDecimal()
BIT Boolean (boolean) getBoolean()
TINYINT Integer ( byte) getByte()
SMALLINT Integer (short) getShort()
INTEGER Integer (int) getInt()
BIGINT Long (int) getLong()
REAL Float (float) getFloat()
FLOAT Double (double) getDouble()
DOUBLE Double (double) getDouble()
BINARY byte[] getBytes()
VARBINARY byte[] getBytes()
LONGVARBINARY byte[] getBytes()
DATE java.sql.Date getDate()
TIME  java.sql.Time getTime()
TIMESTAMP java.sql.Timestamp getTimestamp()
BLOB java.sql.Blob getBlob()
CLOB java.sql.Clob getClob()

Berikut kode program untuk menampilkan hasil query select

1 /**
2  * File Name : QueryApp.java
3  **/
4 import java.sql.*;

LP3T NurulFikri 121


Inhouse Training Java Fundamental

5 import java.util.*;

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     }

LP3T NurulFikri 122


Inhouse Training Java Fundamental

56 }

17.9 Perintah SQL dengan JDBC : INSERT, UPDATE, DELETE

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

Langkah­langkah   melakukan   query   INSERT,   UPDATE   dan   DELETE   dengan   menggunakan 


JDBC API

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.*;

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             

LP3T NurulFikri 123


Inhouse Training Java Fundamental

18        Statement stmt = con.createStatement();
19    stmt.executeUpdate("INSERT INTO produk VALUES 
(3,'MTR0001','Motor Honda Supra­X',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

PreparedStatement  merupakan object yang mirip dengan  Statement, yaitu untuk mengirimkan 


perintah SQL ke database. Perbedaanny, didalam statement perintah SQL bersifat statis, yaitu 
nilai yang dimasukkan tidak dapat berubah. Sedangkan didalam  PreparedStatement, perintah 
SQL memiliki nilai yang dapat berubah, sesuai dengan parameter yang diberikan.

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 ' ? ' .

Langkah­langkah   menggunakan   object   PreparedStatement   untuk   melakukan   query   INSERT, 


UPDATE, DELETE :

1. Buat object PreparedStatement untuk mengirim perintah SQL ke database :
INSERT :
PreparedStatement   pstmt   =   con.prepareStatement(“INSERT   INTO   produk 
VALUES (?,?,?)”;

LP3T NurulFikri 124


Inhouse Training Java Fundamental

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.*;

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");

LP3T NurulFikri 125


Inhouse Training Java Fundamental

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 

LP3T NurulFikri 126


Inhouse Training Java Fundamental

DAFTAR PUSTAKA

1. Tutorial dan Dokumentasi Java, http://java.sun.com
2. Modul Java Edisi I Thn. 2002, LP3T NurulFikri

LP3T NurulFikri 127

Anda mungkin juga menyukai