NIK : 06830333-1
KBK : ITP
Menerangkan dengan sesungguhnya bahwa modul ini yang digunakan untuk pelaksanaan
praktikum Pemrograman Berorientasi Objek D3 Semester Genap periode 2009/2010 di
Laboratorium Common Departemen Teknik Informatika
Mengetahui,
Dosen PJMP Pemrograman Berorientasi Objek D3
Tjokorda Agung
NIK: 06830333-1
What’s inside of this?
Modul 2 OOP I 18
Modul 3 OOP II 33
Modul 5 Multithreading 61
Tujuan:
Apa itu Java?
1. Tahu dan kenal bahasa Java merupakan salah satu bahasa pemrograman
pemrograman Java. yang unggul dibandingkan dengan yang lain. Karena
Java merupakan filter-filter dari bahasa
2. Tahu cara instalasi dan konfigurasi pemrograman yang ada sebelumnya.
Java.
Java dikenal sebagai bahasa pemrograman “Modern”
3. Ngerti dan bisa implementasiin tipe karena kemampuannya untuk mendukung OOP
data, variabel, dan konstanta.
dan mempermudah pemrograman aplikasi
multithreading.
4. Ngerti dan bisa implementasiin
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).”
Bagaimanakah sejarahnya?
Java dibuat karena ingin
membuat sebuah bahasa
pemrograman yang bersifat
portable dan platform
independent (tidak
Di tahun 1995 tergantung mesin dan sistem
operasi), sehingga bisa
digunakan untuk membuat
software yang bisa ditanam
*Di tahun 1996 Java pada berbagai peralatan
James diadopsi Netscape elektronik customer biasa.
Patrick
Gosling Naughton
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.
Ketika sebuah program sudah minta memori Java garbage collector berjalan sebagai thread berprioritas
dari sistem operasi, biasanya memori tidak rendah dan melakukan kerja saat tidak ada kerja lain di
pernah lagi dikembalikan tapi dipegang program. Umumnya, Java garbage collector bekerja saat
untuk dipake lagi sama program yang kita
idle pemakai menunggu masukan dari keyboard atau
buat tadi. Nah, siapakah yang mengelola hal
itu? Garbage Collector [salah satu pengelola mouse. Garbage collector akan bekerja dengan prioritas
penyimpanan]. tinggi saat interpreter kekurangan memori. Hal ini jarang
terjadi karena thread berprioritas rendah telah melakukan
tugas dengan baik secara background.
Instalasi Java
Ekstraksi
1
file installer berupa self-
installing file, berupa .exe
kalau dijalankan dia
sudah ekstrak dirinya
untuk dikopikan ke
direktori.
Pilih default untuk
direktori instalasi.
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%
1 2
Bentuk Penulisan:
javac namaProgram.java
bagaimana jika ada error? Akan tampil
pesan error setelah mengetik perintah di atas.
Contoh disamping adalah
javac namaProgram
jika tidak ada error maka akan langsung
muncul tulisan Hello World seperti contoh di
samping.
Program yang kita buat pasti butuh memori untuk menyimpan data yang sedang diproses. Nah,
masalahnya kita nggak pernah tahu di memori sebelah mana komputer akan meletakkan data dari
program kita . Untuk memudahkan pengambilan data pada lokasi memori, maka muncul lah
konsep variable.
Setiap variabel punya jenis alokasi memori tersendiri. Nah, variabel yang berbentuk bilangan bulat,
bilangan pecahan, karakter, dan sebagainya. Sering disebut dengan tipe data.
Bagaimanakah
Solusinya?
Tipe data dengan nilai benar (true) atau salah (false), biasanya banyak digunakan
dalam kondisional.
Solusinyaa….
Konversi
Dilakukan ketika sebuah nilai di-assign ke variabel yang berbeda tipe datanya
Rules in Conversion Salah satu contoh konversi, silahkan cari contoh konversi lainnya
Ternyata, ada dua macam tipe variabel data dalam bahasa Java lho... ayo, kita lihat...
Contohnyaa...
int dataint;
char chardata; Aturan Penamaan Variabel di
float x = 12,67; Java
1. Harus terdiri atas sederetan karakter
Unicode yang diawali oleh karakter
format nama variable huruf atau garis bawah. Unicode
merupakan system penkodean karakter
1. Diawali dengan huruf kecil. yang dapat dibaca oleh berbagai
2. Jika nama variable lebih dari satu kata, bahasa manusia.
kata ke-2, ke-3, dst, diawali dengan huruf 2. Tidak boleh berupa keyword (kata yang
capital dan ditulis menyatu. dicadangkan), null, atau literal
true/false.
Harus unik dalam suatu scope
Variabel Array
Anggap array sebagai sebuah deretan
rumah pada sebuah jalan, dan
rumah-rumah tersebut memiliki
Data Data 1 Data 2 Data 3 …. Data N
bentuk yang sama. Untuk
Index 0 1 2 …. N-1 membedakan rumah yang satu
dengan yang lain maka dibutuhkan
Elemen variabel array Urutan Elemen variabel sebuah nomor. Nomor itulah yang
kemudian kita kenal sebagai index.
array (Harus unik)
Bentuk umumnya…
tipeData[] namaVariable [= new tipeData [jumlahElemen] ];
[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; namaVariableArray = new int[7];
Kalo jumlah elemen belum dipesan, kita gak
Memesan jumlah elemen di salah satu baris
bisa pake variable array untuk nyimpen
data.
3
int[] varibleArray3 = {5, 3, 23, 99, 22, 1, 6}; Variabel array ini memiliki 7
elemen. Di mana setiap elemen
int[] variableArray3 = new int[]{1,23,45,4,3,7,8};
sudah terisi data.
Ternyata kita bisa lho menghitung jumlah elemen pada array dua dimensi.
m[0][0] = 1;
m[1][1] = 1;
m[2][2] = 1;
m[3][3] = 1;
Operator
Operator Relasional
Jenis Operator Relasional
Operator Kondisional
Jenis Operator Kondisional
Operator ini menghasilkan nilai
yang sama dengan operator Operator Contoh Keterangan
relasional, hanya saja
penggunaanya lebih pada
operasi-operasi boolean.
Operator Bitwise
Statement if
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 2 Bentuk statement if– else dengan beberapa
pilihan operasi pemrosesan : pilihan operasi pemrosesan
if (ekspresi_kondisional){ if (ekspresi_kondisional_A){
statement1; statement1;
statement2; statement2;
… …
}else{ }else if (ekspresi_kondisional_B){
statement1; statement1;
statement2; statement2;
… …
} }else{
statement1;
statement2;
…
}
While Do For
while( expression ){ do { for (initialization;expression;step){
statement1; statement1; statement1;
statement2; statement2; statement2;
....... ....... ...
} } while(expression) }
while ( expression );
Selama expression benar, while akan Hasil dari while akan dikembalikan kepada
dieksekusi do
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
http://eecchhoo.wordpress.com/2008/08/11/download-
tutorial-pemrograman-java-bahasa-indonesia/
Tujuan:
Apa itu OOP?
1. Mengerti konsep dasarnya. Merupakan teknik membuat suatu program
2. Bisa membandingkan pemrograman berdasarkan objek dan apa yang bisa dilakukan
objek tersebut.
berorientasi objek dengan prosedural.
3. Ngerti dan bisa implementasiin Class, Object-oriented program terdiri dari objek-objek yang
Object, Method, dan Constructor berinteraksi satu sama lain untuk menyelesaikan
sebuah tugas.
pada program sederhana.
Dianjurkan diimplementasikan Baik untuk program kecil yang berisi sedikit code.
untuk program dengan berbagai
ukuran karena lebih mudah untuk Tidak dianjurkan diimplementasikan pada
men-debug. program berukuran besar, karena susah untk di-
manage dan di-debug.
Pewarisan (Inheritance)
Contoh inheritance
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.
Polymorphism
Access Modifier :
Default (tak ada modifier ) Dikenali di paketnya Diwarisi subclass di paket yang sama
dengan superclassnya. Dapat diakses oleh
Friendly method-method di class-class yang sepaket.
Abstract Class dapat Optional untuk Tidak ada method body Tidak dapat diterapkan.
berisi method dituliskan di yang didefinisikan. Method
abstract. Class interface memerlukan class kongkret
tidak dapat karena yang merupakan subclass
diinstantiasi interface secara yang akan
inheren adalah mengimplementasikan
Tidak
abstract. method abstract.
mempunyai
constructor
Final Class tidak Tidak dapat Method tidak dapat Berperilaku sebagai
dapat diterapkan. ditimpa oleh method di konstanta
diturunkan. subclass-subclassnya
Static Tidak dapat Tidak dapat Mendefinisikan method Mendefinisikan variable milik
diterapkan. diterapkan. (milik) class. Dengan class. Dengan demikian, tidak
demikian tidak memerlukan instant object
memerlukan instant object untuk mengacunya. Variabel
untuk menjalankanya. ini dapat digunakan
Method ini tidak dapat bersama oleh semua instant
menjalankan method yang objek.
bukan static serta tidak
dapat mengacu variable
yang bukan static.
synchronized Tidak dapat Tidak dapat Eksekusi dari method Tidak dapat diterapkan
diterapkan. diterapkan. adalah secara mutual pada deklarasi. Diterapkan
exclusive diantara semua pada instruksi untuk
thread. Hanya satu thread menjaga haya satu thread
pada satu saat yang dapat yang mengacu variable pada
menjalankan method satu saat.
Native Tidak dapat Tidak dapat Tidak ada method body Tidak dapat diterapkan.
diterapkan. diterapkan. yang diperlukan karena
implementasi dilakukan
dengan bahasa lain.
Transient Tidak dapat Tidak dapat Tidak dapat diterapkan. Variable tidak akan
diterapkan. diterapkan. diserialisasi
Volatile Tidak dapat Tidak dapat Tidak dapat diterapkan. Variabel diubah secara
diterapkan. diterapkan. asinkron. Kompilator tidak
pernah melakukan optimasi
atasnya.
Contoh :
public class Manusia {} Contoh modifier di class
private int tinggi; Contoh modifier di atribut
//definisi atribut
return umur;
Answer:
[modifier]void namaMethod(parameter1,parameter2,…parameterN)
{
Deklarasi-deklarasi dan proses ;
}
x = 10;
y = 20;
//passed by value
z.calculate(x,y);
//passed by reference
z.calculate(z);
Constructor
Tipe khusus method yang digunakan untuk
menginstansiai atau menciptakan sebuah objek.
objMns1.setNama("Markonah");
objMns1.setUmur(76);
arrMns[0] = objMns1;
arrMns[1] = objMns2;
arrMns[2] = objMns3;
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.
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.
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 object-oriented
Keuntungan pengorganisasian
Yang paling penting dari inner class adalah
bahwa dengan inner class kita bisa Dari sudut pandang
meng‟objekkan‟ sesuatu yang awalnya tidak pengorganisasian, inner class
bisa dianggap sebagai objek. Hal ini memungkinkan kita mengatur
memungkinkan code menjadi lebih object- struktur paket. Daripada
oriented daripada ketika tidak menggunakan menjadikan segala sesuatu menjadi
inner class. Karena setiap instansiasi inner class
flat-package, kelas dapat
merupakan instansiasi dari top-level classnya
juga, maka objek inner class juga memiliki disarangkan dalam kelas lain.
akses ke setiap member dan method kelas
induknya.
Hirarki tanpa inner class
Hirarki dengan inner class
package
package
Class3
class1
Bagaimanakah bentuk
program utama agar output
yang dihasilkan seperti di
samping?
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.
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.
kelas murni yang tidak boleh memiliki objek, [modifier] abstract class NamaKelas {
dan satu/lebih method-methodnya yang // deklarasi attribute
abstract harus diimplementasikan (override) // definisi/prototype method
oleh kelas turunannya. }
Sebuah kelas Dosen bisa diinstansiasi menjadi Seperti apakah bentuk Hewan?
heru, heri, badu, budi, dsb, tetapi tidak
mungkin dapat menginstansiasi kelas
MakhlukHidup, kelas Hewan. Karena kedua
kelas tersebut terlalu umum (abstract), kelas
seperti inilah yang disebut kelas abstract.
Dibutuhkan kelas turunan yang lebih khusus.
Ini?
Ini? Ini?
}
}
Analogi Interface
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas.
Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai da‟i, 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.
System.out.println("");
System.out.println("HP ini dibuat oleh PT "+pp.MAKER);
System.out.println("Harga HP in sekitar $ "+pp.getHarga(1));
}
}
Supaya kita lebih mengerti, maka mari kita lihat dan coba kode berikut ini!
sebuah aplikasi mungkin memeriksa operan pembagi untuk memastikan bahwa sebuah
pembagi dengan nol tidak dicoba. Bagaimanapun juga, jika sebuah pembagian oleh nol terjadi,
perangkat-keras dalam sebagaian besar sistem komputer menghasilkan sebuah respon
kesalahan.
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
menggunakan block try-catch
Eksepsi yang sebaiknya
karena berhubungan dengan java
ditangani oleh program kita
run-time system.
secara langsung.
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.
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.
}
}
Penggunaan Throw
Cara penulisan:
Mekanisme throw memungkinkan program
untuk mengirim / melempar exception untuk Throw ObjekEksepsi;
kemudian program menyikapi (bereaksi) atas
exception tersebut.
ObjekEksepsi adalah semua objek yang merupakan turunan dari class Throwable. Salah satu contoh
objek eksepsi adalah ArrayIndexOutOfBounds.
Penggunaan Throws
Cara penulisan:
Sangat erat hubungannya dengan class NamaClass throws Exception{
penggunaan exception yang dicek oleh Java. .........
}
Keyword ini dipake kalo misalnya ada method
yang mungkin menyebabkan exception tapi atau fungsi / prosedur
dia gak menangani exception tersebut.
int f1() throws Exception{
Exception akan dilempar ke luar, maka dari ..........
itu ketika keyword ”throws” digunakan saat }
pendeklarasian method.
Data Data
info info
output input
Hardware
Data Data
info info
sebuah program membuka stream dari sebuah
Input: mengambil informasi data dari hardware sumber informasi (source) seperti file, memory,
Output: mengirim informasi data ke hardware socket. Kemudian membaca informasi secara
sekuensial.
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 beda-
beda (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
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.
DataInputStream dalam jdk 1.5 hanya DataOutputStream dalam jdk 1.5 hanya
mempunyai 1 konstruktor dan 17 method yang mempunyai 1 kostruktor dan 15 method yang ada
ada dalam classnya, selebihnya turunan dari class dalam classnya selebihnya turunan dari class
parentnya. Berikut ini akan dijelaskan parentnya. Berikut ini akan dijelaskan konstruktor
konstruktor dan method yang sering digunakan. dan method yang sering digunakan.
Output untuk contoh input data Output untuk contoh input dan output data
Masukkan data : commonlabz Masukkan data : common
Panjang Karakter : 8
try {
System.in.read(data);
} catch (IOException e) {
System.out.print("Terjadi Exception");
}
import java.io.*;
public class DemoStream3
{
public static void main(String[] args) {
byte[] data = new byte[10];
int panjang=0;
System.out.print("Masukkan data : ");
try {
panjang=System.in.read(data);
//sebenarnya Sistem.in.read mengembalikan panjang karakter yang
//diinputkan (termasuk enter yang dianggap 2 karakater..)
System.out.print("Yang anda ketik : ");
System.out.write(data);
System.out.println("Panjang Karakter : "+panjang);
System.out.print("index ke-1 sebnyk 3 : ");
System.out.write(data,1,3);
} catch (IOException e) {
System.out.print("Terjadi Exception");
}
}
}
/* write mencetak apapun tipe data yang ada, sedangkan print dan
println mencetak data ke dalam tipe string */
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).
BufferedReader dalam jdk 1.5 hanya BufferedWriter dalam jdk 1.5 hanya mempunyai 2
mempunyai 2 kostruktor dan 9 method yang kostruktor dan 6 method yang ada dalam classnya
ada dalam classnya selebihnya turunan dari selebihnya turunan dari class parentnya. Berikut ini
class parentnya. Berikut ini akan dijelaskan akan dijelaskan konstruktor dan method yang
konstruktor dan method yang sering sering digunakan.
digunakan.
BufferedWriter (Writer in) dan
BufferedReader(Reader in) dan BufferedWriter(Writer in,int size)
BufferedReader(Reader in,int size) Membuat objek BufferedWriter dengan karakter
Membuat objek BufferedReader dengan buffer outputstream atau objek Writer yang lain.
karakter buffer inputstream atau objek Int sz digunakan untuk ukuran buffer yang
Reader yang lain. Int sz digunakan untuk digunakan.
ukuran buffer yang digunakan.
void write(String s, int of, int len)
String readLine() Untuk menuliskan sebuah String s ke sebuah media
readLine digunakan untuk membaca satu yang telah dispesifikasikan oleh objek
baris penuh text, yaitu mengembalikan String BufferedWriter. Dimulai dari karakter of(integer),
dari objek BufferedReader yang digunakan. ke berapa banyak karakter yang akan ditulis
len(integer).
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
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");
}
}
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
terdapat 4 atribut, 4 konstruktor dan 39 method java.io.FileInputStream dengan byte stream
yang ada didalam class untuk menspesifikasikan
file yang dibuat. terdapat 3 konstruktor dan 9 method yang ada. Digunakan
File(),File(String path),File(String dir,String nm) untuk mengambil file yang telah dideskripsikan untuk dibaca
Konstruktor diatas adalah yang sering digunakan dengan byte stream.
yaitu membuat objek file kemudian digunakan FileInputStream(File of), FileInputStream(String nama)
dengan pengesetan methodnya, atau menginstan Digunakan untuk mengambil file untuk dibaca secara byte
langsung dengan nama file beserta pathnya. stream,bisa memasukan deskripsi file yang telah ada dengan
String, atau dengan file yang telah diinstan dengan jelas.
boolean createNewFile(), boolean delete(),boolean
exists()
method-method diatas untuk mengeset dengan
pengecekan, untuk createNewFile digunakan
untuk menciptakan file kemudian java.io.FileOutputStream dengan byte stream
mengembalikan nilai true jika file dibuat. terdapat 5 konstruktor dan 7 method untuk membuat file
yang akan diakses menggunakan byte stream.
Outputnya:
Ketik : commonlabz
Outputnya: commonlabz?
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.
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.
Jika kita ingin membuat kelas yang mampu menserialisasikan objeknya dan dapat mengontrol dan
memanipulasi atribut yang diserialisasikan maka kita dapat membuat kelas tersebut
mengimplementasikan interface Externalizable, kemudian mengoverriding kedua method diatas.
Kedua method diatas akan dipanggil secara otomatis ketika operasi baca dan tulis ke atau dari
input/output stream terjadi.
Tujuan:
Apa itu thread?
1. Kenal konsepnya Inget waktu kita buat suatu program? Misalkan pas
kita buat program mengurutkan bilangan, kita
2. Bisa implementasiinnya
tahunya kalo program itu dibuat secara sekuensial.
3. Ngerti dan paham serta bisa Ada awal, terus eksekusi programnya, dan akhir.
implementasiin sinkronisasi di
Nah, aliran eksekusi dari suatu “task” pada sebuah
multithreading program itu kita sebut thread. Masih bingung? Let‟s
take a look gambar di bawah ini.
x.sabunan() x.sikatGigi()
Dua
x.bilasSabun() x.kumur2()
threads
x.selesaiSabun() x.selesaiSikat()
1. Buat objeknya
2. Panggil method start()
ketiganya...!
Answer:
pemula/ Answer:
CPU akan milih di antara kedua thread mana yang akan dieksekusi lebih dulu.
start
New Thread Runnable Not Runnable
Kondisi awal dari sebuah run method thread lagi running tapi
thread, ketika objek selesai gak ngelakuin apa-apa.
thread dibuat
Dead
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.
2. Ngerti konsep GUI dan bisa Berarti di modul ini kita bisa buat program yang
implementasiin di program sederhana ada tampilannya yaa.
serta bisa integrasiin dengan salah satu
DBMS.
Swing components
Swing component pada dasarnya sama kayak AWT tapi ada penambahan fitur pada Swing.
Containers. Adalah tempat dimana componen lain bisa di tempatkan didalamnya, contohnya
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.
Frame (JFrame) : Constructor yang dapat digunakan untuk membuat frame adalah JFrame() dan
JFrame(String title). Contoh penggunaannya adalah sbb:
import javax.swing.*;
public class FrameDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Frame Demo");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize(400,150);
frame.show();
}
}
import javax.swing.*;
public class DialogDemo {
public static void main(String[] args) { frame sbg parent bagi dialog
JFrame frame = new JFrame("Contoh Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
JOptionPane.showConfirmDialog(frame,
"Contoh dialog konfirmasi ...", informasi dialog
"Judul Dialog", Judul dialog
JOptionPane.OK_CANCEL_OPTION,
jenis tombol
JOptionPane.QUESTION_MESSAGE);
} icon
}
//file BorderLayoutDemo.java
import javax.swing.*;
import java.awt.*;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
//file BoxLayoutDemo.java
import javax.swing.*;
import java.awt.*;
frame.getContentPane().add(comp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
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);
frame.getContentPane().add(tab,BorderLayout.NORTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,150);
frame.show();
}
}
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
public class FlowLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame ("FlowLayoutDemo");
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
layout.setVgap(20);//jarak vertikal antar komponen
layout.setHgap(10);//jarak horisontal antar komponen
frame.getContentPane().setLayout(layout);
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();
}
}
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);
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();
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
Modul Praktikum Pemrograman Berorientasi Objek 77
c.gridy = 2; //baris 2
Common Laboratory 2009/2010
c.insets = new Insets(10,0,0,0); //t,l,b,r
Pengaturan dengan GroupLayout
GroupLayout menggunakan dua tipe Contoh: Terdapat tiga buah komponen C1, C2, C3. Komponen-
penyusunan, yaitu sequential dan parallel. komponen berikut akan disusun dengan cara sequential group dan
parallel group.
1. Penyusunan secara sequential sangatlah
sederhana, yaitu menempatkan komponen-
komponen dengan berurutan setelah
komponen pertama diletakan, mirip dengan
BoxLayout atau FlowLayout yang
menempatkan komponen-komponen
berikutnya dalam satu line yang sama.
Pembahasannya:
Horizontal Layout
layout.setHorizontalGroup ( layout.createSequentialGroup()
.addComponent(label)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
);
.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))
);
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.
Event Listener merupakan class yang mengimplementasikan interface <Type> Listener. Berikut ini
merupakan beberapa listener yang sering digunakan:
/*author : andy*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
Lengkapilah kode
public class event_handling{ disamping sesuai
private JButton b1,b2,b3,b4;
private JTextField text1,text2; dengan nomornya!
//private JPanel panel1,panel2;
private JLabel label1,label2;
private JFrame frame;
private int a,b;
private String hasilJum=”Hasil Penjumlahan adalah: “;
1
2
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();
}
http://edn.embarcadero.com/article/26970
http://en.wikipedia.org/wiki/Swing_(Java)
http://en.wikipedia.org/wiki/Abstract_Window_Toolkit
Tujuan: Netbeans
Project View
Klik ‘Finish’
Setelah kelas Barang dibuat, masukan contoh kode berikut ini pada work area:
F9 Shift + F6
88 Modul Praktikum Pemrograman Berorientasi Objek
Common Laboratory 2009/2010
Membuat Kelas Inteface
Setelah kita berhasil buat kelas Barang di atas, mari kita buat kelas Interface.
Langkah untuk membuat kelas interface atau GUI yang baru, sama dengan langkah membuat kelas
sebelumnya, yang berbeda adalah pilih tipe file kelas „JframeFrom‟. Buatlah pakage baru yang
bernama javaaplicationGUI dan taruh kelas interface didalamnya. Pada contoh ini akan dibuat kelas
Interface yang bernama „FormInsert‟.
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
Klik ‘properties’
Setelah membuat kelas interface, kita akan membuat action dari tombol Submit.
www.netbeans.org/
smapluspgri.sch.id/KnowledgeSharing/wp.../tutorial-netbeans.pdf
Kita kan udah bisa buat program secara Object Oriented terus kita udah bisa buat GUI juga kan.
Nah, sekarang saatnya kita buat program yang pake database buat nyimpen data.
Fungsi yang disediakan oleh Java untuk Kalo pake JDBC API, kita bisa akses database dari
menghubungkan aplikasi yang dibangun vendor-vendor ternama seperti Oracle, Sysbase, Informix,
menggunakan bahasa pemrograman java Interbase. Kita dapat melakukan mengirimkan perintah-
dengan database yang ada. Dengan perintah SQL ke RDBMS. Kelas-kelas serta interface JDBC
menggunakan JDBC, kita bisa menggunakan API dapat diakses dalam paket java,sql (core API) atau
SQL statement untuk ngebuat, manipulasi, javax.sql(Standard Extension API).
atau pelihara suatu data.
JDBC adalah versi ODBC yang dibuat oleh Sun Gimana cara dapetin JDBC?
Microsystem. Kita butuh driver buat akses database di
server dari dalem program kita.
JDBC dibangun dengan Java API sehingga bisa Setiap server dari vendor punya driver
untuk cross platform, serta didasarkan pada yang beda-beda.
X/Open SQL Level Intervace (CLI).
Download di:
ODBC dibangun dengan bahasa C sehingga
Cuma bisa dibangun pada platform spesifik. http://java.sun.com/products/jdbc
Inisialisasi Driver
Class.forName( “nama_driver” );
Catatan :
Untuk nama_driver berbeda-beda tiap
database yang digunakan :
Pada Netbeans 6.5, sudah terdapat beberapa driver
Untuk microsoft access yaitu yang dapat digunakan langsung seperti Java DB,
sun.jdbc.odbc.jdbcOdbcDriver. MySQL, dan PostgreSQL. Cara penggunaannya yaitu
Untuk oracle yaitu dengan mengklik kanan pada folder library dalam
oracle.jdbc.driver.OracleDriver. project yang dibuat kemudian pilih Add Library..,
Untuk mysql yaitu lalu pilih driver yang akan kita pakai.
org.gjt.mm.mysql.Driver.
A. Statement
Statement merupakan suatu class pada java misal : variabel koneksinya yaitu conn , maka
yang digunakan untuk mengeksekusi suatu Statement var_statement = conn.createStatement();
query, digunakan setelah menginisialisasi UntukDriverManager.getConnection(“nama_URL”,”nama_u
mengakhiri suatu transaksi dengan menggunakan query
variable koneksi pada Connection di point ser”,”password”);
dengan cara menutup variable statement yang sudah diinisialisasi.
ke-2. Inisialisasinya yaitu :
misal : variable statementnya, stmnt stmnt.close();
DriverMana
ger.getCon
B. ResultSet nection(“n
ama_URL”,”
Setelah menginisialisai variabel statement nama_user”
Caranyaa…. ,”password
maka selanjutnya menginisialisai variabel ”);
ResultSet yang nantinya akan digunakan ResultSet var_set;
untuk menyimpan suatu baris record pada
DriverManager.get
database, dengan kata lain variabel ini Connection(“nama_
merupakan pointer yang akan menunjuk URL”,”nama_user”,
suatu baris pada table. ”password”);
Mengakhiri Koneksi.
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.
Mengatur jumlah
Nama kolom (title1, kolom dan baris
title2, title3) dapat
diatur di sini.
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
public void query(String SQLString) {
int i=0;
try {
stmt.executeUpdate(SQLString);
i=1;
}catch (Exception e) {
JOptionPane.showMessageDialog(null,"error:"+e.getMessage(),error,JOptionPane.WARNING_MESSAGE);
}
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;
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.
View barang
Untuk inisialisasi. Dipanggil pertama Yang pertama kali dijalankan setelah init( ),
kali dan hanya sekali ketika applet memulai fase kedua dari life-cycle yaitu
dieksekusi. Merupakan awal dari mulai menjalankan applet. Dijalankan
life-cycle suatu applet. berkali-kali. Setelah stop( ) akan dijalankan
lagi
Dengan demikian class Applet dapat dikembangkan dengan melakukan “override” pada metoda
tersebut.
import java.applet.*;
public class MyApplet extends Applet {
Catatan:
public void init(){
//inisialisasi variabel dan lainnya
Mengganti (override)
} metoda init(), start(), stop()
public void start(){ dan destroy() hanya
//lakukan bila page aktif dilakukan bila memang
} dibutuhkan oleh pembuat
public void stop(){ program.
// lakukan bila page akan nonaktif
}
public void destroy(){
//terminasi clean-up variabel dan lainnya sebelum applet selesai
}
}
String str1,str2,str3;
str1 = getParameter(“namaparam1”).
str2 = getParameter(“namaparam2”).
str3 = getParameter(“namaparam3”).
Bila nama parameter tidak ditemukan, maka nilai string adalah null.
Dengan bentuk hasil output seperti di atas, kira-kira bagaimanakah kode programnya?
Thread t = null;
int state;
boolean stopFlag;