Object Oriented Program
Object Oriented Program
Pengenalan Java
Tujuan:
1.
2.
3.
4.
Java adalah bahasa pemrograman orientasi objek yang berukuran kecil, sederhana, aman,
diinterpretasi atau dioptimasi secara dinamis, ber-bytecode, netral arsitektur, mempunyai
garbage-collector, multithreading, memi liki mekanisme exception-handling, berbasis tipe
untuk penulisan program mudah diperluas secara dinamis serta telah diperuntukkan system
tersebar (distributed system).
Bill Joy Co-founded Sun Microsystems
Bagaimanakah sejarahnya?
Di tahun 1995
James
Gosling
Patrick
Naughton
Mendukung koneksi ke
databse dan objek tersebar
Berorientasi Objek, Java telah menerapkan konsep pemrograman berorientasi objek (program
dilihat sebagai sekumpulan objek yang saling berinteraksi) yang modern dalam
implementasinya.
Statically Typed, dimana seluruh objek harus didefinisikan terlebih dahulu sebelum dikompilasi.
Tujuannya agar kode lebih dapat dioptimasi untuk menghasilkan program berkinerja tinggi.
Perlu kompilasi, dengan menggunkan Java compiler, kompilasi akan menghasilkan file
bytecode, kemudian file bytecode ini dibaca oleh sembarang Java inpterpreter yang akan
menerjemahkan menjadi bahasa mesin yang dapat dieksekusi mesin.
Robust, java mendorong pemrograman yang bebas dari kesalahan dengan bersifat strongly
typed dan memiliki run-time checking, diimplematasikan dengan menggunakan exception
handling.
Portable, Program Java dapat dieksekusi di platform manapun selama tersedia Java Virtual
Machine untuk platform tersebut.
Multithreading, Java mendukung penggunaan multithreading yang telah terintregasi langsung
dalam bahasa java. Thread = sebuah program computer melakukan lebih dari satu tugas
dalam satu waktu.
Dinamis, Program java dapat melakukan suatu tindakan yang ditentukan pada saat eksekusi
program dan bukan pada saat kompilasi.
Sederhana, Java menggunakan bahasa yang sederhana dan mudah dipelajari. Pekerjaan
pemrograman yang dulu dikerjakan manual dikerjakan Java secara otomatis (misalnya
dealokasi memory).
Terdistribusi, java didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya
internet.
Aman, Java memiliki model pengamanan tiga lapis. Pertama, bytecode verifier yang
memverifikasi kode Java sebelum dieksekusi. Kedua, class loader yang menangani pemuatan
kelas Java ke interpreter. Ketiga, manajer keamanan yang menangani keamanan tingkat
aplikasi dengan pengendalian hak akses.
Instalasi Java
Ekstraksi
Setelah kita install JDK, kita harus setting path sama classpath-nya.
set path=c:\jdk<versi>\bin;%path%
set classpath=c:\jdk<versi>\lib\file(*.jar);%path%
contoh:
set path=c:\jdk1.5\bin;%path%
set classpath=c:\jdk1.5\lib\tools.jar;%classpath%
set classpath=c:\jdk1.5\lib\dt.jar;%classpath%
Editor
Java
Menggunakan software text
editor, seperti Notepad,
Wordpad, Eclipse, Netbeans, dll.
Bentuk Penulisan:
Pemrograman di Java
Pemrograman di Turbo C
nama kelas (nama program)
#include<conio.h>
#include<stdio.h>
void main()
{
System.out.print("Hello World");
program
printf("hello word");
getch();
Ketika menyimpan program di Java harus sesuai dengan nama kelas dan ingat case sensitive!
[misal: pada program di atas kita simpan dengan Hello.java]
javac namaProgram.java
bagaimana jika ada error? Akan tampil
pesan error setelah mengetik perintah di atas.
Contoh disamping adalah
Menjalankan program dengan cmd, caranya:
javac namaProgram
jika tidak ada error maka akan langsung
muncul tulisan Hello World seperti contoh di
samping.
Akan terjadi
masalah dalam
tipe data ketika
terdapat dua tipe
berhubungan.
Bagaimanakah
Tipe data dengan nilai benar (true) atau salah (false), biasanya banyak digunakan
dalam kondisional.
Solusinya?
Solusinyaa.
Konversi
Dilakukan ketika sebuah nilai di-assign ke variabel yang berbeda tipe datanya
Rules in Conversion
Casting
Dilakukan karena tidak bisa dilakukan konversi. Dilakukan secara manual oleh user.
Dilakukan casting karena
variabel shortAmount
memiliki range < variabel
intAmount
Ternyata, ada dua macam tipe variabel data dalam bahasa Java lho... ayo, kita lihat...
Contohnyaa...
int dataint;
char chardata;
float x = 12,67;
1.
Konstanta
Variabel dalam Java bisa dijadikan konstanta, sehingga nilainya tidak akan dapat diubah-ubah
dengan mendeklarasikannya sebagai variable final.
final int x = 2;
Variabel Array
Data
Index
Data 1
0
Data 2
1
Data 3
2
.
.
Data N
N-1
Bentuk umumnya
[atau]
tipeData namaVariable[] [= new tipeData [jumlahElemen] ];
TipeData bisa berupa salah satu dari berbagai tipe data seperti int, long,
double ataupun nama class, baik class standar Java atau buatan sendiri
Caranya
1
int[] namaVariableArray;
Kalo jumlah elemen belum dipesan, kita gak
bisa pake variable array untuk nyimpen
data.
2
10
Array 2 Dimensi
Bagaimana bentuk umumnya?
tipeData[][] namaVariable [= new tipeData[jumlahBaris][jumlahKolom]];
(atau)
tipeData namaVariable[][] [= new tipeData[jumlahBaris][jumlahKolom]];
=
=
=
=
1;
1;
1;
1;
System.out.println(m[0][0]+"
System.out.println(m[1][0]+"
System.out.println(m[2][0]+"
System.out.println(m[3][0]+"
"+m[0][1]+"
"+m[1][1]+"
"+m[2][1]+"
"+m[3][1]+"
"+m[0][2]+"
"+m[1][2]+"
"+m[2][2]+"
"+m[3][2]+"
"+m[0][3]);
"+m[1][3]);
"+m[2][3]);
"+m[3][3]);
}
}
11
Contoh
Operator Relasional
Untuk membandingkan 2 nilai
(variabel) atau lebih
digunakan operator Relasional,
dimana operator ini akan
mengembalikan atau
menghasilkan nilai True atau
False.
Keterangan
Contoh
Keterangan
Operator Kondisional
Operator ini menghasilkan nilai
yang sama dengan operator
relasional, hanya saja
penggunaanya lebih pada
operasi-operasi boolean.
12
Contoh
Keterangan
Operator Bitwise
Operator Assignment
Operator assignment dalam Java digunakan
untuk memberikan sebuah nilai ke sebuah
variable. Operator assignment hanya berupa
=, namun selain itu dalam Java dikenal
beberapa shortcut assignment operator yang
penting.
Pernyataan kondisional
a += b
a -= b
a *= b
a /= b
a %= b
a &= b
a |= b
a ^= b
a <<= b
a >>= b
a >>>= b
a=a+b
a=a-b
a=a*b
a=a/b
a=a%b
a=a&b
a=a|b
a=a^b
a = a << b
a = a >> b
a = a >>> b
Statement if
if (ekspresi_kondisional){
statement1;
statement2;
13
Statement if-else
Untuk melakukan beberapa operasi yang berbeda jika salah satu ekspresi_kondisional bernilai salah,
maka digunakan statement else. Bentuk if-else memungkinkan kode Java memungkinkan dua
alternatif operasi pemrosesan : satu jika statement bersyarat adalah benar dan satu jika salah.
Bentuk statement if else dengan beberapa
pilihan operasi pemrosesan
if (ekspresi_kondisional_A){
statement1;
statement2;
}else if (ekspresi_kondisional_B){
statement1;
statement2;
}else{
statement1;
statement2;
if (ekspresi_kondisional){
statement1;
statement2;
}else{
statement1;
statement2;
== 1 || month == 2) {
month == 4 || month == 5) {
month == 7 || month == 8) {
month == 10 || month == 11) {
14
Statement switch
Bentuk umum pernyataan switch
switch ( expression ) {
case value_1:
statement1;
statement2;
.
.
.
break;
case value_2:
statement1;
statement2;
.
.
.
break;
[default: ]
statement1;
statement2;
.
.
.
break;}}
15
Berapakah outputnya?
Answer:
For
Do
while( expression ){
statement1;
statement2;
.......
do {
statement1;
statement2;
.......
} while(expression)
for (initialization;expression;step){
statement1;
statement2;
...
}
while ( expression );
Selama expression benar, while akan Hasil dari while akan dikembalikan kepada
dieksekusi
do
16
1.
Buatlah program untuk mencari dan menampilkan bilangan prima diantara 2 bilangan yang
diinputkan melalui argument.
Misal
: java Prima 3 30
Output : 3 5 7 11 13 17 19 23 29
2. Buatlah program untuk penjumlahan 2 buah matrik (3X3). Nilai matrik dapat bersifat
statis ataupun dirandom.
3. Buat program untuk mencari huruf yang paling banyak muncul pada suatu kalimat.
Misal : kalimat : praktikum pemrograman java
Huruf yang paling banyak muncul : a
Jumlah kemunculan : 5
17
Modul 2
Object Oriented Programming (OOP) I
Tujuan:
Pemrograman prosedural
debug.
Ciri-ciri
(atribut):
punya
18
Enkapsulasi
Pembungkusan data bersama method yang
dimiliki oleh objek sehingga rincian-rincian
implementasi internal suatu objek tidak dapat
dilihat dari pemakai/objek lain yang tidak
berhak.
Enkapsulasi ini melindungi proses dari
interferensi atau penyalahgunaan dari luar
sistem.
Fungsi:
Modularitas
Modularitas (modularity) berarti objek dapat
dikelola secara independen. Karena kode
sumber bagian internal objek dikelola secara
terpisah dari antarmuka, maka kita bebas
melakukan modifikasi yang tidak menyebabkan
masalah pada bagian-bagian lain. Manfaat ini
mempermudah mendistribusikan objek-objek di
sistem.
percepatan.
Pewarisan (Inheritance)
Proses penciptaan kelas baru (subclass/kelas turunan)
dengan mewarisi karakteristik dari kelas yang udah
ada (superclass/kelas induk), ditambah karakteristik
unik kelas baru itu.Karakteristik unik bisa berupa
perluasan atau spesialisasi dari superclass.
Televisi
Televisi
tabung
Televisi
Televisi
plasma
layar datar
Contoh inheritance
19
Reusability
kemampuan untuk menggunakan kembali kelas yang sudah ada. Karakteristik ini dimiliki oleh OOP,
sehingga kita tidak perlu membuat ulang definisi perilaku jika perilaku tersebut sudah ada di suatu
class lain.
Message + info
Object A
Object B
Polymorphism
Polymorphism berasal dari bahasa Yunani yang
berarti banyak bentuk.
Konsep ini memungkinkan digunakannya suatu
antarmuka (interface) yang sama untuk
memerintah suatu objek agar dapat
melakukan suatu aksi atau tindakan yang
mungkin secara prinsip sama tapi secara proses
berbeda.
B
A
Kedua mobil di atas sama-sama punya setir, pedal
20
Java Modifier
Apa itu modifier
dan kenapa kita
butuh itu?
Modifier merupakan
bentuk
pengimplementasian
konsep enkapsulasi.
Dengan adanya
modifier maka class,
interface, method,
dan variabel akan
terkena suatu
dampak tertentu.
Berlaku untuk
Kelompok Modifier
Meliputi
Class
Method
Variabel
Access modifier
public, protected,
private, dan friendly
(default/ tak ada
modifier).
Final modifier
final
static
Static modifier
Abstract modifier
abstract
Syncronized modifier
synchronized
Native modifier
native
Storage modifier
Access Modifier :
Modifier
Dikenali di manapun
Friendly
Public
Protected
Private
Tidak dapat
diterapkan
Tidak dapat
diterapkan
21
Permitted Modifier:
Modifier
Abstract
Class
Class dapat
berisi method
abstract. Class
tidak dapat
diinstantiasi
Tidak
mempunyai
constructor
Interface
Method
Variabel
Optional untuk
dituliskan di
interface
karena
interface secara
inheren adalah
abstract.
Final
Class tidak
dapat
diturunkan.
Tidak dapat
diterapkan.
Berperilaku sebagai
konstanta
Static
Tidak dapat
diterapkan.
Tidak dapat
diterapkan.
Mendefinisikan method
(milik) class. Dengan
demikian tidak
memerlukan instant object
untuk menjalankanya.
Method ini tidak dapat
menjalankan method yang
bukan static serta tidak
dapat mengacu variable
yang bukan static.
synchronized
Tidak dapat
diterapkan.
Tidak dapat
diterapkan.
Native
Tidak dapat
diterapkan.
Tidak dapat
diterapkan.
Transient
Tidak dapat
diterapkan.
Tidak dapat
diterapkan.
Volatile
Tidak dapat
diterapkan.
Tidak dapat
diterapkan.
22
Contoh :
public class Manusia {}
Keterangan tanda :
- artinya memiliki access modifier private
+ artinya memiliki access modifier public
# artinya memiliki access modifier protected
23
//definisi method
umur=a;
24
Object
Object (objek) secara lugas dapat diarikan
sebagai instansiasi atau hasil ciptaan dari
suatu class. Asumsikan cetakan kue adalah
class, maka kue yang dihasilkan dari cetakan
tersebut merupakan objek dari class cetakan
kue.
Dalam pengembangan OOP lebih lanjut,
sebuah objek dapat dimungkinkan terdiri atas
objek-objek lain.
mencetak
pintu
Keyword new
new digunakan untuk melakukan instansiasi/
membuat sebuah object baru.
ban
Kerangka mobil
Kendaraan Bermotor
25
26
Isi memori
n= 4
n=4
menyalin isi
memori
n=4
compiler
method
n= 8
27
Answer:
Nilai sebelum
x = 10
y = 20
Nilai sesudah
x = 10
y = 20
Nilai sebelum
z.i = 50
z.j = 100
Nilai sesudah
z.i = 500
z.j = 50
Keterangan
passed by value :
passed by value :
passed by reference :
passed by reference :
Constructor
Deklarasi Constructor:
[modifier] namaclass(parameter1){
Body constructor;
}
[modifier] namaclass(parameter1,parameter2){
Body constructor;
}
[modifier] namaclass(parameter1,parameter2,,parameterN){
Body constructor;
}
28
Nama : Bajuri
Umur : 13
FYI, pada kode program di atas terdapat dua buah constructor dengan parameter berbeda. Program
akan secara otomatis memilih constructor sesuai dengan parameter masukan pada saat
pembuatan objek. Hal ini disebut overloading.
Modul Praktikum Pemrograman Berorientasi Objek
Common Laboratory 2009/2010
29
Keyword this
Apa itu?
Suatu besaran referensi khusus yang
digunakan di dalam method yang dirujuk
untuk objek yang sedang belaku. Nilai this,
sedang berjalan dipanggil.
Kapan dipake?
Ketika nama atribut yang sama
dengan nama variable lokal, maka
gunakan lah this.namaAtribut untuk
merefer ke namaAtribut.
30
Keterangan
Perhatikan pada method IsiParam() di atas. Di sana kita
mendeklarasikan nama variable yang menjadi
parameternya sama dengan nama variabel yang
merupakan atribut dari class lagu (judul dan band).
Dalam hal ini, kita perlu menggunakan keyword this
(keyword ini merefer ke objek itu sendiri) agar dapat
mengakses property judul dan band di dalam method
IsiParam() tersebut. Apa yang terjadi jika pada method
IsiParam() keyword this dihilangkan?
dua parameter
private Buku() {
this("The Naked Traveller", "Trinity");
}
private Buku(String judul,String pengarang) {
this.judul = judul;
this.pengarang = pengarang;
}
private void cetakKeLayar() {
System.out.println("Judul : " + judul + " Pengarang : " + pengarang);
}
public static void main(String[] args){
Buku a,b ;
a = new Buku("Edensor", "Andrea Hirata");
b = new Buku();
a.cetakKeLayar();
b.cetakKeLayar();
}
}
Hasil output adalah seperti ini:
Judul : Edensor , Pengarang : Andrea Hirata
Judul : The Naked Traveller , Pengarang : Trinity
Pada contoh program di atas, kita juga dapat mengambil pelajaran bahwa penggunaan modifier private
pada constructor mengakibatkan constructor tersebut hanya dapat dikenali dalam satu class saja,
sehingga pembuatan objek hanya dapat dilakukan dalam lokal class tersebut.
Catatan penting lainnya : bahwa method void main(String[] args) haruslah bersifat public static.
31
Inner Class
Apa itu Inner Class?
Inner class disebut juga sebagai nested class, artinya adalah suatu kelas yang dideklarasikan di dalam
bodan class atau interface lain.
Kelas dimana inner class didefinisikan disebut top level class yang merupakan (kelas) anggota
langsung dari sebuah paket. Inner class berbeda dengan subclass, karena subclass berada pada kelas
yang terpisah dengan superclassnya. Berbeda dengan kelas normal yang dapat diinstansiasi secara
independen, inner-class harus selalu melibatkan top level class-nya untuk melakukan instansiasi.
Keuntungan pengorganisasian
package
package
class1
class2
class3
classN
class2
Class3
class1
Modul Praktikum Pemrograman Berorientasi Objek
Common Labz 2008-2009.
http://java.lyracc.com
http://battleprogrammer.wordpress.com
http://www.javaworld.com
http://bernazlionk.wordpress.com
http://www.wikipedia.org
http://one.indoskripsi.com
32
innerclassB
innerclassC
innerclassA
Modul 3
Object Oriented Programming (OOP) II
Tujuan:
1. Mengerti konsep OOP lebih dalam.
2. Ngerti konsep dan bisa implementasiin
inheritance, polymorphisme, interface,
dan abstract class pada program.
3. Ngerti perbedaan class dengan
interface, interface dengan abstract
class.
Inheritance
Apa itu inheritance?
Pewarisan merupakan proses peciptaan kelas baru
dengan mewarisi karakteristik kelas yang sudah
ada, ditambah dengan karakteristik unik kelas
baru itu.
Sebelumnya inheritance sudah dijelaskan pada
modul 2.
Penjelasan diagram di sebelah:
Manusia adalah superclass dari pria dan
wanita. Pria dan wanita mewarisi semua
state dan juga behaviour yang dimiliki class
manusia. Coba kita lihat perbedaannya,
pada kelas manusia terdapat atribut berat,
tinggi dan usia. Untuk kelas turunannya
yaitu pria, terdapat atribut tambahan yang
unik yaitu alat reproduksi pria. Jadi disini
kelas pria mempunyai atribut total : berat,
tinggi, usia dan juga alat reproduksi pria.
33
Pendeklarasian Inheritance
[modifier] class NamaKelasInduk {
// deklarasi konstanta
// deklarasi method
}
[modifier] class NamaKelasAnak extends NamaKelasInduk{
// deklarasi konstanta
// deklarasi method
}
Dibawah ini kita akan membuat kelas Balok
public class PersegiPanjang{
private int panjang;
private int lebar;
public void setPanjang(int p){
panjang=p;
}
public void setLebar(int l){
lebar=l;
}
public int getPanjang(){
return panjang;
}
public int getLebar(){
return lebar;
}
public int Luas(){
int luas=panjang*lebar;
return luas;
}
34
Answer:
public class Demo{
public static void main(String args[]){
PersegiPanjang a= new PersegiPanjang();
a.setPanjang(5);
a.setLebar(5);
System.out.println("");
System.out.println("
DEMO INHERITANCE
");
System.out.println("");
System.out.println("
SuperClass ==PERSEGIPANJANG==");
System.out.println("
Panjang
: "+a.getPanjang());
System.out.println("
Lebar
: "+a.getLebar());
System.out.println("
Luas
: "+a.Luas());
System.out.println("");
Balok b= new Balok();
//kelas balok tinggal memanggil method yang ada didalam kelas persegi
b.setPanjang(4);
b.setLebar(3);
b.setTinggi(5);
System.out.println("
System.out.println("
System.out.println("
System.out.println("
System.out.println("
SubClass ==BALOK==");
Panjang
: "+b.getPanjang());
Lebar
: "+b.getLebar());
Tinggi
: "+b.getTinggi());
Volume
: "+b.Volume());
}
}
Overloading
Apa itu overloading?
Didalam java, kita dapat membuat dua atau lebih konstruktor/ method yang mempunyai nama
sama dalam satu kelas, tetapi jumlah dan tipe argumen dari masing-masing kontrukstor atau
method haruslah berbeda satu dengan yang lainnya. Hal ini yang dinamakan overloading.
public void setHarga(int harga){}
public void setHarga(double harga){}
public void setHarga(float harga){}
35
terdapat 3 konstruktor
public Phone(){
dengan nama sama dengan
}
public Phone(String merk){ parameter inputan yang
this.merk=merk;
berbeda
}
public Phone(String merk, int harga){
overloading method, disini
this.merk=merk;
this.harga=harga;
terdapat dua method
}
dengan nama sama dengan
public void isiPhone(String merk){
parameter inputan yang
this.merk=merk;
}
berbeda
public void isiPhone(String merk, int harga){
this.merk=merk;
this.harga=harga;
}
public void lihatPhone(){
System.out.println("
Merk : "+merk);
System.out.println("
Harga
: "+harga);
System.out.println("");
}
}
public class DemoOverLoading{
public static void main(String args[]){
System.out.println("");
Phone p1 = new Phone();
Phone p2 = new Phone("Nokia");
Phone p3 = new Phone("Sony Ericsoon",500);
System.out.println("Perbedaan Output dari masing2 konstruktor");
p1.lihatPhone();
p2.lihatPhone();
p3.lihatPhone();
Phone p4,p5;
p4 = new Phone();
p5 = new Phone();
p4.isiPhone("Samsung");
p5.isiPhone("Samsung", 5000);
System.out.println("Perbedaan Output dari masing2 method");
p4.lihatPhone();
p5.lihatPhone();
}
}
36
Overriding
Apa itu overriding?
Method yang ada pada parent class(Superclass) didefinisikan kembali oleh kelas anaknya (subclass).
Jika kita panggil method yang udah di-override dari instance kelas anaknya, maka method yang
dipanggil itu punyanya si kelas anak bukan punya kelas parentnya lagi.
Pada overriding kita hanya bisa override methodnya.
37
Abstract Class
Bentuk Umum:
Ini?
Bila kelas MahlukHidup mempunyai method
bernafas, maka tidak dapat ditentukan cara
suatu mahluk hidup tersebut bernafas
(dengan paru-paru, insang, atau stomata),
method seperti inilah yang disebut method
abstract. Dibutuhkan kelas turunan yang
khusus dan method override dari method
yang abstract.
Ini?
Ini?
38
39
Interface
Apa itu interface?
Interface adalah kelas yang paling abstract, yang berisi daftar deklarasi method (seluruh method
belum memiliki implementasi).
Analogi Interface
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas.
Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai dai, dosen, tentara,
penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut selain harus memiliki
method standard sebagai seorang manusia, juga harus memiliki method yang sesuai dengan
pekerjaannya.
Dengan demikian untuk membuat objek seorang budi bekerja sebagai dosen, harus dibuat kelas
yang merupakan turunan kelas manusia yang meng-implementasikan interface dosen.
40
Keyword super
Maksudnya??
Keyword super digunakan untuk merefer/ mengacu superclass dari suatu class, yaitu member dari
suatu superclass, baik method maupun atribut.
Supaya kita lebih mengerti, maka mari kita lihat dan coba kode berikut ini!
41
Modul 4
Exception, I/O, dan Operasi File
Sering kali, ketika menjalankan sebuah program
kita menemukan kesalahan. Kesalahan itu bisa
berasal dari hardware, software, atau bahkan
dalam algoritma atau kesalahan logika itu sendiri.
Tujuan:
1. Mengerti konsep exception, I/O, dan
operasi file.
tepat.
Software saja
42
Kesalahan Algoritma
berhubungan dengan kesalahan atau
keterbatasan intrinsik dari pemodelan dunianyata yang dilakukan oleh komputer.
binary
konversi
decimal
Exception
Exception adalah kondisi abnormal / tidak wajar yang terjadi pada saat pengeksekusian suatu
perintah. Dalam java ada lima keywords yang digunakan untuk menangani eksepsi ini yaitu : try,
catch, finally, throw, dan throws.
Tidak ditangani dengan
Superclass tertinggi
run-time system.
secara langsung.
class RuntimeException
{
public static void main (String [] args)
{
int[] arr = new int[1];
System.out.println(arr[1]);
}
}
43
Struktur penulisan:
try{
......//blok program
} catch (tipeException e) {
......//blok program
}
Try menyatakan bahwa dalam blok program dapat terjadi suatu eksepsi dan bila itu terjadi, maka
eksekusi program berlanjut dalam blok catch sesuai dengan tipe eksepsi yang terjadi. Variabel obyek
e dari tipe exception dapat digunakan sebagai referensi / informasi untuk mengetahui penyebab
exception tersebut.
public class TryCatch {
public static void main (String[] args){
try{
int[] arr = new int[1];
Perhatikan baris ini!
System.out.println(arr[1]);
System.out.println("Baris ini tidak akan dieksekusi,
karena statement baris diatas terkadi exception");
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("Terjadi exception karena indeks di luar
kapasitas array");
}
System.out.println("Setelah blok try catch");
}
}
Dapat terjadi code yang terdapat dalam blok try mengakibatkan lebih dari satu jenis eksepsi. Dalam
hal ini, kita dapat menuliskan lebih dari satu blok catch untuk setiap blok try.
Kira-kira seperti apa ya bentuk kodenya??
44
parameter
sebuah parameter
Outputnya jika
dengan 2 parameter
Penggunaan Throw
Mekanisme throw memungkinkan program
untuk mengirim / melempar exception untuk
kemudian program menyikapi (bereaksi) atas
exception tersebut.
Cara penulisan:
Throw ObjekEksepsi;
ObjekEksepsi adalah semua objek yang merupakan turunan dari class Throwable. Salah satu contoh
objek eksepsi adalah ArrayIndexOutOfBounds.
Seperti apa kira-kira bentuk programnya?
45
Outputnya:
Penanganan exception dalam method methodLain()
Penanganan exception dalam method main()
Eksepsi juga dapat dibangkitkan secara
manual melalui kode yang kita tulis. Kita dapat
melakukan hal tersebut dengan kata kunci
throw ini, seperti pada contoh diatas.
Penggunaan Throws
Sangat erat hubungannya dengan
penggunaan exception yang dicek oleh Java.
Keyword ini dipake kalo misalnya ada method
yang mungkin menyebabkan exception tapi
dia gak menangani exception tersebut.
Exception akan dilempar ke luar, maka dari
itu ketika keyword throws digunakan saat
pendeklarasian method.
Cara penulisan:
class NamaClass throws Exception{
.........
}
atau fungsi / prosedur
int f1() throws Exception{
..........
}
46
Cara penulisan:
try{
......//blok
} catch (tipeException1
......//blok
TipeException1
} catch (tipeException2
......//blok
TipeException2
} finally {
......//blok
}
program
e) {
program untuk
e) {
program untuk
program
Terjadi exception
Program Selesai
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: -1
at DemoFinally.main(DemoFinally.java:11)
47
try {
System.out.println(arr[x]);
System.out.println("Tidak terjadi exception");
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Terjadi exception");
System.out.println(arr[x-4]);
}
arr[-1], kan arr ke-negative itu gak ada
finally {
System.out.println("Program Selesai");
}
}
}
Dieksekusi meskipun di
catch ada exception
Data
info
output
Data
Hardware
input
info
Data
info
info
Stream adalah aliran proses informasi data yang direpresentasikan secara abstrak untuk untuk
menulis/menghasilkan/output dan membaca/mendapatkan suatu informasi/input.
semua streams punya sifat yang sama meskipun peralatan fisik yang berhubungan dengannya bedabeda (missal: keyboard, jaringan, dll.)
sebuah program dapat mengirim informasi dengan
membuka stream ke sebuah tujuan informasi
(destination).kemudian menuliskan informasi ke
tujuan secara sekuensial.
Paket yang menangani pembacaan dan penulisan info untuk pemrograman java, java io.
Ada 2 tipe, Byte Stream dan Character Stream
48
Byte Stream
Byte Streams digunakan untuk operasi I/O yang menggunakan data biner (byte). Pada java byte
stream mempunyai 2 buah superclass yaitu InputStream dan OutputStream yang merupakan class
abstract.
1.
DataInputStream(InputStream in)
Untuk membuat sebuah objek DataInputStream
dengan spesifikasi InputStream yang diinginkan.
DataOutputStream(OutputStream out)
Untuk membuat sebuah objek DataOutputStream
dengan spesifikasi OutputStream yang diinginkan.
2. xxx readXxx()
xxx disini dapat diganti dengan tipe data primitif
seperti int, float, byte, boolean, byte, char, dll.
Digunakan untuk membaca dari stream tipe
data tertentu secara langsung.
void writeXxx(xxx v)
xxx disini dapat diganti dengan tipe data primitif
seperti int, float, byte, boolean, byte, char, dll.
49
50
Character Stream
Apa itu character stream?
Digunakan untuk menangani operasi I/O yang menggunakan character dan merupakan sebuah
objek yang dapat membaca dan menuliskan byte stream, kayak byte stream itu sendiri.
Jadi, character stream itu adalah sebuah byte stream yang diteruskan oleh class Reader dan Writer
yang merupakan Abstract class.
FYI, karena karakter dalam java menggunakan Unicode (16 bit length) maka penggunaan character
streams dapat digunakan untuk menangani karakter-karakter internasional (karakter diluar ASCII
standar).
51
Jadi jika ingin membaca dari console dengan Character Streams, dapat ditulis dengan cara :
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader buff = new BufferedReader(input);
atau
BufferedReader buff = new BufferedReader(new InputStreamReader(System.n));
Contoh input:
import java.io.*;
public class DemoStream6 {
public static void main(String[] args) throws IOException {
char data;
String str="";
BufferedReader buff =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ketik : ");
data = (char) buff.read();
while (data!='\r') {
str+=data;
data = (char) buff.read();
}
System.out.println("Yang diketik : "+str);
System.out.println("Program Selesai");
}
}
Outputnya:
Ketik : common
Yang diketik : common
Program Selesai
Contoh output:
import java.io.*;
public class DemoStream8 {
public static void main(String[] args) throws IOException {
PrintWriter output = new PrintWriter (System.out,true);
output.println("Hello World");
}
}
Additional stuff
Outputnya:
52
Hello World
Operasi File
File digunakan sebagai media penyimpan. Untuk mengakses file kita harus menspesifikasikan
dimana file yang akan kita akses, atau file baru yang akan disimpan. Dalam java kita dapat
melakukan operasi file, yaitu membuat file baru atau menulis dan membaca file dengan character
stream atau dengan byte stream.
Untuk menciptakan sebuah file dengan mengakses class java.io.File dan menciptakan objek dari class
tersebut, ini tanpa harus menangkap error io. Berbeda dengan menciptakan file yang langsung
diakses oleh stream, file tersebut harus dapat menangkap error io ketika penciptaan objek class file.
java.io.File
53
Outputnya:
Ketik : commonlabz
54
Outputnya:
commonlabz?
Proses A
Remote method
Objek X
bark()
invocation
Local method
interface
Objek manusia
Agar satu objek bisa berkomunikasi
dengan objek lain maka setiap objek
pasti memiliki definisi interface.
Objek Y
eat()
invocation
Proses B
Objek L
sing()
Objek P
object
sit()
Remote
55
Object Serialization
Apa itu object serialization?
Suatu mekanisme yang dapat membuat sebuah objek dapat dikirimkan seperti mengirimkan data.
Object serialization merupakan perluasan dari inti class java io yang digunakan untuk objek dan bisa
digunakan untuk pengkodean (encoding) untuk objek dan membuat objek tersebut dapat diraih
atau digunakan, dengan melalui bit-bit stream, kemudian dapat digunakan untuk penyusunan
kembali objek tersebut dari bit-bit stream yang dikodekan, dan saling melengkapi. Serialisasi
merupakan mekanisme yang ringan dan kuat untuk komunikasi dengan sockets atau RMI(Remote
Method Invocation). Selain untuk komunikasi dengan sockets teknik ini dapat digunakan juga untuk
menyimpan keadaan suatu status dari suatu objek ke dalam file, seperti yang sudah dijelaskan di
pendahuluan.
Jika kita ingin membuat sebuah objek yang dapat diserialisasikan, maka kita harus
mengimplementasikan salah satu interface java.io.Serializable atau java.io.Externalizable pada
class yang ingin dibuat objek yang dapat diserialisasikan. Untuk lebih jelas tentang serialisasi objek
dibawah ini akan diberikan sedikit penjelasan yang terkait dengan objek serialisasi.
Interface java.io.Serializable
Interface serializable harus di implementasikan jika ingin membuat objek yang dapat diserialisasi,
implementasi interface serializable tergolong sederhana karena tidak terdapat method yang harus
didefinisikan untuk di override.
Tujuan mengimplementasikan interface serializable adalah untuk memberitahukan kepada JVM
(Java Virtual Machine), bahwa objek yang menerapkan serializabel merupakan objek yang dapat
diserialisasikan.
Class java.io.ObjectOutputStream
Class objectoutputstream adalah kelas yang
digunakan untuk mengirimkan objek
menjadi stream yang kemudian dapat
dikirimkan ke file atau ke socket (jaringan).
Class ObjectOutputStream mempunyai 2
constructor dan 31 method untuk versi jdk 1.5.
Adapun method dan constructor yang sering
digunakan adalah
ObjectOutputStream(OutputStream out)
Membuat ObjectOutputStream yang akan
menuliskan ke spesifik OutputStream yang
dikehendaki.
void writeObject(Object obj)
menuliskan objek yang akan dikirimkan ke
ObjectOutputStream.
56
Class java.io.ObjectInputStream
Class ObjectInputStream adalah kelas yang
digunakan untuk mengambil objek dari
stream yang dikirimkan melalui file atau
socket (jaringan). Class ObjectInputStream
mempunyai 2 Constructors, 31 methods untuk
versi jdk 1.5. Method dan constructor yang
sering digunakan adalah
ObjectInputStream(InputStream in)
Membuat ObjectInputStream yang akan
mengambil spesifik stream dari InputStream
yang dikehendaki.
Object readObject()
Membaca objek yang telah diddefinisikan.
import java.io.*;
public class BarangSer implements Serializable{
private String nama;
private int jumlah;
public BarangSer (String nm, int jml){
nama=nm;
jumlah=jml;
}
public void tampil(){
System.out.println("nama barang: "+nama);
System.out.println("jumlah barang: "+jumlah);
}
public void simpanObject(BarangSer ob){
try{
FileOutputStream fos= new FileOutputStream("dtBrg.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(ob);
oos.flush();
}catch(IOException ioe){
System.err.println("error"+ioe);
}
}
public void bacaObject(BarangSer obb){
try{
FileInputStream fis= new FileInputStream("dtBrg.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
while( (obb=(BarangSer)ois.readObject())!=null)
obb.tampil();
}catch(IOException ioe){
System.exit(1);
}catch(Exception e){
System.exit(1);
}
}
public static void main(String[] args){
BarangSer a1 = new BarangSer("Baju",5);
a1.simpanObject(a1);
a1.bacaObject(a1);
}
}
Output program:
57
Modifier Transient
Buat apa modifier transient ?
Pada contoh di atas, objek yang kita simpan itu bisa dibaca oleh siapapun yang punya hak akses.
Nah buat antisipasi hal itu, kita bisa buat atribut tidak diserialisasikan. Makanya kita pake modifier
transient pada atribut yang ngga pengen kita serialisasikan.
Misalnya, dari contoh diatas, salah satu atributnya nggak kita serialisasikan maka pada saat
dijalankan hasil dari atribut tersebut mengeluarkan nilai defaultnya untuk yang tak mempunyai
nilai. Dalam kasus ini kita dapat melakukan manipulasi, sehingga atribut transient dapat
diserialisasikan dengan dienkripsikan terlebih dahulu kemudian didekripsikan ketika dibaca. Untuk
melakukan itu kita harus mengoverriding method writeObject yang ada pada kelas
ObjectOutputStream dan readObject yang ada pada kelas ObjectInputStream.
Selain dengan cara diatas ada cara lain yang mungkin lebih mudah untuk dipahami yaitu dengan
mengimplementasikan interface java.io.Externalizable.
Interface java.io.Externalizable
Interface Externalizable merupakan subclass dari interface Serializable. Akan tetapi interface
Externalizable terdapat 2 method yang harus dioverriding dan didefinisikan yaitu writeExternal dan
readExternal. Berikut ini penjelasan kedua method tersebut.
void writeExternal(ObjectOutput out) throws IOException
digunakan untuk menyimpan objek
Nama Method
kedalam suatu metode operasi,
seperti file/socket. Terdapat
void writeBoolean(Boolean b)
parameter ObjecOutput yang
bernama out, ObjectOutput adalah
void writeByte(int i)
jenis interface yang dijadikan tipe
void writeChar(int c)
variable parameter. Dan berikut
beberapa method yang dapat
digunakan parameter tersebut.
void writeDouble(double d)
Keterangan
Menuliskan nilai bertipe Boolean
Menuliskan nilai bertipe byte
Menuliskan nilai character dengan
(byte)(0xff & (c >> 8))
(byte)(0xff & c)
void writeFloat(float f)
void writeInt(int i)
void writeLong(long l)
void writeShort(int s)
void writeObject(Object o)
58
ini,
bagaimana
bentuk
kode
1.
2.
3.
4.
5.
59
import java.io.*;
public class BarangEx implements Externalizable{
private String nama;
private int jumlah;
public BarangEx(){
}
//konstruktor 1
//konstruktor2
60
Modul 5
Multithreading
Modul 5
Multithreading
Tujuan:
1. Kenal konsepnya
2. Bisa implementasiinnya
3. Ngerti dan paham serta
bisa implementasiin
sinkronisasi di
multithreading
mandi()
Satu program
x.sabunan()
x.sikatGigi()
x.selesai()
mandi()
mandi()
x.sabunan()
x.sikatGigi()
Satu
program
Dua
x.bilasSabun()
x.selesaiSabun()
Satu thread
x.kumur2()
threads
x.selesaiSikat()
61
62
Modul 5
Multithreading
Class java.lang.Thread
Buat objeknya
Panggil method start()
63
2
Interface Runnable ada
di java.lang package
64
Modul 5
Multithreading
3
65
setPriority(int arg())
MIN_PRIORITY: 1
thread tertentu.
MAX_PRIORITY: 10
running
start
New Thread
Kondisi awal dari sebuah
thread, ketika objek
thread dibuat
Runnable
Not Runnable
thread lagi running tapi
gak ngelakuin apa-apa.
run method
selesai
Dead
thread telah selesai eksekusi
task
66
Modul 5
Multithreading
Menjalankan thread.
Menghentikan thread.
Dan lain-lain.
Sinkronisasi Thread
Kenapa harus ada sinkronisasi thread?
Kalo misalnya ada beberapa thread yang membutuhkan sebuah resource yang sama, nah supaya
cuma ada satu thread aja yang menggunakan resource dalam satu waktu maka butuh sebuah
aturan dalam pengaksesannya. Nah, aturan dalam pengaksesannya kita kenal kemudian sebagai
sinkronisasi thread.
Misalnya saja pada saat penulisan file, dalam satu waktu cuma boleh ada satu thread aja yang boleh
menulisi file. Kalo misalnya file ditulisi secara bersama-sama maka isi filenya bisa jadi ngga valid
nanti. Maka dari itu, pada saat penulisan file ini kita butuh sinkronisasi.
67
Jika suatu method atau objek dilakukan sinkronisasi, maka otomatis objek atau method tersebut
dilock dan jika ada thread lain yang mau akses, dia harus menunggu sampai method tersebut selesai
dijalanin atau objek tersebut dilepas.
synchronized.
synchronized(object){
//isi method
}
1
}
68
Modul 6
Graphical User Interface (GUI)
Tujuan:
5.
6.
AWT
Platform oriented
Java.awt
AWT components
Swing
multiplatform
Javax.swing
Label
Button
Checkbox
Choice
List
MenuItem
TextField
Scrollbar
TextArea
ScrollPanel
Canvas
Swing components
Swing component pada dasarnya sama kayak AWT tapi ada penambahan fitur pada Swing.
Modul Praktikum Pemrograman Berorientasi Objek
Common Laboratory 2009/2010
69
adalah panel.
Canvases. Digunakan untuk menampilkan image atau pembuatan program yang berbasis
grafik. Kita bias menggambar titik, lingkaran dan sebagainya.
UI components. contohnya buttons, lists, simple pop-up menus, check boxes, text fields, dan
elemen khusus lain untuk user interface.
Window contsruction components. Contohnya windows, frames, menu bars, dan dialog boxes.
70
import javax.swing.*;
public class DialogDemo {
frame sbg parent bagi dialog
public static void main(String[] args) {
JFrame frame = new JFrame("Contoh Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
JOptionPane.showConfirmDialog(frame,
informasi dialog
"Contoh dialog konfirmasi ...",
"Judul Dialog",
Judul dialog
JOptionPane.OK_CANCEL_OPTION,
jenis tombol
JOptionPane.QUESTION_MESSAGE);
}
icon
71
Pengaturan Layout
Pengaturan dengan BorderLayout
BorderLayout
adalah
kelas
yang
menempatkan
komponen
dengan
pendekatan arah mata angin. Pada program
dibawah ini kelima tombol diletakkan pada
posisi yang
berbeda-beda,
ditentukan
konstanta: NORTH, EAST, SOUTH, WEST,
CENTER.
//file BorderLayoutDemo.java
import javax.swing.*;
import java.awt.*;
public class BorderLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame ("Contoh Border Layout");
BorderLayout layout = new BorderLayout(1,1);
frame.getContentPane().setLayout(layout);
JButton btnNorth = new JButton("Posisi NORTH");
JButton btnSouth = new JButton("Posisi SOUTH");
JButton btnEast
= new JButton("Posisi EAST");
JButton btnWest
= new JButton("Posisi WEST");
JButton btnCenter = new JButton("Posisi CENTER");
frame.getContentPane().add(btnNorth,BorderLayout.NORTH);
frame.getContentPane().add(btnSouth,BorderLayout.SOUTH);
frame.getContentPane().add(btnEast,BorderLayout.EAST);
frame.getContentPane().add(btnWest,BorderLayout.WEST);
frame.getContentPane().add(btnCenter,BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
72
//file BoxLayoutDemo.java
import javax.swing.*;
import java.awt.*;
public class BoxLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame ("BoxLayoutDemo");
Box comp = new Box(BoxLayout.Y_AXIS); //X_AXIS
JButton btn1 = new JButton("Button 1");
JButton btn2 = new JButton("Button 2");
JButton btn3 = new JButton("Button 3");
JButton btn4 = new JButton("Long Named Button 4");
JButton btn5 = new JButton("Button 5");
btn1.setAlignmentX(Component.CENTER_ALIGNMENT);
btn2.setAlignmentX(Component.CENTER_ALIGNMENT);
btn3.setAlignmentX(Component.CENTER_ALIGNMENT);
btn4.setAlignmentX(Component.CENTER_ALIGNMENT);
btn5.setAlignmentX(Component.CENTER_ALIGNMENT);
comp.add(btn1);
comp.add(btn2);
comp.add(btn3);
comp.add(btn4);
comp.add(btn5);
frame.getContentPane().add(comp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
73
import javax.swing.*;
import java.awt.*;
public class CardLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame ("CardLayoutDemo");
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JButton btn1 = new JButton("Tombol 1");
JButton btn2 = new JButton("Tombol 2");
JTextField text1 = new JTextField(20);
panel1.add(btn1);
panel1.add(btn2);
panel2.add(text1);
JTabbedPane tab = new JTabbedPane();
tab.add(panel1,"Tab dengan Button");
tab.add(panel2,"Tab dengan TextField");
frame.getContentPane().add(tab,BorderLayout.NORTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,150);
frame.show();
}
}
74
btn1
btn2
btn3
btn4
btn5
=
=
=
=
=
new
new
new
new
new
JButton("Button 1");
JButton("Button 2");
JButton("Button 3");
JButton("Long-Named Button 4");
JButton("Button 5");
frame.getContentPane().add(btn1);
frame.getContentPane().add(btn2);
frame.getContentPane().add(btn3);
frame.getContentPane().add(btn4);
frame.getContentPane().add(btn5);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,150);
frame.show();
}
}
75
import javax.swing.*;
import java.awt.*;
public class GridLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame ("GridLayoutDemo");
GridLayout layout = new GridLayout(3,2);
layout.setHgap(5);
layout.setVgap(10);
frame.getContentPane().setLayout(layout);
JButton
JButton
JButton
JButton
JButton
btn1
btn2
btn3
btn4
btn5
=
=
=
=
=
new
new
new
new
new
JButton("Button 1");
JButton("Button 2");
JButton("Button 3");
JButton("Long-Named Button 4");
JButton("Button 5");
frame.getContentPane().add(btn1);
frame.getContentPane().add(btn2);
frame.getContentPane().add(btn3);
frame.getContentPane().add(btn4);
frame.getContentPane().add(btn5);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
76
import javax.swing.*;
import java.awt.*;
public class GridBagLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame ("GridBagLayoutDemo");
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
frame.getContentPane().setLayout(layout);
c.fill = GridBagConstraints.HORIZONTAL;
JButton btn1 = new JButton("Button 1");
c.weightx = 0.5;
c.gridx
= 0;
//kolom 0
c.gridy
= 0; //baris 0
layout.setConstraints(btn1,c);
frame.getContentPane().add(btn1);
JButton btn2 = new JButton("Button 2");
c.gridx
= 1;
//kolom 1
c.gridy
= 0; //baris 0
layout.setConstraints(btn2,c);
frame.getContentPane().add(btn2);
JButton btn3 = new JButton("Long-Named Button 3");
c.ipady
= 30;//perbesar tinggi
c.gridwidth = 2; //menempati 2 kolom
c.gridx
= 0; //kolom 0
c.gridy
= 1; //baris 1
layout.setConstraints(btn3,c);
frame.getContentPane().add(btn3);
JButton btn4 = new JButton("Button 4");
c.ipady
= 50;//perbesar tinggi
c.gridwidth = 1; //menempati 1 kolom
c.gridx
= 0; //kolom 0
c.gridy
= 2; //baris 2
layout.setConstraints(btn4,c);
frame.getContentPane().add(btn4);
JButton btn5 = new JButton("Button 5");
c.ipady
= 0; //tinggi normal
c.gridwidth = 1; //menempati 1 kolom
c.gridx
= 1; //kolom 1
c.gridy
= 2; //baris 2
c.insets
= new Insets(10,0,0,0); //t,l,b,r
c.anchor
= GridBagConstraints.SOUTH;
layout.setConstraints(btn5,c);
frame.getContentPane().add(btn5);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
Modul Praktikum Pemrograman Berorientasi Objek
c.gridy
= 2; //baris 2
Common Laboratory 2009/2010
c.insets
= new Insets(10,0,0,0); //t,l,b,r
77
Contoh: Terdapat tiga buah komponen C1, C2, C3. Komponenkomponen berikut akan disusun dengan cara sequential group dan
parallel group.
2. Dalam
penyusunan
secara
parallel,
komponen dapat ditaruh sebagai baseline-,
top-, atau bottom- jika mengukuti sumbu
vertikal. Komponen juga ditaruh sebagai
left-, right- atau center- jika mengukuti
sumbu horizontal.
Pembahasannya:
Horizontal Layout
layout.setHorizontalGroup ( layout.createSequentialGroup()
.addComponent(label)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
);
78
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(label)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(textField)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(caseCheckBox)
.addComponent(wholeCheckBox))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(wrapCheckBox)
.addComponent(backCheckBox))))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
);
Setelah itu grup terakhir yang berisi dua buah button, tambahkan pada code. Maka code akan
berkembang menjadi,
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(label)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(textField)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(caseCheckBox)
.addComponent(wholeCheckBox))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(wrapCheckBox)
.addComponent(backCheckBox))))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
.addComponent(findButton)
.addComponent(cancelButton))
);
79
layout.putConstraint(SpringLayout.EAST, contentPane,5,
SpringLayout.EAST, textField);
layout.putConstraint(SpringLayout.SOUTH, contentPane,5,
SpringLayout.SOUTH, textField);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}
80
Event Handling
Untuk mendeteksi atas apa yang dilakukan oleh user, diperlukan penanganan khusus terhadap
event (peristiwa yang di-stimulasikan/di-trigger) yang diperlukan oleh user terhadap komponen GUI
tertentu. Penanganan ini disebut Event Handling Component. Event Handling Component dibagi atas
2 bagian, yaitu Event Listener dan Event Handler. Untuk mengenal 2 Method Event tersebut dapat
diilustrasikan sbb: Bila kita mengklik suatu object button, maka suatu event tercipta. Event ini akan
ditangkap oleh Event Listener karena setiap komponen secara otomatis akan diberi ID (identitas)
seperti button1, button2, textfield1, dll atau kita dapat memberikan ID atas komponen tersebut
dengan memberi nama suatu object. Sehingga java mengenal event mana yang ditangkap.
Selanjutnya kita harus menentukan Event Handler dari komponen tersebut, yaitu berupa blok
program/statement yang akan memproses bila terjadi suatu event yang ditangkap oleh Event
Listener. Event Handler dapat dianalogian seperti pada fungsi operasi +, -, :, x, = pada aplikasi
kalkulator. Jika ingin mengalikan 2 bilangan maka kita harus menekan tombol x. Setiap tombol
operasi tersebut akan mengasilkan pemrosesan yang berbeda-beda.
Class-Class Event
Sebuah event objek mempunyai sebuah class event sebagai tipe data acuannya. Akar dari hierarki
class event adalah class EventObject, yang dapat di temukan pada paket java.util. Immediate
subclass dari class EventObject adalah class AWTEvent yang didefinisikan pada paket java.awt.
Berikut ini beberapa dari kelas-kelas AWTEvent:
Classs Event
ComponentEvent
InputEvent
ActionEvent
ItemEvent
KeyEvent
MouseEvent
TextEvent
WindowEvent
Deskripsi
Merupakan extend dari AWTEvent yang dijalankan ketika sebuah komponen
dijalankan, di resize, dibuat visible atau hidden.
Merupakan extend dari ComponentEvent dan Abstract root class Event untuk
semua komponent input.
Merupakan extend dari AWTEvent yang dijalankan ketika sebuah tombol
ditekan, melakukan double klik daftar item, atau memilih menu.
Merupakan extend dari AWTEvent.Dijalankan ketika sebuah item di select
seperti pada combobox dan list.
Merupakan extend InputEvent yang di jalankan saat sebuah key di tekan,
dilepas, atau diketikan.
Merupakan extend InputEvent dijalankan ketika sebuah mouse ditekan,
dilepas, diklik, atau sebuah mouse masuk dan keluar dari bagian visible suatu
component.
Merupakan extend dari AWTEvent, dijalankan ketika sebuah nilai text
berubah.
Merupakan extend dari ComponentEvent yang di jalankan ketika sebuah
object window di buka, ditutup, diaktifkan, dan dinonaktifkan.
81
Event Listener
Event Listener merupakan class yang mengimplementasikan interface <Type> Listener. Berikut ini
merupakan beberapa listener yang sering digunakan:
Event Listener
ActionListener
Mouse Listener
MouseMotionListener
Window Listener
Deskripsi
Bereaksi atas perubahan mouse atau keyboard
Bereaksi atas pergerakan mouse
Menyediakan method untuk memantau pergerakan mouse seperti
drag dan pemindahan mouse.
Bereaksi atas perubahan window
/*author : andy*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class event_handling{
private JButton b1,b2,b3,b4;
private JTextField text1,text2;
//private JPanel panel1,panel2;
private JLabel label1,label2;
private JFrame frame;
private int a,b;
private String hasilJum=Hasil Penjumlahan adalah: ;
Lengkapilah kode
disamping sesuai
dengan nomornya!
1
2
3
82
1 public event_handling(){
}
public void launch()
{
FlowLayout layout = new FlowLayout(FlowLayout.CENTER);
frame.getContentPane().setLayout(layout);
//frame.setLayout(new FlowLayout(FlowLayout.CENTER));
b1.addActionListener(new tambahHandler());
b2.addActionListener(new kurangHandler());
b3.addActionListener(new kaliHandler());
b4.addActionListener(new bagiHandler());
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.add(label1);
panel1.add(text1);
panel1.add(label2);
panel1.add(text2);
panel2.add(b1);
panel2.add(b2);
panel2.add(b3);
panel2.add(b4);
frame.getContentPane().add(panel1);
frame.getContentPane().add(panel2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,200);
frame.show();
}
83
http://edn.embarcadero.com/article/26970
http://en.wikipedia.org/wiki/Swing_(Java)
http://en.wikipedia.org/wiki/Abstract_Window_Toolkit
84
Modul 7
Netbeans, Applet, dan JDBC
Netbeans
Tujuan:
4. Pahamdan bisa implementasiin cara buat
desain interface menggunakan Netbeans.
5. Ngerti konsep JDBC.
6. Bisa implementasiin JDBC ke suatu
program Java.
7. Ngerti dan bisa implementasiin program
Java Applet.
Download links
http://java.sun.com/javase/downloads/
index.jsp
www.netbeans.org
85
86
Work area...
Project View
Members View
87
Setelah meng-klik menu Java Class, maka akan muncul jendela sebagai berikut. Pada contoh modul
ini akan dibuat kelas yang bernama Barang.
Biasakan nama kelas
diawali dengan huruf besar
Klik Finish
Setelah kelas Barang dibuat, masukan contoh kode berikut ini pada work area:
F9
88
Shift
+ F6
Properties
Components yang
sedang aktif
Swing
Components
Untuk memulai membuat interface, drag komponen Jlabel dari panel kedalam work area.
Untuk mengubah-ubah properti dari Jlabel,
dapat dilakukan di properties, klik kanan
pada Jlabel
Digunakan untuk
merumah nama
variabel Jlabel
89
Lakukan hal yang sama, sehingga membentuk sebuah interface sebagai berikut. Ubahlah nama
varibael setiap kompunen JTextField agar mudah dalam penggunaannya.
90
91
smapluspgri.sch.id/KnowledgeSharing/wp.../tutorial-netbeans.pdf
92
Keuntungannya?
Download di:
http://java.sun.com/products/jdbc
Inisialisasi Driver
Class.forName( nama_driver );
tiap
Catatan :
Pada Netbeans 6.5, sudah terdapat beberapa driver
yang dapat digunakan langsung seperti Java DB,
MySQL, dan PostgreSQL. Cara penggunaannya yaitu
dengan mengklik kanan pada folder library dalam
project yang dibuat kemudian pilih Add Library..,
lalu pilih driver yang akan kita pakai.
93
Penggunaan Database
A. Statement
Statement merupakan suatu class pada java
yang digunakan untuk mengeksekusi suatu
query, digunakan setelah menginisialisasi
variable koneksi pada Connection di point
ke-2. Inisialisasinya yaitu :
stmnt.close();
B. ResultSet
Setelah menginisialisai variabel statement
maka selanjutnya menginisialisai variabel
ResultSet yang nantinya akan digunakan
untuk menyimpan suatu baris record pada
database, dengan kata lain variabel ini
merupakan pointer yang akan menunjuk
suatu baris pada table.
Caranyaa.
DriverMana
ger.getCon
nection(n
ama_URL,
nama_user
,password
);
ResultSet var_set;
DriverManager.get
Connection(nama_
URL,nama_user,
password);
Mengakhiri Koneksi.
Caranyaa.
conn.close();
DriverManag
er.getConne
ction(nama
_URL,nama
_user,pas
sword);
Database: MySQL
Username: root
Password:
Jalan di localhost.
Selanjutnya, pada project yang sudah kita buat sebelumnya yaitu Project javaaplication, lakukan
sedikit perubahan pada kelas FormPenjualan dimana tombol submit dan textarea output dihapus
dari panel dan tambahkan dua button baru dengan label dan nama variabel insert dan view, serta
tambahkan satu komponen JTable dengan nama variabel tabel. Gambar dibawah adalah kelas
FormInput setelah diedit.
94
Mengatur jumlah
kolom dan baris
95
Setelah kelas FormInput diedit, tambahkan driver MySQL dengan cara klik kanan pada folder
library, pilih Add Library, lalu pilih MySQL JDBC Driver kemudian klik add library.
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.Statement;
javax.swing.JOptionPane;
96
1
public Database(){
//Loads JDBC driver
try {
Class.forName("org.gjt.mm.mysql.Driver");
}catch(Exception e) {
JOptionPane.showMessageDialog(null,""+e.getMessage(),"JDBC Driver Error",JOptionPane.WARNING_MESSAGE);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost/db_barang",dbuser, dbpasswd);
stmt = con.createStatement();
}catch (Exception e) {
JOptionPane.showMessageDialog(null,""+e.getMessage(),"Connection Error",JOptionPane.WARNING_MESSAGE);
}
}
2
public ResultSet getData(String SQLString){
try {
rs = stmt.executeQuery(SQLString);
}catch (Exception e) {
JOptionPane.showMessageDialog(null,"Error :"+ e.getMessage(),error ,JOptionPane.WARNING_MESSAGE);
}
return rs;
}
3
}
return i;
}
Setelah membuat kelas Database, selanjutnya edit kelas barang dengan menambahkan 2 method
baru, yaitu saveBarang dan getBarang. Berikut adalah potongan kode pada kelas Barang.
Tambahkan import java.sql.ResultSet;
97
Setelah kelas Database dibuat dan kelas Barang diedit, selanjutnya perlu ditambahkan action listener
pada button yang ada di kelas FormInput untuk menangkap even yang terjadi, dalam hal ini
JButton insert dan view. Berikut adalah kode action listener untuk tombol insert dan view.
Selanjutnya lakukan deploy aplikasi ini dengan mengklik Run Clean and Build Project
atau tekan Shift + F11. Aplikasi dapat dijalankan dengan mengeksekusi file javaaplication.jar yang
ada di folder dist pada project folder yang kita buat. Namun sebelumnya jalankan terlebih dahulu
server MySQL nya.
98
Insert barang
View barang
99
Applet
Transmisi
ByteCode
start()
init()
Page
Page
aktif
nonaktif
inisialisasi
destroy()
stop()
terminasi
Dengan demikian class Applet dapat dikembangkan dengan melakukan override pada metoda
tersebut.
import java.applet.*;
public class MyApplet extends Applet {
public void init(){
//inisialisasi variabel dan lainnya
}
public void start(){
//lakukan bila page aktif
}
public void stop(){
// lakukan bila page akan nonaktif
}
public void destroy(){
Catatan:
Mengganti (override)
metoda init(), start(), stop()
dan destroy() hanya
dilakukan bila memang
dibutuhkan oleh pembuat
program.
}
}
100
start()
paint()
0,0
WIDTH-1,0
0, HEIGHT-1
101
Parameter dapat diberikan dalam jumlah yang tidak terbatas dan Java Applet
menggunakan metoda getParameter() untuk membaca nama dan nilai parameter tersebut.
String str1,str2,str3;
str1 = getParameter(namaparam1).
str2 = getParameter(namaparam2).
str3 = getParameter(namaparam3).
Bila nama parameter tidak ditemukan, maka nilai string adalah null.
Perhatikan gambar di bawah ini
Dengan bentuk hasil output seperti di atas, kira-kira bagaimanakah kode programnya?
102
import java.applet.Applet;
import java.awt.*;
public class Contoh extends Applet implements Runnable {
String msg_1 = " Pemrograman Berorientasi Objek
(PBO)";
String msg_2 = " -----------Contoh Applet----------";
String s1,s2;
Thread t = null;
int state;
boolean stopFlag;
public void init() {
setBackground(Color.ORANGE);
setForeground(Color.BLACK);
s1 = getParameter("nama");
s2 = getParameter("jurusan");
}
public void start() {
t = new Thread(this);
stopFlag = false;
t.start();
}
public void run() {
char ch;
// Display banner
for( ; ; ) {
try {
repaint();
Thread.sleep(250);
ch = msg_1.charAt(0);
msg_1 = msg_1.substring(1, msg_1.length());
msg_1 += ch;
if(stopFlag)
break;
}
catch(InterruptedException e) {}
}
}
public void stop() {
stopFlag = true;
t = null;
}
public void paint(Graphics g) {
g.drawString(msg_1, 10, 60);
g.drawString(msg_2, 50, 40);
g.drawString("Nama Praktikan : " + s1, 20 , 100);
g.drawString("Jurusan
: " + s2, 20 , 120);
}
}
103