Penyusun:
• Cahyadi Lugito, S.Kom, MCP.
• Kiswono Prayogo, S.Kom.
• Agustinus Aruna
2011
1
Daftar Isi
Daftar Revisi...................................................................................5
Bab 1: Java Basic Concept.............................................................6
Tujuan........................................................................................6
Pengantar....................................................................................6
Java Technology.........................................................................6
Keyword.....................................................................................7
Comment....................................................................................7
Variable......................................................................................7
Data Type...................................................................................8
Operator.....................................................................................8
Percabangan...............................................................................9
Perulangan................................................................................10
Array........................................................................................10
Input dari Keyboard.................................................................12
Latihan.....................................................................................13
Bab 2: OOP with Java (Part 1)......................................................15
Tujuan......................................................................................15
OOP (Object Oriented Programming).....................................15
Object.......................................................................................15
Class.........................................................................................16
Method.....................................................................................18
Access Modifier.......................................................................18
Constructor...............................................................................18
Inheritance................................................................................19
Keyword “super” and “this”....................................................20
Latihan.....................................................................................21
Bab 3: OOP with Java (Part 2)......................................................23
Tujuan......................................................................................23
Encapsulation...........................................................................23
Polymorphism..........................................................................24
The ”static” keyword...............................................................26
Latihan.....................................................................................28
Bab 4: OOP with Java (Part 3)......................................................30
Tujuan......................................................................................30
2
Abstraction...............................................................................30
The “final” keyword................................................................30
Interface...................................................................................31
Package....................................................................................32
Java Inner Class.......................................................................33
Latihan.....................................................................................34
Bab 5: Generics.............................................................................37
Tujuan......................................................................................37
Generic Class...........................................................................37
Nested Generics.......................................................................39
Generic Method.......................................................................39
Generic Interface......................................................................40
Wildcard...................................................................................41
Bounded Wildcard....................................................................42
Generic Class Inheritance........................................................42
Latihan.....................................................................................43
Bab 6: Collections.........................................................................44
Tujuan......................................................................................44
Comparable..............................................................................44
Collection.................................................................................44
List...........................................................................................45
Iterator......................................................................................46
Bab 7: GUI....................................................................................47
Tujuan......................................................................................47
Java AWT.................................................................................47
Layout Management................................................................49
Java Swing...............................................................................54
Latihan.....................................................................................56
Bab 8: Event Handling..................................................................57
Tujuan......................................................................................57
Event Handler..........................................................................57
ActionListener dan ItemListener.............................................58
Standard AWT Event Listeners (Listener and Adapter)...........60
Using Event Handler in NetBeans IDE...................................61
Latihan.....................................................................................64
Bab 9: Graphics............................................................................67
Tujuan......................................................................................67
3
Canvas......................................................................................67
Graphics, Paint and Event Handler..........................................68
Using Graphics in NetBeans IDE............................................69
Latihan.....................................................................................72
Bab 10: Multithreading and Java Applet......................................74
Tujuan......................................................................................74
Thread and Multithreading......................................................74
Java Applet...............................................................................76
Latihan.....................................................................................78
Bab 11: File Stream......................................................................81
Tujuan......................................................................................81
InputStream and OutputStream................................................81
FileOutputStream and DataOutputStream...............................81
FileInputStream and DataInputStream....................................82
SequenceInputStream..............................................................83
Serializable and ObjectOutputStream......................................84
ObjectInputStream...................................................................85
File Dialog...............................................................................86
Latihan.....................................................................................87
Bab 12: JDBC...............................................................................89
Tujuan......................................................................................89
JDBC Concept.........................................................................89
Using ODBC............................................................................90
Connect and Select (Using ODBC - Access)...........................92
Insert, Update and Delete.........................................................94
Using MySQL JDBC Connector..............................................94
Connect and Select (Using MySQL).......................................96
Latihan.....................................................................................97
Daftar Referensi............................................................................99
4
Daftar Revisi
2010-08-10 Cahyadi Lugito / Draft 1
2010-08-11 Kiswono Prayogo / Formatting
2010-12-03 Kiswono Prayogo / Draft 2
2011-07-06 Kiswono Prayogo / Draft 3
2011-08-19 Agustinus Aruna / Draft 4
2012-02-17 Kiswono Prayogo / Generics dan Collections
5
Bab 1: Java Basic Concept
Tujuan
Praktikan mampu mengetahui dan menggunakan kontruksi-
konstruksi dasar dan elemen-lemen pembentuk bahasa Java 6.
Pengantar
Java adalah bahasa pemrograman seperti halnya dengan
bahasa pemrograman lain seperti Pascal, Basic, dan C. Java juga
dapat digunakan untuk membuat aplikasi web yang saat ini terus
berkembang. Java dikembangkan oleh Sun Microsystem pada
Agustus 1991 dengan nama semula Oak dan merupakan hasil
perpaduan dari berbagai bahasa pemrograman seperti C, C++,
Objective-C, Smalltalk dan CLISP.
Kelebihan dari Java adalah program java dapat berjalan pada
berbagai platform (multi platform). Kompilasi code Java
menggunakan JVM (Java Virtual Machine) yang nantinya JVM
tersebut akan merubah intermediate code menjadi bytecode
(machine code). Pada Java 2, interpreter Java terkemas dalam
sebuah paket yang disebut JRE (Java Runtime Environment).
Pada praktikum ini kita akan menggunakan IDE NetBeans
versi 7. Namun praktikan dapat menggunakan IDE yang lain seperti
Visual J++, Notepad++, Eclipse dan sebagainya.
Java Technology
Java sebagai salah satu bahasa pemrograman baru
menjanjikan banyak kemudahan bagi programer junior maupun
senior (selama menggunakan IDE handal layaknya NetBeans). Java
adalah bahasa pemrograman berorientasi objek yang
dikembangkan oleh Sun Microsystems. Bahasa ini dikembangkan
dengan model yang mirip dengan bahasa C++ dan Smalltalk, namun
dirancang agar lebih mudah dipakai dan platform independent,
yaitu dapat dijalankan di berbagai jenis sistem operasi dan
6
arsitektur komputer. Bahasa ini juga dirancang untuk pemrograman
di Internet sehingga dirancang agar aman dan portabel. Java telah
digunakan dalam banyak hal dan telah membuktikan
keberadaannya pada abad ke 21. Saat ini, Java digunakan pada
bermacam jenis aplikasi seperti aplikasi mobile phone (J2ME),
aplikasi embedded, aplikasi keuangan, desktop, simulasi pesawat,
pemrosesan citra, game, aplikasi perusahaan terdistribusi yang
disebut J2EE dan masih banyak lagi.
Keyword
Berikut adalah kata-kata kunci yang ada pada Java. Kata
kunci tidak dapat digunakan sebagai pengenal (identifier) ataupun
sebagai nilai variable dalam pemrograman Java.
abstract byte char continue
else finally goto Import
interface new private return
super synchronized throws void
boolean case class do
extends float if instanceof
long null protected short
switch this transient volatile
break catch const double
final for implements Int
native package public static
strictfp throw try While
Comment
Comment merupakan bagian dari source code yang tidak
dijalankan tetapi hanya digunakan untuk dokumentasi. Sama
seperti pada bahasa C, comment pada bahasa Java dimulai dengan
“//” diakhiri dengan enter atau dimulai dengan “/*” dan diakhiri
oleh “*/”.
Variable
Variabel digunakan untuk menampung nilai pada
pemrograman. Kita tidak dapat menyimpan tipe bernilai angka ke
variabel bertipe nilai huruf ataupun sebaliknya, sehingga tipe dan
nilai variable harus sesuai. Variabel merupakan container yang
digunakan untuk menyimpan suatu nilai pada sebuah program
dengan tipe tertentu. Untuk mendefinisikan variabel, sama seperti
7
pada bahasa pemrograman keluarga C lainnya, kita dapat
menuliskan tipe data dan identifier untuk menamai variabel
tersebut.
Data Type
Pada Java memiliki 8 jenis tipe data primitif, antara lain
• Tipe bilangan bulat : long, int, short, byte
• Tipe bilangan riil : float, double
• Tipe data karakter : char
• Tipe data boolean : boolean
Operator
• Operator Aritmatika
8
• Operator Logika
• Operator Relasi
Percabangan
• IF-ELSE
if (kondisi_1) {
// instruksi jika kondisi_1 true
if (kondisi_2) ;// instruksi jika kondisi_2 true
else ; // instruksi jika kondisi_2 false
} else {
// instruksi jika kondisi_1 false
if (kondisi_3) ; // instruksi jika kondisi_3 true
else if(kondisi_4) ;// instruksi jika kondisi_3 false dan
kondisi_4 true
}
• SWITCH-CASE
switch(ekspresi) {
case nilai_1:
// instruksi bila ekspresi bernilai nilai_1
break;
case nilai_2:
// instruksi bila ekspresi bernilai nilai_2
case nilai_3:
// instruksi bila ekspresi bernilai nilai_2 atau nilai_3
break;
default:
// instruksi bila ekspresi tidak selain nilai di atas
}
9
Perulangan
• FOR
for ( /* 1 */ ; /* 2 */ ; /* 3 */ ) {
/* 4 */
if( /* 5 */ ) continue;
if( /* 6 */ ) break;
/* 7 */
}
/* 8 */
• WHILE
while (kondisi) {
// blok_pernyataan;
}
• DO-WHILE
do{
// pernyataan_pernyataan;
} while(kondisi);
Array
• Array 1 Dimensi
int[] angka = new int[5];
int[] angka = {5, 3, 23, 99, 2};
• Array 2 Dimensi
tipeData[][] nama_variabel = new tipeData[jumlah_baris]
[jumlah_kolom];
• Array Dinamis
Untuk dinamis kita dapat menggunakan class Vector atau
class StringTokenizer yang terdapat pada class Java.util.
Penggunaan keduanya dapat kita lihat pada link
10
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html,
http://java.sun.com/javase/7/docs/api/java/util/StringTokenizer.ht
ml
11
Pertanyaan: contoh array di atas mirip dengan bentuk
matriks pada matematika, apa kalian masih ingat apa itu bentuk
matriks? Bisakah kalian membuat penjumlahan 2 matriks yang
terdiri dari angka acak seperti contoh di atas?
12
public static void cetak(int jenis, int inputan) {
System.out.println("");
if(jenis==1) {
for(int baris=0; baris<inputan; baris++) {
for(int kolom=0; kolom<inputan; kolom++) {
System.out.print("*");
}
System.out.println("*");
}
} else if(jenis==2) {
for(int baris=0; baris<inputan; baris++) {
for(int kolom=0; kolom<baris; kolom++) {
System.out.print("*");
}
System.out.println("*");
}
} else {
System.out.println("Unknown");
}
}
}
==Aplikasi Kotak==
Masukkan angka: 4
*****
*****
*****
*****
Latihan
1. Buat program kalkulator.java sederhana, tetapi
menggunakan menu. Contoh:
======================
Kalkulator Sederhana
======================
Menu:
1. Penambahan (+)
2. Pengurangan (-)
3. Perkalian (*)
4. Pembagian (/)
5. Modulus (%)
6. Exit
13
Hasil Penjumlahan : 9
(Bila ditekan Enter akan kembali ke menu awal )
14
Bab 2: OOP with Java (Part 1)
Tujuan
Praktikan mampu mengetahui dan menggunakan fitur-fitur
object-oriented dasar bahasa Java.
Object
Elemen dasar dari konsep OOP adalah object. Object
merupakan abstraksi sesuatu dalam dunia nyata, misalnya:
manusia, binatang, aktivitas, bussiness system atau workflow.
Sebuah object dalam OOP terdiri dari 2 elemen penyusun.
15
• Attribut (state, data member), merupakan ciri-ciri yang
melekat pada suatu object.
Method:
• Nyalakan mesin
• Berjalan
• Belok
• Mengerem
• Menambah kecepatan
Object mahasiswa:
Attribut:
• NPM
• Nama mahasiswa
• Fakultas
• Jurusan
• Nilai ujian
Method:
• Terima materi
• Melihat nilai
• Melihat tunggakan spp
• serah tugas
Class
Setelah kita memahami tentang object yang masih memiliki
bentuk yang abstrak, maka kita akan melanjutkan ke pembahasan
class. Dikatakan abstrak karena masih belum spesifik untuk
siapakah object tersebut ditujukan, misalnya object sepeda motor
ditujukan untuk jenis sepeda motor apa (honda beat, yamaha
16
yupiter, kawasaki ninja). Ketiga jenis motor tersebut akan menjadi
class untuk object sepeda motor.
Contoh berikutnya misalnya object mahasiswa yang ditujukan
untuk seorang mahasiswa. Sebagai contoh mahasiswa dengan NPM
08120100015, maka dapat dibentuk class mahasiswa dengan NPM
08120100015 yang merupakan spesifikasi atau implementasi dari
object mahasiswa.
Sebuah object yang sudah dibentuk atau digambarkan perlu
didefinisikan menjadi sebuah class. Class merupakan cetak biru
dari object. Berikut contoh sintaks dari class mahasiswa dan class
Main-nya. Class main digunakan untuk melakukan instanisasi class
Mahasiswa, sehingga attribut dan method pada class Mahasiswa
dapat digunakan.
package modul2a;
import java.io.*;
class Mahasiswa{
private String npm, nama, fakultas, jurusan;
private int nTugas, nUjian;
public void setNPM(String npm) {
this.npm = npm;
}
public String getNPM() {
return npm;
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
Mahasiswa mhs = new Mahasiswa();
System.out.print("Masukkan NPM: ");
mhs.setNPM(br.readLine());
System.out.println(mhs.getNPM());
}
}
17
Method
Secara umum method terdiri dari 2 jenis:
Access Modifier
Access modifier adalah pengaturan hak akses pada class
maupun method. Ada 4 jenis access modifier.
Constructor
Constructor adalah method yang dapat digunakan untuk
memberikan nilai awal saat object diciptakan. Constructor
otomatis dipanggil/dijalankan pada saat di-instance pada sebuah
18
class.
Sifat constructor:
Inheritance
Inheritance merupakan proses pewarisan data dan method
dari suatu class yang telah ada kepada class yang baru. Class yang
merwariskan disebut dengan superclass/parent class/baseclass,
sedangkan yang mewarisi disebut subclass/child class/derived
class. Keuntungan dari inheritance adalah mengurangi penggunaan
code yang berulang (reuse), karena sub class dapat menggunakan
attribute dan method yang ada pada superclass-nya.
19
Untuk menerapkan inheritance pada java menggunakan
statement extends.
namaSubClass extends namaSuperClass {
// definisi class
}
20
this.panjang2 = panjang2;
}
}
class Main{
public static void main(String[] args) {
PersegiPanjang pp = new PersegiPanjang("Square", 10, 8);
System.out.println("Panjang : " + pp.panjang);
System.out.println("Lebar : " + pp.lebar);
System.out.println("Luas : " + pp.Luas());
}
}
Latihan
1. Buatlah sebuah program yang menerapkan constructor dan
inheritance yang kita pelajari pada modul ini, dengan
ketentuan sebagai berikut:
• super class dengan nama BangunRuang yang memiliki attribut
panjang1, panjang2, panjang3.
• sub class Kubus yang mempunyai attribut sisi, dan method
LuasPermukaan dan Volume.
• Rumus luas permukaan kubus = 6 x sisi x sisi
• Rumus volume kubus = sisi x sisi x sisi
• sub class balok yang mempunyai attribut panjang, lebar,
tinggi, dan method LuasPermukaan dan Volume.
• Rumus luas permukaan balok = 2 x ((panjang x lebar) +
(panjang x tinggi) + (lebar x tinggi))
• Rumus volume balok = panjang x lebar x tinggi
• sub class Tabung yang memiliki attribut jari-jari, tinggi,
dan method LuasPermukaan dan Volume. (π = 3,14)
• Rumus luas permukaan tabung = (2 x π x jari-jari x tinggi)
+ (2 x π x jari-jari x jari-jari)
21
• Rumus volume tabung = π x jari-jari x jari-jari x tinggi
• class Main yang berisi menu yang memanggil fungsi
LuasPermukaan dan Volume dari subclass
contoh:
======================
Perhitungan Bangun Ruang
======================
Menu:
1. Kubus
2. Balok
3. Tabung
4. Exit
Masukkan pilihan anda : 2
2. Sebuah rental DVD memiliki desain class untuk data DVD Film
dan DVD Musik sebagai berikut:
Class DVDFilm dengan atribut:
title : judul film
artist : nama-nama pemain di dilm tersebut
director : nama sutradara film tersebut
publisher : yang memproduksi film tersebut
category : SU = Semua Umur, D = Dewasa, R = Remaja, A = Anak
stock : jumlah stok vcd film tersebut
22
Bab 3: OOP with Java (Part 2)
Tujuan
Praktikan Mampu mengetahui dan mempergunakan konsep
object-oriented lanjutan bahasa Java.
Encapsulation
Inti dari konsep encapsulation adalah menyembunyikan
kompleksitas suatu class dari class yang lain yang mengaksesnya.
Dengan menggunakan public, protected, private dan package
dapat digunakan untuk memilih data mana saja yang ditampilkan
dan disembunyikan.
import java.io.*;
class Manusia {
private String nama, jns_kel;
private double tinggi, berat;
public Manusia(String nama, String jns_kel, double tinggi,
double berat) {
this.nama=nama;
this.jns_kel=jns_kel;
this.tinggi=tinggi;
this.berat=berat;
}
}
class Mahasiswa extends Manusia {
private String npm, asalSMU, fakultas, jurusan;
private int nTugas, nUjian;
public Mahasiswa(String nama, String jns_kel, double tinggi,
double berat, String npm, String asalSMU,
String fakultas, String jurusan,
int nTugas, int nUjian) {
super(nama, jns_kel, tinggi, berat);
}
}
23
protected, private dan package?
Polymorphism
Polymorphism berarti sebuah object dapat memiliki berbagai
bentuk, yaitu dengan memiliki nama yang sama, tetapi behaviour
yang berbeda. Sebuah object dapat memiliki berbagai bentuk baik
dari class itu sendiri ataupun dari superclass-nya. Ada 2 macam
bentuk polymorphism, yaitu:
24
this.namaKar = nama;
}
public String getNama() {
return "Nama Karyawan : " + namaKar;
}
}
class Main{
public static void main(String[] args) {
Mahasiswa mhs = new Mahasiswa();
Karyawan kar = new Karyawan();
Manusia mns;
mns = mhs;
mns.setNama("Jesicca Stephanie");
System.out.println(mns.getNama());
mns = kar;
mns.setNama("Handy Gunawan");
System.out.println(mns.getNama());
}
}
25
this.tinggi=tinggi;
this.berat=berat;
}
public String cetak() {
return("Nama: " + nama + "\nJenis Kelamin: " + jns_kel +
"\nTinggi: " + tinggi + "\nBerat: " + berat);
}
}
26
public class TesVarStatic {
public static void main(String[] args) {
System.out.println(Point.y);
//memanggil variabel class tanpa instance class
Point.y=10;
//men-set ulang variabel class
Point p = new Point();
//membuat instance class
System.out.println(p.y + 5);
//memanggil ulang variabel y
}
}
27
System.out.println(x1.getX()); //cetak x pada object1 = 10
System.out.println(x2.getX()); //cetak x pada object2 = 20
System.out.println(x2.getY()); //cetak y pada object2 = 30
System.out.println(Point.y);
//cetak varriabel class y tanpa instance = 30
Point.y = 7; //set ulang variabel class (y=7)
System.out.println(Point.y); //cetak y yang diset ulang = 7
x1.setY(Point.y + 50); //set y pada object1 (y= 7 + 50)
System.out.println(x1.getY()); //cetak y pada object2 = 57
}
}
Latihan
PT. Biting Bersatu memiliki 50 orang pegawai, pegawainya
tersebut terbagi menjadi 2 status kepegawaian, yaitu sebagian
pegawai tetap dan sebagian yang lain (sisanya) adalah pegawai
kontrak. Secara umum perbedaan antara keduanya adalah pegawai
tetap selain mendapatkan gaji juga mendapatkan tunjangan yang
28
besarnya 500 ribu, sedangkan pegawai kontrak hanya mendapatkan
gaji saja. Dari kasus diatas, dapat digambarkan class-class pegawai
sebagai berikut:
Class PegawaiKontrak, dengan atribut:
NIK : no pegawai kontrak (diinputkan)
Nama : nama pegawai (diinputkan)
MasaKontrak : lama kontrak pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
UangMakan : besarnya 8 ribu dikali jumlah kehadiran (tidak
diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap bulan
(diinputkan)
29
Bab 4: OOP with Java (Part 3)
Tujuan
Praktikan mampu mengetahui dan mempergunakan fitur
object-oriented sesuai tujuan pemrograman object-oriented
dengan menggunakan bahasa Java.
Abstraction
Abstract class digunakan sebagai model atau acuan
(superclass) bagi penurunan untuk sub-sub class-nya. Pada
umumnya abstract class hanya berisi variable-variabel umum dan
abstract method tanpa body, kemudian baru pada class turunannya
mendefinisikan secara detil body methodnya.
Untuk membuat abstract class dan abstract method
menggunakan keyword abstract. Berikut contoh untuk
mendefinisikan abstract class, abstract method, non abstract
method.
public abstract class Manusia{
protected String nama, jns_kel;
public Manusia() { }
public abstract String setNama(String nama);
public abstract void getNama();
public String cetak() {
return this.nama + "/n" + this.jns_kel;
}
}
30
}
public final boolean isValid(String n, String p) {
if(n.equals(username) && p.equals(password)) {
return true;
}
else return false;
}
}
Interface
Interface berisi sekumpulan konstanta dan atau deklarasi
method tanpa menyertakan body methodnya yang dapat digunakan
pada sejumlah class. Sekilas Interface mirip dengan Abstract Class
karena sama-sama menentukan bentuk method untuk subclass-nya.
Untuk mengetahui perbedaan keduanya, kita amati table
perbedaan Interface dengan Abstract Class berikut:
• Abstract Class
◦ Dapat berisi abstract method dan non abstract method.
◦ Dapat berisi variabel instant dan konstanta .
◦ Menggunakan extends .
◦ Pada 1 class pewarisan hanya dapat mewarisi 1 abstract
class.
◦ Abstract method harus di-override pada class turunan,
sedagkan yang bukan abstract method tidak harus dituliskan
pada class turunannya.
• Interface
◦ Hanya berisi abstract method saja.
◦ Hanya dapat berisi konstanta saja .
◦ Menggunakan implements .
◦ Pada 1 class pewarisan dapat mewarisi lebih dari 1
interface .
◦ Semua method harus diturunkan pada class implement-nya
31
harus terletak pada file yang sama?
Package
Sejumlah class yang terkait pada Java biasa dikelompokkan
dalam sebuah unit yang disebut package (paket). Pada NetBeans
kita dapat mendeklarasikan JavaPackage dalam 1 project, atau
dengan kata lain 1 project dapat memiliki 2 atau lebih package.
Untuk membuat atau mendeklarasikan package dengan
menggunakan keyword package. Berikut contoh membuat class
Mahasiswa08 dan class Mahasiswa09 dalam package modul2c.
package modul2c;
public class Mahasiswa08 {
public void getData() {
System.out.println("Mahasiswa SI 2008");
}
}
package modul2c;
public class Mahasiswa09 {
public void getData() {
System.out.println("Mahasiswa SI 2009");
}
}
32
Java Inner Class
Pada pemrograman java tingkat mahir, banyak programmer
yang menggunakan metode ini untuk melakukan develop di dalam
program yang dibuat. Java inner class atau Nested Class (class
bersarang) memberikan relasi antar class yang ada di dalamnya
(outerClass dengan innerClass). Berbeda dengan konsep yang
selama ini kita pakai di mana class yang satu dengan yang lain
tidak terletak bersarang (perhatikan contoh-contoh latihan
sebelumnya). Java inner class ini secara umum dapat disebut juga
class di dalam class.
Sintaks penggunaan java inner class adalah sebagai berikut:
[access_modifiers] class OuterClassName {
// body code...
[access_modifier] class InnerClassName {
// body code...
}
}
33
jelas hubungan akses antara outer class dengan inner classnya kita
lihat contoh berikut:
public class ObjectOuter {
private void getNameOuter() {
//method pada outer class
}
class InnerLv1{
private void getNameLv1() {
//method pada inner class level 1
}
class InnerLv2{
void callMethod() {
getNameOuter(); //memanggil method outer classnya
getNameLv1();
}
}
}
}
class TestNestedClass{
public static void main(String[] args) {
ObjectOuter obj = new ObjectOuter();
ObjectOuter.InnerLv1 inner1 = obj.new InnerLv1();
ObjectOuter.InnerLv1.InnerLv2 inner2 = inner1.new InnerLv2();
inner2.callMethod();
}
}
Latihan
1. Buatlah sebuah abstract class Login dimana pada class
tersebut terdapat 2 method, yaitu validasi() dan cekData().
Buatlah sebuah class yang mengimplementasikan interface
tersebut yaitu class DataLogin dengan penjelasan sebagai
berikut:
• Method validasi(): bertipe boolean, digunakan untuk
memastikan bahwa username dan password tidak boleh
kosong (wajib diisi), tentukan sendiri parameternya.
• Method cekData(): bertipe boolean, digunakan untuk
mengecek username dan password apakah cocok dengan
yang terdapat di atribut class DataLogin.
• (private String username1="mhs", private String
pass1="Mahasiswa@#$", private String
username2="mahasiswa", private String
pass2="praktikum@#$"), tentukan sendiri parameternya.
34
Buatlah class TestLogin yang menggunakan class DataLogin
dengan aturan sebagai berikut, saat program dijalankan,
tampilkan menu utama sebagaiberikut:
MENU UTAMA
--------------------
Menu Pilihan:
A. LOGIN
B. EXIT
--------------------
Pilihan Anda:
35
sendiri. Setelah itu buatlah class main yang menginstance-
kan outer class dan inner class tersebut, buatlah contoh
implementasi sesuai kreatif kalian.
36
Bab 5: Generics
Tujuan
Praktikan mampu membuat dan mempergunakan Generics
pada Java.
Generic Class
Generics digunakan sebagai tipe data yang dapat
didefinisikan ketika sebuah class akan dipakai. Konsep yang paling
mendekati dengan generics java adalah typename/class template
pada C++. Dimana pada C++, sebuah template yang beripe
typename/class dapat digantikan dengan tipe data lain,
bergantung pada inisialisasi class-nya. Hal ini juga berlaku pada
java, hanya saja syntax yang digunakan pada java untuk
mendefinisikan generics adalah “<NAMA_TEMPLATE, … >” setelah
nama class. Berikut ini contoh pembuata template:
class T<X> {
private X d;
public T(X v) { d = v; }
public X getData() { return d; }
public print() {
System.out.println( “ variabel d bertipe : “ +
d.getClass().getName() + “ bernilai “ + d );
}
37
menggunakan lebih dari 1 parameter adalah
HashMap<KeyType,ValueType>, dimana class tersebut berguna
sebagai array asosiatif.
Pemberian nama generics menurut standar sebaiknya adalah
1 huruf kapital. Perlu diingat bahwa generics boleh digantikan
dengan Object apapun, dan tidak dapat digantikan dengan tipe-
tipe primitif seperti int (Integer adalah class, int adalah
primitives).
Dengan adanya generics, kita tidak perlu takut akan runtime
error. Hal ini dapat kita coba ketika kita menggunakan ArrayList
yang mendayagunakan generics maupun tidak:
ArrayList x = new ArrayList(); // sama seperti ArrayList<Object>
x.add(1);
x.add(“test”);
Integer x1 = (Integer) x.get(0);
String x2 = (String) x.get(1);
Integer x2b = (Integer) x.get(1); // runtime error
public class T1 {
public void test() { System.out.println("saya bertipe T1"); }
}
public class T2 extends T1 {
@Override public void test() {
System.out.println("saya adalah tipe T2");
38
}
}
void tester() {
ArrayList<T1> x = new ArrayList<T1>();
T1 t1 = new T1();
T2 t2 = new T2();
x.add(t1);
x.add(t2);
x.get(0).test();
x.get(1).test();
}
Nested Generics
Nested Generics merupakan generics yang digantikan dengan
class yang memiliki parameter generics. Hal ini diperbolehkan di
Java seperti halnya di C++. Berikut ini adalah contoh ArrayList yang
menyimpan ArrayList of String:
ArrayList<ArrayList<String>> x = new ArrayList<ArrayList<String>>()
// setara dengan vector<vector<string> > di c++
x.add(y);
Generic Method
Generic Method merupakan metode yang memiliki parameter
generics, berbeda dengan generic class, parameter tersebut harus
39
dituliskan sebelum nama fungsi. Berikut ini contoh fungsi static
yang mempergunakan generic:
static <T, V extends T> boolean existsIn(T x, V[] y) {
for (int z = 0; z < y.length; ++z)
if (x.equals(y[z])) return true;
return false;
}
if (existsIn(4, nums))
System.out.println("4 ada~ ^^");
Generic Interface
Selain pada class dan method, generic juga dapat diberikan
pada interface. Sebagai contoh, apabila kita ingin membuat
interface dengan bounded type Comparable (yaitu object harus
dapat di-compare) kita dapat menuliskan:
interface IminMax< T extends Comparable<T>> {
T min();
T max();
}
40
class MinMaxFInder<T extends Comparable<T>> implements IminMax<T> {
T[] arr;
public MinMaxFinder(T[] a) { arr = a }
public T min() {
T r = arr[0];
for(int z=1;z<arr.length;++z)
if( r.compareTo(arr[z]) > 0 ) r = arr[z];
return r;
}
public T max() {
T r = arr[0];
for(int z=1;z<arr.length;++z)
if( r.compareTo(arr[z]) < 0 ) r = arr[z];
return r;
}
}
Wildcard
Wildcard digunakan sebagai pengganti generics apapun.
Wildcard umumnya digunakan apabila kita tidak mempedulikan
tipe data dari generics (tidak perlu tahu), ataupun apabila kita
peduli tipe datanya tetapi kita tidak butuh untuk mendefinisikan
variabel dengan tipe tersebut. Berikut ini contoh penggunaan
wildcard pada fungsi:
void printCollection( Collection<?> c ) {
for( Object o : c ) System.out.println( o );
}
41
fungsi berupa Parent1<X> maka Turunan1<X> dapat dipassing,
sedangkan apabila parameter fungsi berupa Parent1<?> maka
Turunan1<Apapun> dapat dipassing ke dalam fungsi tersebut.
Contoh:
void printCollection( Collection<Object> c ) {}
// ArrayList<Object> dipassing sebagai parameter ke dalamnya
// tetapi ArrayList<String> tidak dapat dipassing
// agar dapat, fungsi di atas harus diubah menjadi
void printCollection( Collection<String> c ) {}
// yang mampu menerima turunan collection apapun
// yang genericnya string, atau
void printCollection( Collection<?> c ) {}
// yang mampu menerima turunan collection apapun, atau
void printCollection( ArrayList<String> c ) {}
// yang mampu menerima tepat arraylist
// dengan generic string, tetapi bukan
void printCollection( ArrayList<Object> c ) {} // compile error
Bounded Wildcard
Bounded wildcard merupakan wildcard yang dibatasi hanya
dari class turunan (extends) atau parent (super) tertentu, sebagai
contoh, fungsi ini hanya menerima parameter generic turunan dari
class number:
public static double getAverage(ArrayList<? extends Number> al) {
double total = 0;
for( Number n : al ) total += n;
return total / al.size();
}
42
syntax instanceof, misal:
Latihan
Buatlah class generic untuk himpunan
Buatlah class generic untuk stack
Buatlah class generic untuk queue
43
Bab 6: Collections
Tujuan
Praktikan dapat mendayagunakan collection yang telah
disediakan java sebagai struktur data umum dalam pembuatan
program.
Comparable
Dalam membuat class yang akan dimasukkan ke dalam
collection, sebaiknya class tersebut mengimplements Comparable,
sehingga algoritma-algoritma seperti sort dan binarySearch dapat
dijalankan pada Collection yang menyimpan class tersebut.
Contoh:
class Manusia implements Comparable<Person> {
private String firstName;
private String lastname;
public Manusia (String firstName, String lastname) {
this.firstName = firstName;
this.lastname = lastname;
}
public String toString() {
return firstName + " " + lastname;
}
public int compareTo(Manusia p) {
int result = lastname.compareTo(p.lastname);
return result == 0 ? firstName.compareTo(p.firstName) : result;
}
}
Collection
Collection atau sering disebut container merupakan class
yang menyimpan sekumpulan object. Class-class tersebut setara
dengan STL C++. Java mengimplementasikan collection dalam
bentuk class dan interface, yaitu:
44
• Set: dalam bahasa indonesia artinya adalah himpunan,
dalam sebuah himpunan, tidak diperbolehkan ada data yang
kembar. Diimplementasikan dalam class HashSet, EnumSet,
TreeSet dan LinkedHashSet. Method terpenting dari set
adalah: add, iterator dan remove.
List
List menyediakan berbagai algoritma yang dapat digunakan
secara langsung, diantaranya: short, shuffle, reverse, rotate,
swap, replaceAll, fill, copy, binarySearch, indexOfSubList,
45
lastIndexOfSubList
Iterator
Iterator merupakan salah satu cara melakukan iterasi dari
collection selain dengan syntax for-each dari Java. Method
terpenting dari Iterator adalah: hasNext, next dan remove.
46
Bab 7: GUI
Tujuan
Praktikan mampu menggunakan toolkit untuk membuat GUI
bahasa Java.
Java AWT
Pada 4 bab sebelumnya kita sudah menggunakan
pemrograman pada level konsol. Pada modul ini akan dibahas
pemrograman dengan menggunakan windows atau GUI (Graphical
User Interface). Untuk pemrograman GUI ini dengan
mengimplementasikan package java.awt atau dapat juga
menggunakan package javax.swing.
Package java AWT (Abstract Window Toolkit) menggunkan
sistem window pada komputer lokal. Dengan demikian tampilan di
window pada Sistem Operasi yang berbeda dapat menghasilkan
tampilan window yang berbeda pula. Berikut adalah gambar
diagram hirarki dalam java.awt.
Untuk memahami GUI dalam java kita akan menggunakan
teks editor pada class dan tidak menggunakan fitur generate GUI
pada NetBeans. Berikut contoh bila kita akan membuat sebuah
frame dengan menggunakan package java.awt
import java.awt.*;
public class Modul3a {
public static void main(String[] args) {
Frame f = new Frame("New Frame");
f.setSize(400,200);
f.setVisible(true);
}
}
47
Pada frame yang dibuat, tidak dapat dilakukan fungsi close,
oleh karena itu kita akan memodifikasi code dengan menambahkan
event handling atau pananganan kejadian seperti berikut:
import java.awt.*;
import java.awt.event.*;
public class Modul3a extends Frame {
public Modul3a() {
super("Tes Frame");
setSize(400,200);
addWindowListener(new Modul3a.PenangananKejadian());
setVisible(true);
}
class PenangananKejadian extends WindowAdapter{
@Override public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public static void main(String[] args) {
Modul3a m = new Modul3a();
}
}
48
Layout Management
Pada class Container dalam java awt mendefinisikan metode
bernama setLayout() yang ditujukan untuk mengatur tata letak
komponen-komponen yang ada di dalamnya. AWT terdapat 5 layout
management dasar, antara lain:
49
setSize(300,200);
setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
add(new Button("Tombol A"));
add(new Button("Tombol B"));
add(new Button("Tombol C"));
add(new Button("Tombol D"));
addWindowListener(new TesFlowLay.PenangananKejadian());
setVisible(true);
}
class PenangananKejadian extends WindowAdapter{
@Override public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public static void main(String[] args) {
TesFlowLay f = new TesFlowLay();
}
}
Hasil output:
50
p1.add(new TextField("-Text Field 2-"));
Hasil Output:
Hasil output:
51
• CardLayout: merupakan layout yang menampilkan object
dalam container seperti tumpukan sebuah kartu. Hanya 1
container yang muncul pada setiap waktu. Berikut contoh
untuk CardLayout:
Panel pTitle = new Panel();
pTitle.setLayout(new FlowLayout());
pTitle.add(new Label("Testing Card Layout"));
pTitle.setForeground(Color.WHITE);
pTitle.setBackground(Color.GRAY);
add("North", pTitle);
52
• GridBagLayout: merupakan layout yang dapat digunakan
untuk meletakkan komponen secara bebas. Berbeda dengan
GridLayout di mana setiap komponen akan diletakkan dalam
grid dengan ukuran yang sama, sedangkan pada
GridBagLayout setiap komponen dapat menempati ukuran
yang berbeda dengan yang lain. Berikut contoh
GridBagLayout:
GridBagLayout gb = new GridBagLayout();
setLayout(gb);
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.ipadx = 40; gbc.ipady = 20;
53
gb.setConstraints(b4, gbc);
add(b4);
Hasil Output:
Keterangan:
GridBagConstrain
// class untuk menentukan batasan-batasan dalam GridBagLayout.
Fill
// digunakan untuk menentukan komponen dapat menempati lebih
dari satu kolom atau baris.
ipadx dan ipady
// mengembangkan komponen ke kiri-kanan (ipadx) dan atas-bawah
(ipady)
gridx dan gridy
// menentukan posisi kolom (gridx) dan posisi baris (gridy)
tempat komponen pada sel grid.
gridwidth
// menentukan lebar komponen (dalam sel).
girdheight
// menentukan tinggi komponen (dalam sel).
Java Swing
Pada subbab sebelumnya kita telah mengenal pemrograman
GUI dengan AWT di mana hasil tampilan atau output komponennya
dapat berbeda pada setiap sistem operasi yang berbeda. Swing
tidak menggunakan komponen yang ada pada class AWT dan tidak
bergantung pada sistem operasi, sehingga tampilan komponen atau
grafik dari Swing menjadi serupa untuk semua sistem operasi.
Component pada diagram hirarki AWT sama dengan
JComponent pada class Swing. Setiap komponen yang ada pada
class Swing umumnya diawali dengan huruf J, misalnya jika kita
mengenal Frame dan Panel pada class AWT, pada class Swing kita
menggunakan JFrame dan JPanel. Penggunaan LayoutManagement
54
dapat digunakan class AWT dapat diterapkan pada class Swing.
Berikut contoh penggunaan Swing:
import java.awt.*;
import javax.swing.*;
c = getContentPane();
c.add("North", p1);
c.add("West", p2);
c.add("South", p3);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
SwingA s = new SwingA();
}
}
Hasil Output:
55
Untuk komponen-komponen yang ada pada class Swing, dapat
kita coba sebagai latihan seperti JCheckBox, JScrollBar, JSlider,
JList, JProgressBar, JSpinner, JTabbedPane, dsb.
Pertanyaan: menurut kalian, manakah pemrograman GUI
yang lebih sesuai untuk digunakan saat ini, Java AWT atau Java
Swing?
Latihan
1. Buatlah sebuah program kalkulator sederhana dengan
menggunakan class AWT
2. Buatlah sebuah program bidoata mahasiswa dengan
menggunakan class Swing. NB: Gunakanlah seperti pada
contoh di modul 3 dan tidak menggunakan IDE generate pada
NetBeans.
56
Bab 8: Event Handling
Tujuan
Praktikan mampu mempergunakan method untuk menghandle
event yang terjadi pada GUI.
Event Handler
Dalam pemrograman perlu untuk menambahkan sebuah
listener(pendengar) yang merespon request dari inputan user, baik
berupa inputan keyboard, inputan mouse pada komponen-
komponen tertentu seperti Windows Form, Button, TextField,
CheckBox dan sebagainya. Untuk menambahkan sebuah listener
dengan menggunakan addXXXListener dengan XXX dapat diganti
dengan object yang berfungsi sebagai listener. Sebagai contoh
object Window dengan method addWindowListener(), sedangkan
objek Button dengan method addActionListener().
Beberapa contoh tipe event listener yang ada di Java:
ActionListener
FocusListener
ItemListener
KeyListener
ListSelectionListener
MenuListener
MouseListener
MouseMotionListener
PopupMenuListener
TextListener
WindowListener
WindowStateListener
dll
57
}
class PenangananKejadian extends WindowAdapter{
@Override public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public Modul4a() {
super("Testing Event Windows");
setSize(400,200);
58
b.addActionListener(this);
c1.addItemListener(this);
c2.addItemListener(this);
c3.addItemListener(this);
addWindowListener(new Modul4a.penangananKejadian());
setVisible(true);
}
Hasil Output:
59
saat tombol keyboard ditekan pada sebuah komponen. Sedangkan
MouseListener merupakan interface untuk menagkap event yang
disebabkan oleh mouse, seperti ketika tombol mouse berada di
atas komponen atau ketika tombol mouse ditekan.
60
TextListener addTextListener
WindowListener WindowAdapter addWindowListener
61
Sebagai latihan kita akan membuat tampilan GUI dengan
menggunakan JFame dan komponen seperti berikut:
62
Terdapat 4 tab pengaturan pada GUI antara lain Tab
Properties, Binding, Events, Code. Gunakan tab Events untuk
menambahkan event handler pada tombol yang dituju, yaitu
jRadioButton (Pria dan Wanita) dan JButton ketika dipilih.
Berikut merupakan contoh source code event pada
komponen.
63
Method tekan() merupakan event handler untuk Button View,
method optWanitaActionPerformed() merupakan event handler
untuk JRadioButton dengan nama variable optWanita.
Latihan
1. Buatlah sebuah program inputan Biodata Mahasiswa dengan
contoh tampilan seperti berikut:
64
Dengan ketentuan seperti berikut:
65
2. Buatlah sebuah program sederhana dengan Jframe seperti
berikut, dengan ketentuan jika tombol ”chose color”
ditekan maka akan keluar sebuah ColorDialog yang
digunakan untuk mengganti warna pada jPanel di sebelah
kiri.
66
Bab 9: Graphics
Tujuan
Praktikan mampu mempergunakan method-method
penggambaran primitif untuk melakukan penggambaran.
Canvas
Jika kita melihat kembali pada diagram hirarki java.awt pada
modul 3, kita akan melihat bahwa Canvas adalah subclass dari class
Component. Canvas digunakan untuk melakukan penggambaran
berbagai bentuk pada java. Salah satu contohnya dengan
menggunakan method paint() yang mengakses class Graphics.
Buatlah sebuah java class file untuk mencoba penggunaan class
Canvas seperti berikut:
import java.awt.*;
import javax.swing.*;
public class Rectangle extends JFrame {
public Rectangle() {
super("Rectangle Example");
setSize(400,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
67
Graphics, Paint and Event Handler
Data graphics secara konsep terbagi menjadi potongan-
potongan kecil seperti puzzle yang kita namakan dengan pixel.
Dalam graphics kita mengenal beberapa istilah seperti koordinat
dan RGB. Koordinat x-Axis dan y-Axis digunakan untuk menentukan
lokasi gambar atau object dalam Frame (dimulai dari kiri atas).
Sedangkan koordinat digunakan untuk menentukan colors
atau warna dengan mencampurkan nilai RGB dengan nilai antara 0-
255 untuk masing-masing nilai Merah, Hijau dan Biru.
Method paint() digunakan untuk menambahkan atau
menggambarkan komponen-komponen yang ada pada Graphics.
Berikut kita akan melihat penggunaan graphics, paint dan event
handler menggunakan MouseListener / MouseAdapter.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseCircle extends JFrame{
int x;
int y;
public MouseCircle() {
super("Draw Circle Listener");
setSize(400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setForeground(Color.BLUE);
addMouseListener(new CircleListener());
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x-25, y-25, 50, 50);
}
public class CircleListener extends MouseAdapter{
@Override
public void mousePressed(MouseEvent e) {
x = e.getX();
68
y = e.getY();
repaint();
}
}
public static void main(String[] args) {
MouseCircle m = new MouseCircle();
m.setVisible(true);
}
}
Hasil Output:
69
Buatlah sebuah file pada project kita dengan melakukan klik
kanan > New > JFrame Form. Kita dapat juga menambahkan
menggunakan menu File > New File. Setelah JFrame kita buat,
tambahkan sebuah panel dan 3 buah button seperti pada gambar
berikut:
70
Hasil Output:
71
JButton Circle akan muncul lingkaran berwarna hijau dan JButton
Elips akan muncul Elips berwarna biru. Oleh karena gambar yang
muncul adalah menangkap inputan berupa pilihan pada button,
maka kita harus menambahkan event handler pada setiap button.
Kita akan menambahan even actionPerformed pada setiap button,
untuk memberikan event handler pada komponen, lihatlah kembali
pada modul yang sebelumnya.
Latihan
1. Lanjutkan contoh latihan sebelumnya dengan beberapa
ketentuan:
72
Contoh output:
73
Bab 10: Multithreading and Java Applet
Tujuan
Praktikan mampu mempergunakan thread untuk membuat
proses yang berjalan pada background.
74
}
}
75
public static void main(String[] args) {
Mobil m1 = new Mobil("Mobil-1");
Mobil m2 = new Mobil("Mobil-2");
m1.start();
m2.start();
}
}
Java Applet
Pada bahasa pemrograman Java, user dapat berinteraksi
dengan aplikasi melalui sebuah web browser. Keunggulan dari cara
ini adalah fleksibilitas yang tinggi karena hanya dibutuhkan web
browser (contohnya: Mozzilla, Opera, Safari, ChromePlus, IE) untuk
mengakses aplikasi Java tersebut. Ada beberapa jenis program java
yang didevelop untuk berjalan pada web browser, antara lain
Applet , Java Server Pages (JSP) dan Servlet .
76
Pada modul ini kita akan membahas penggunaan Applet.
Sama halnya dengan pemrograman GUI pada java dapat
menggunakan 2 class yaitu AWT atau Swing.
Berikut ini adalah daftar method yang dapat digunakan untuk
Applet:
77
}
Latihan
1. Buatlah sebuah aplikasi stopwatch dengan menggunakan
78
Thread, dengan tampilan awal seperti berikut:
79
Contoh tampilan pada browser ChromePlus 1.4
Tampilan applet dapat kita buat sendiri atau menggunakan
fitur pada NetBeans (File > New File > Swing GUI Form >
JAppletForm). Bila kita menekan tombol play, maka akan
memainkan musik pada code yang telah kita definisikan.
80
Bab 11: File Stream
Tujuan
Praktikan mampu mempergunakan stream, serialization dan
file dalam bahasa Java.
81
• Tutup koneksi file/close()
try{
FileInputStream fis = new FileInputStream(namaFile);
DataInputStream dis = new DataInputStream(fis);
NIM = dis.readUTF();
82
namaMhs = dis.readUTF();
fakultas = dis.readUTF();
jurusan = dis.readUTF();
angkatan = dis.readInt();
dis.close();
System.out.println("NIM: " + NIM +
"\nNama: " + namaMhs +
"\nFakultas: " + fakultas +
"\nJurusan: " + jurusan +
"\nAngkatan: " + angkatan);
}
catch(FileNotFoundException e) {
System.out.println("File " + namaFile + " not found");
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
SequenceInputStream
Class ini merupakan class turunan dari InputStream dan
berguna untuk menggabungkan 2 buah stream inputan menjadi
sebuah stream inputan .
Pada directory project buatlah 2 buah file teks yang akan
digunakan dalam SequnceInputStream, yang pertama dengan nama
data1.txt yang berisi:
Computer processing..
Exception handling..
Contoh penggunaan:
import java.io.*;
public class SequenceFile {
public static void main(String[] args) throws IOException{
FileInputStream namaFile1 = new FileInputStream("data1.txt");
FileInputStream namaFile2 = new FileInputStream("data2.txt");
SequenceInputStream input =
new SequenceInputStream(namaFile1, namaFile2);
int karakter;
while((karakter=input.read()) != -1) {
System.out.print((char)karakter);
}
83
input.close();
namaFile1.close();
namaFile2.close();
}
}
Hasil output
Computer processing..
Exception handling..
Jalan-jalan naik ojek
ga nyambung jek
84
}
}
try{
fos = new FileOutputStream("time.ser");
out = new ObjectOutputStream(fos);
out.writeObject(time);
System.out.println(time.getTime());
out.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
ObjectInputStream
Untuk melakukan restore file setelah disimpan dengan
ObjectOutputStream, maka agar dapat dibaca kembali kita
menggunakan class ObjectInputStream. Berikut code untuk
membaca object time pada yang telah dibuat pada contoh
sebelumnya dengan nama file “time.ser”.
import java.io.ObjectInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Calendar;
85
String filename = "time.ser";
PersistentTime time = null;
FileInputStream fis = null;
ObjectInputStream in = null;
try{
fis = new FileInputStream(filename);
in = new ObjectInputStream(fis);
time = (PersistentTime)in.readObject();
in.close();
}
catch(IOException ex) {
ex.printStackTrace();
}
catch(ClassNotFoundException ex) {
ex.printStackTrace();
}
// cetak waktu sebelumnya yg telah disimpan
System.out.println("Flattened time: " + time.getTime());
System.out.println();
// cetak waktu saat ini
System.out.println("Current time: " +
Calendar.getInstance().getTime());
}
}
File Dialog
Pada banyak aplikasi saat ini telah dilengkapi dengan
berbagai kotak dialog, misalnya untuk membuka file (OpenDialog)
dan menyimpan file (SaveDialog). Dalam pemrograman window
baik dengan package AWT maupun Swing dilengkapi dengan
component FileDialog.
Buatlah tampilan seperti berikut, jika kita menekan button
“Open File Dialog” akan membuka Open File Dialog dengan
memanggil component JFileChooser. Dengan demikian kita harus
menambahkan event pada button.
86
private void btnDialogActionPerformed(java.awt.event.ActionEvent
evt) {
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(this);
txtPath.setText(jfc.getSelectedFile().toString());
}
Latihan
1. Buatlah sebuah JFrame dan terdapat 2 tab (gunakan
JTabbedPane) yang digunakan untuk menulis ke dalam file
dan membaca dari file yang sudah dihasilkan. Ketentuan
program:
87
• Pada tab Read File terdapat button Open File Dialog
yang akan digunakan untuk menampilkan kotak dialog
open dimana file teks akan dibaca dan ditampilkan
pada JFrame.
88
Bab 12: JDBC
Tujuan
Praktikan mampu mempergunakan JDBC untuk melakukan
koneksi dan manipulasi basis data.
JDBC Concept
Data atau informasi yang terdapat pada aplikasi dapat
disimpan secara temporary atau permanent. Data disimpan secara
temporary artinya setelah program ditutup maka semua data yang
diinputkan akan hilang dan harus diinputkan kembali. Metode
penyimpanan secara temporary umumnya menggunakan array, baik
static ataupun array dinamis. Agar data dapat disimpan secara
permanent maka data tersebut harus disimpan ke dalam sebuah
file ataupun database. Banyak sekali program database pada saat
ini, beberapa yang populer antara lain MySQL, PostgreSQL, Oracle,
Microsoft SQL Server, Microsoft Access.
JDBC merupakan salah satu API (Application Programming
Interface) pada Java yang bertujuan untuk menangani koneksi ke
dalam sebuah database. Melalui JDBC kita dapat melakukan query
atau memasukkan perintah SQL pada code Java. Berikut gambar
diagram pada arsitektur JDBC dengan menggunakan Pure JDBC
Driver (kiri) dan JDBC dengan menggunakan ODBC sebagai
konektivitasnya (kanan).
89
Secara umum pengolahan database yang sering digunakan
terdapat 4 jenis atau disebut DML (Data Manipulation Language)
yang akan kita bahas, antara lain:
• Mengambil data (select)
• Menyimpan/menambah data (insert)
• Mengubah data (update)
• Menghapus data (delete)
Using ODBC
Pada modul kali ini kita akan menggunakan contoh database
Acces dengan menggunakan ODBC dan database MySQL. Jika kita
menggunakan OS Windows, maka kita dapat menemukan fitur
ODBC (Open Database Connectivity). ODBC digunakan untuk
menghubungkan antara database yang satu dengan database yang
lainnya. Berikut contoh langkah-langkah konfigurasi pada OS
Windows XP
1. Buatlah database dengan nama file Mahasiswa.mdb dengan
field NIM, Nama, Jenis Kelamin, Fakultas, Jurusan.
2. Masuk ke Control Panel > Administrative Tools > Data
Sources (ODBC)
90
3. Pilihlah tab System DSN dan klik Add. Kemudian pilih driver
yang akan digunakan, misalnya Microsoft.
91
Connect and Select (Using ODBC - Access)
Pada code Java, sebelum dapat melakukan perintah DML
maka kita harus melakukan koneksi agar terhubung terlebih dahulu
dengan database, dalam kasus ini dengan menggunakan koneski
ODBC pada database access. Berikut kita akan mencoba aplikasi
dengan database akses. Pertama-tama buatlah database dengan
table tbl_mhs dan struktur tabelnya sebagai berikut
92
import java.sql.*;
public class TestConnection {
public static void main(String[] args) throws Exception{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection("jdbc:odbc:mhs",
"", "");
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tbl_mhs");
while(rs.next()) {
System.out.println(rs.getString("NIM"));
}
s.close();
c.close();
}
}
String pertama adalah nama DSN yang telah kita buat, string
kedua adalah username database, dan string ketiga adalah
password database untuk mengakses ke dalam database
tersebut. Pada contoh kita mengakses ke DSN mhs.
93
Insert, Update and Delete
Perintah insert digunakan untuk menambahkan data baru ke
dalam sebuah tabel. Formatnya:
INSERT INTO table_name
VALUES (dataField1, dataField2, dataField3,…)
94
1. Download file connector pada
http://dev.mysql.com/downloads/connector/odbc.
2. Lakukan ekstrak jika kita mendownload file .zip, dan lakukan
instal jika mendownload file msi. Ada 2 cara yang dapat
dilakukan untuk mengaktifkan library jdbc connector yaitu
melakukan setting classpath atau melalui IDE. Kali ini kita
akan mencoba dengan menggunakan IDE untuk memanggil
library tersebut.
3. Buatlah sebuah project (new project) pada aplikasi NetBeans
IDE, kemudian pilih pada bagian Libraries.
4. Klik kanan pada Libraries, pilih ”Add JAR/Folder”. Kemudian
carilah file .jar pada MySQL connector yang telah kita
download sebelumnya. Sebenarnya kita juga bisa langsung
memilih ”Add Library” yang merupakan library default pada
NetBeans, kemudian pilih MySQL JDBC Driver. Kedua hal ini
bersifat alternatif saja, sehingga kita bisa memilih salah satu
cara.
95
pada group Libraries akan terdapat file mysql connector,
seperti gambar berikut.
96
}
}
Keterangan
1. Pertama kali kita harus memberitahukan program mengenai
address pengambilan driver JDBC. Perintah yang digunakan
adalah:
Class.forName("com.mysql.jdbc.Driver");
Latihan
1. Buatlah sebuah form dengan menggunakan JFrame form,
dengan ketentuan:
97
• Setiap perintah yang dilakukan (insert, update dan
delete) maka data pada JTable akan menampilkan
perubahan yang dilakukan sehingga data pada JTable dan
pada tbl_mhs selalu sama.
98
Daftar Referensi
Java Software Solutions 6 th Edition
Lewis, John & Loftus, William. 2009. Pearson International
Dasar Pemrograman Java 2
Kadir, Abdul. 2004. Yogyakarta: Penerbit Andi Offset
Tuntunan Pemrograman Java Jilid 3
Purnama, Rangsang. 2005. Jakarta: Prestasi Pustaka
Absolute Java 3rd Editon
Savitch, Walter. 2008. Pearson International
Java History
http://en.wikipedia.org/wiki/Java_(programming_language)
Java2s
http://java2s.com/Tutorial/Java/CatalogJava.htm
Java Generic Wildcard
http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.h
tml
99