catur
ingin menjadi??

Jun
28

Kelas merupakan salah satu konsep fundamental pemrograman ber-
orientasi objek. Kelas dapat diilustrasikan sebagai suatu cetak biru
(blueprint) atau prototipe yang digunakan untuk menciptakan objek.
Terkait dengan konsep penting ini, ada beberapa subbahasan yang
akan kita ulas di sini.
• Definisi Kelas
Definisi kelas terdiri atas dua komponen, yaitu deklarasi kelas dan
body kelas. Deklarasi kelas adalah baris pertama di suatu kelas, dan
minimal mendeklarasikan nama kelas. Sementara itu, body didekla-
rasikan setelah nama kelas dan berada di antara kurung kurawal.
// deklarasi kelas
public class ContohKelas {
// body kelas
}
Di Java, nama kelas sekaligus merepresentasikan nama file kode
program, dan sifatnya adalah case-sensitive.
• Konstruktor
Kegunaan utama konstruktor adalah untuk menetapkan status awal
manakala objek diciptakan. Ada beberapa catatan penting yang
harus kita perhatikan dalam pendeklarasian konstruktor. Pertama,
nama konstruktor harus sama dengan nama kelas. Kedua, konstruk-
tor boleh memiliki argumen lebih dari satu atau tidak sama sekali.
Ketiga, konstruktor tidak boleh mengembalikan suatu nilai.

11

public class ContohKelas {
// Konstruktor
public ContohKelas() {
}
}
Konstruktor yang tidak memiliki argumen dinamakan sebagai
konstruktor default. Apabila suatu kelas dideklarasikan tanpa adanya
sebuah konstruktor, maka secara implisit Java akan menambahkan
konstruktor default.
• Access Modifier
Kelas dan interface memiliki batasan akses (access modifier) yang
menyatakan level aksesnya. Apabila kelas dideklarasikan sebagai
public, maka ia dapat diakses dari mana saja. Jika batasan akses
tidak diberikan, kelas tersebut dinamakan default accessibility, dan
hanya dapat diakses dari dalam paket terkait (tidak termasuk sub-
paket).
Batasan akses lainnya untuk kelas level atas adalah abstract (tidak
dapat diinstantiasi) dan final (tidak dapat diperluas). Anda tidak
diperkenankan mendeklarasikan kelas level atas sebagai private
ataupun protected.
• Kelas Bersarang
Suatu kelas boleh mendeklarasikan kelas baru di dalamnya, atau
biasa disebut inner class, atau kelas bersarang. Apabila diperlukan,
inner class juga dapat memiliki kelas lagi di dalamnya.
public class ContohKelas {
public class KelasBersarang {
// body kelas KelasBersarang
}
}
Inner class juga dapat dideklarasikan secara lokal, yaitu di dalam
body method. Kelas seperti ini dinamakan local inner class atau local
nested class.
public void test() {
class KelasDiMethod {

12

}
}

// body kelas KelasDiMethod

• Keyword this dan super
Keyword this dapat digunakan untuk merepresentasikan suatu
current objek dan mengakses variabel-variabel kelas serta method.
public class KelasInduk {
int j;
public void setNilai(int i) {
// this ini mengacu pada objek KelasInduk
this.j = i;
}
}
Keyword super digunakan untuk mengakses member kelas yang
diturunkan (kelas induk).
// KelasAnak memperluas/mewarisi KelasInduk
class KelasAnak extends KelasInduk {
public KelasAnak() {
// Mengakses method di kelas induk
super.setNilai(3);
}
}

Jun
28

Paket bertujuan mengorganisir keterhubungan kelas dan mendefinisi-
kan namespace untuk kelas-kelas yang berada di dalamnya. Dalam
upaya memudahkan penggunaan, menghindari konflik nama, dan
mengontrol akses kelas-kelas maupun interface-interface, kita bisa
mengelompokkannya ke dalam suatu paket.

8

• Deklarasi Paket
Paket dideklarasikan menggunakan pernyataan package yang di-
ikuti dengan nama paket dan subpaket (jika ada). Deklarasi paket
sebaiknya dilakukan di bagian paling awal kode program. Contoh
deklarasi paket diperlihatkan seperti berikut:
package com.indodesain.didik;
Dalam implementasinya, nama paket dan subpaket sebenarnya
mencerminkan struktur direktori dengan susunan sesuai penamaan.
Apabila kita tidak menggunakan paket, maka kelas terkait meru-
pakan bagian dari paket default (tanpa nama).
• Mengakses Member Paket
Kelas-kelas dan interface-interface di dalam paket, atau disebut
member paket, hanya dapat diakses dari luar paket apabila ia dide-
finisikan sebagai public. Ada dua pendekatan yang bisa kita
gunakan untuk mengakses member paket, yaitu dengan mengacu
nama lengkap dan mengimpor member.
Misalkan di subpaket didik terdapat kelas Test, maka cara meng-
acunya adalah seperti berikut:
com.indodesain.didik.Test t = new com.indodesain.didik.Test();
Untuk pendekatan kedua, kita terlebih dahulu menuliskan keyword
import yang diikuti nama paket.
import com.indodesain.didik.Test;

// Instantiasi di body kelas
Test t = new Test();
Pada pendekatan kedua, Anda juga diperkenankan mengimpor se-
luruh member yang dinyatakan dengan karakter asterik (*).
import com.indodesain.didik.*;
Walaupun pendekatan acuan dengan nama lengkap terkesan kurang
efektif, namun dalam situasi-situasi tertentu sangat diperlukan. Seba-
gai contoh, pendekatan ini lazim digunakan untuk menghindari kon-
flik ketika mengakses member di beberapa paket dengan nama
sama.

9

• Impor Otomatis
Secara otomatis JRE akan mengimpor member yang ada di paket
java.lang, paket default, dan current paket. Oleh karena itu, pada
saat menggunakan member di paket-paket tersebut, kita tidak perlu
melakukan impor secara eksplisit. Sebagai contoh, kita bisa lang-
sung menggunakan kelas String tanpa terlebih dahulu mengimpor
java.lang.String ataupun mengacu nama lengkapnya.
Di Java 5.0, ada fitur baru yang memungkinkan kita untuk meng-
impor dengan tambahan pernyataan static. Penjelasan mengenai
fitur ini akan kita bahas lebih lanjut setelah mengulas pernyataan
static.
• Strategi Impor Paket
Seringkali kita melihat program-program Java yang mendeklarasi-
kan pernyataan import untuk mengakses member paket secara
lengkap. Contohnya seperti berikut:
import java.io.File;
import java.io.FileReader;
import java.net.URL;
Tak jarang pula, kita melihat deklarasi yang menggunakan karakter
asterik. Contohnya seperti berikut:
import java.io.*;
import java.net.*;
import java.util.*;
Sebenarnya, apa kelebihan dan kekurangan masing-masing pen-
dekatan di atas? Apakah pengaksesan member paket dengan nama
lengkap lebih cepat dieksekusi dibanding penggunaan karakter
asterik?
Pada prinsipnya, deklarasi lengkap memang lebih cepat dikompilasi
dibanding pendekatan asterik. Meski demikian, deklarasi lengkap
tidak menawarkan kelebihan ketika program dieksekusi (diinter-
pretasi). Dalam segi efisiensi penulisan, pendekatan asterik tentu
menawarkan kelebihan bagi kita. Selain itu, ketika kita ingin
mengganti penggunaan kelas (misal dalam satu paket), kita tidak
perlu menghapus deklarasi sebelumnya dan mengganti dengan
deklarasi baru.

10

Meskipun pengaksesan dengan karakter asterik tidak berpengaruh
terhadap eksekusi program, namun bukan berarti pendekatan ini
paling efisien. Setidaknya, kita bisa menggunakan strategi berda-
sarkan kasus yang kita hadapi. Sebagai contoh, jika kita hanya me-
merlukan satu atau dua kelas/interface di satu paket, akan lebih
efisien jika kita mendeklarasikan nama member paket secara leng-
kap. Sebaliknya, jika jumlah kelas atau interface yang kita perlukan
cukup banyak, tentu akan praktis jika kita menggunakan karakter
asterik.

Jun
28

Di dalam pemrograman, suatu nama digunakan untuk mengacu ke
entitas yang dideklarasikan. Terkait hal ini, ada beberapa aturan
dasar penamaan yang perlu sekali diperhatikan dalam upaya meng-
hasilkan kode program yang readable.
• Penamaan Paket
Nama awal paket sebaiknya terdiri atas dua atau tiga huruf kecil, dan
biasanya menggunakan nama domain Internet, seperti com, org, net,
dan edu. Selain itu, Anda juga diperkenankan memberi nama paket
dengan kode-kode negara, seperti id, uk, atau au. Penggunaan nama
domain ini bertujuan untuk mencegah terjadinya konflik paket,
dengan asumsi bahwa Anda tidak menggunakan nama domain
orang lain. Sebagai contoh, nama paket berbasis domain
http://didik.indodesain.com adalah com.indodesain.didik.

7

• Penamaan Kelas dan Interface
Nama kelas dan interface sebaiknya berupa kata benda atau ung-
kapan kata benda yang deskriptif dan tidak terlalu panjang. Penulisan
nama mengacu pada sintaks Pascal, di mana huruf pertama untuk
setiap kata adalah huruf besar dan tidak ada spasi, misalnya Bangun,
SegiTiga, atau KoneksiData.
• Penamaan Method
Nama method seharusnya berupa kata kerja atau ungkapan kata
kerja. Penulisan method mengacu pada sintaks Camel, di mana huruf
pertama untuk setiap kata pertama adalah huruf kecil dan huruf
pertama kata selanjutnya adalah huruf besar. Nama method umum-
nya juga mencerminkan operasi yang dilakukannya, contohnya
seperti setData, getData, isValidData, atau toString.
• Penamaan Variabel
Penamaan variabel-variabel kelas (fields) mirip dengan penamaan
method. Untuk penamaan variabel lokal dan parameter, seringkali
menggunakan suatu akronim, singkatan, atau istilah-istilah yang
mudah diingat, contohnya seperti sr (StreamReader), buf (buffer), d
(double), dan s (String).
• Penamaan Konstanta
Seperti umumnya bahasa pemrograman, nama konstanta di Java
harus berupa huruf besar semua. Apabila nama konstanta terdiri atas
beberapa kata, sebaiknya pisahkan dengan tanda garis bawah “_”.
Contoh penamaan konstanta misalnya MAX, MAX_DATA, atau
MAX_LEN_DATA.

Jun
28

Secara garis besar, elemen-elemen di setiap bahasa pemrograman
sebenarnya hampir sama. Meskipun demikian, ada elemen-elemen
khusus yang membedakan dan sekaligus mencerminkan identitas
suatu bahasa. Adapun mengingat di sini kita bekerja dengan bahasa
pemrograman Java, tentunya kita juga perlu memahami elemen-
elemen dasar bahasa ini.
• Tipe Data
Tipe data di Java dikelompokkan menjadi dua jenis, yaitu tipe
primitif dan reference (kelas). Tipe primitif/dasar adalah tipe-tipe
bawaan, meliputi boolean, char, byte, short, int, long, float,
dan double. Sementara itu, tipe reference memiliki semantik seperti
pointer. Jenis tipe reference meliputi kelas, interface, dan array.
Apabila Anda ingin memperlakukan nilai primitif sebagai suatu
objek, Anda bisa memanfaatkan kelas-kelas pembungkus (wrapper).
Kelas-kelas tersebut meliputi Boolean, Character, Byte, Short,
Integer, Long, Float, dan Double. Perhatikan sintaksnya (pe-
nulisan huruf kecil dan besar), agar tidak keliru dengan tipe-tipe
primitif.

5

• Deklarasi dan Inisialisasi Variabel
Sebelum digunakan, setiap variabel harus dideklarasikan terlebih
dahulu. Langkah ini dilakukan dengan menetapkan tipe data dan
nama variabel. Pernyataan deklarasi variabel tunggal juga dapat
digunakan untuk mendeklarasikan lebih dari satu variabel, tetapi
semuanya harus bertipe sama.
int i;
int j;
// ekuivalen dengan kedua pernyataan di atas
int i, j;
Deklarasi juga dapat sekaligus melakukan inisialisasi terhadap suatu
variabel.
int i = 2;
int j = 3;
int i = 2, j = 3;
• Initial Value
Saat mendeklarasikan variabel kelas, kita tidak harus melakukan
inisialisasi karena kompiler akan meng-assign initial value (nilai awal
atau default). Nilai default untuk semua tipe reference adalah null.
Nilai default tipe primitif boolean adalah false, char adalah
\u0000, integer (byte, short, int, long) adalah 0, dan floating
point (float, double) adalah 0.0.
• Ruang Lingkup Variabel
Java mendefinisikan empat jenis variabel, meliputi variabel instance
(field non-statis), variabel kelas (field statis), variabel lokal, dan
parameter. Istilah field mengacu pada variabel instance dan variabel
kelas (terkadang disebut member variable). Sementara itu, istilah
variabel mengacu pada semua jenis variabel.
Lokasi di mana suatu variabel dideklarasikan secara eksplisit juga
menetapkan ruang lingkupnya. Ruang lingkup variabel adalah wi-
layah di mana suatu variabel dapat diacu melalui namanya. Ruang
lingkup juga menyatakan kapan variabel akan diciptakan dan di-
hapus dari memori.

6

• Blok
Blok adalah kelompok pernyataan (nol atau lebih) di dalam tanda
kurung kurawal. Penggunaan blok dengan pernyataan alir kontrol
sangat direkomendasikan, meskipun hanya melibatkan sebuah per-
nyataan.
if (kondisi)
{ // awal blok
// pernyataan
} // akhir blok
• Komentar
Penulisan komentar dapat mengadopsi blok komentar gaya C
ataupun C++. Komentar gaya bahasa C lazimnya digunakan untuk
komentar yang terdiri atas beberapa baris. Sementara itu, komentar
gaya C++, yang dinyatakan melalui karakter //, umumnya digunakan
untuk komentar satu baris.
Untuk komentar-komentar yang akan dimasukkan ke dokumentasi
dan dihasilkan melalui tool javadoc, disarankan menggunakan /**
dan diakhiri dengan karakter */.

Jun
28

Seperti diketahui, Java adalah bahasa pemrograman yang kode
programnya dikompilasi dan diinterpretasi. Meskipun pembuatan
aplikasi Java dapat dilakukan melalui IDE (Integrated Development
Environment), namun di sini kita memfokuskan pada tool command-
line untuk kompilasi dan interpretasi.
• Kompilasi
Kompilasi kode program Java dilakukan menggunakan tool
command-line yang bernama javac, atau biasa disebut kompiler
Java. Tahap kompilasi ini bertujuan untuk mengonversi kode sumber
ke program biner yang berisi bytecode, yaitu instruksi-instruksi
mesin. Contoh berikut memperlihatkan cara melakukan kompilasi
pada file program Coba.java (asumsi sudah berada di command-line
atau shell).
javac Coba.java

3

Saat mengompilasi kode program, kita juga diperkenankan untuk
menspesifikasikan versi rilis tertentu. Aturan dasar dalam spesifikasi
versi ini cukup sederhana, di mana versi terbaru dapat mengenali
versi-versi di bawahnya, namun tidak demikian sebaliknya. Sebagai
contoh, untuk mengetahui apakah kode program dapat berjalan di
versi 1.4 ataukah tidak, tambahkan opsi –source 1.4.
javac –source 1.4 Coba.java
Jika –source digunakan untuk menspesifikasikan rilis asal, opsi
–target berfungsi untuk menetapkan versi tujuan. Opsi-opsi lain yang
sering digunakan diperlihatkan sebagai berikut:
// Menetapkan lokasi file-file kelas (classpath)
javac -cp D:\java Coba.java
javac -classpath D:\java Coba.java
// Menetapkan lokasi file .class yang akan dihasilkan
javac -d D:\java Coba.java
// Hasil: file Coba.class diletakkan di D:\java
// Mendapatkan informasi mengenai apa yang dilakukan kompiler
javac -verbose Coba.java
// Mendapatkan informasi versi (developer)
javac -version
Sekadar catatan, untuk memudahkan pemanggilan kompiler, tam-
bahkan path yang berisi file-file executable (di direktori bin) ke
variabel sistem Path. Untuk lebih praktisnya, Anda bisa meng-
gunakan kotak dialog Environment Variables (melalui System
Properties).
Apabila Anda bekerja di lingkungan Unix/Linux, modifikasilah file
/etc/profile dengan menambahkan baris berikut:
PATH=/lokasi_instalasi/bin:$PATH
export PATH
• Interpretasi
Sebagaimana disinggung, kode program Java tidak dieksekusi di
komputer secara langsung, tetapi berjalan di atas komputer hipotesis
yang distandardisasikan, yang disebut Java Virtual Machine. Untuk
menginterpretasi bytecode, kita menggunakan tool bernama java,
atau biasa disebut interpreter Java. Pada saat menginterpretasi, Anda

4

tidak perlu menyertakan ekstensi file (.java atau .class), cukup nama
file saja.
java Coba
Untuk kasus program-program berbasis teks, hasil keluaran akan
langsung ditampilkan di command-line. Terkait hal ini, tool java
memungkinkan Anda untuk meng-capture hasil keluaran dan me-
nyimpannya di sebuah file.
Contoh perintah berikut akan menangkap hasil keluaran program
Coba dan menyimpannya di file coba.txt.
java Coba > coba.txt
Apabila Anda menggunakan perintah di atas pada aplikasi GUI,
maka file keluaran akan tetap diciptakan, namun tidak ada isinya
(dengan asumsi bahwa program tidak mencetak teks keluaran).

Jun
28

Tentunya Anda tidak asing lagi dengan nama Java, sebuah bahasa
pemrograman berorientasi objek yang dikembangkan oleh Sun
Microsystems. Di bagian awal ini, kita akan mengulas tentang sekilas
Java yang ditinjau dari aspek lingkungan pengembangan dan
produk. Diharapkan ulasan ini nantinya dapat memperjelas termi-
nologi ataupun pernyataan-pernyataan yang kerap kali membi-
ngungkan, terutama bagi yang baru mengenal Java.

1

• Lingkungan Pengembangan
Dalam mendiskusikan Java, kiranya penting sekali untuk mem-
bedakan antara bahasa pemrograman Java, Java Virtual Machine,
dan platform Java. Bahasa pemrograman Java adalah bahasa yang
digunakan untuk menghasilkan aplikasi-aplikasi Java. Pada umum-
nya, bahasa pemrograman hanya mendefinisikan sintaks dan peri-
laku bahasa.
Pada saat program Java dikompilasi, ia akan dikonversi ke bentuk
bytecode, yang merupakan bahasa mesin yang portable. Selan-
jutnya, bytecode tersebut dijalankan di Java Virtual Machine (atau
disebut Java VM atau JVM). Meskipun JVM dapat diimplementasikan
langsung di perangkat keras, namun biasanya diimplementasikan
dalam bentuk program perangkat lunak yang mengemulasi mesin
(komputer) dan digunakan untuk menginterpretasi bytecode.
Platform dapat didefinisikan sebagai perangkat lunak pendukung
untuk aktivitas-aktivitas tertentu. Platform Java sendiri pada prin-
sipnya berbeda dengan bahasa Java atau JVM. Platform Java adalah
himpunan kelas-kelas Java yang sudah didefinisikan sebelumnya
dan eksis sejak instalasi Java. Platform Java juga mengacu pada
lingkungan runtime atau API (Application Programming Interface)
Java.
• Edisi Java
Guna mencakup lingkungan-lingkungan aplikasi yang berbeda, Sun
mendefinisikan 3 (tiga) edisi Java.
• J2ME (Java 2 Micro Edition)
Edisi ini ditujukan bagi lingkungan dengan sumber daya ter-
batas, seperti smartcard, ponsel, dan PDA.
• J2SE (Java 2 Standard Edition)
Edisi ini ditujukan bagi lingkungan workstation, seperti pem-
buatan aplikasi-aplikasi dekstop.
• J2EE (Java 2 Enterprise Edition)
Edisi ini ditujukan bagi lingkungan Internet atau aplikasi ter-
distribusi dalam skala besar.

2

Perbedaan setiap edisi meliputi fitur-fitur bahasa yang didukung dan
API yang tersedia. Berdasarkan tingkatannya, edisi yang lebih tinggi
mampu mengemulasikan edisi yang lebih rendah. Adapun urutan
edisi dari yang tertinggi ke rendah adalah J2EE, J2SE, dan J2ME.
• Versi Java
Ada hal yang menarik dan perlu kita cermati mengenai versi-versi
Java yang telah dirilis. Sun menggunakan dua jenis versi untuk
mengidentifikasikan rilis Java, yaitu versi produk dan versi developer.
Seperti kita ketahui, versi terbaru saat ini adalah versi 6 (versi
produk) atau versi 1.6.0 (versi developer), dengan nama kode Mus-
tang.
Sejak tahun 2006, Sun juga menyederhanakan penamaan platform
dengan tujuan untuk mencerminkan tingkat kematangan, stabilitas,
skalabilitas, dan sekuriti yang lebih baik. Jika penamaan versi sebe-
lumnya adalah Java 2 Platform, Standard Edition 5.0 (J2SE 5.0),
maka sekarang disederhanakan menjadi Java Platform, Standard
Edition 6 (Java SE 6, atau lebih sering disebut Java 6).

Jun
28

Seperti bahasa pemrograman lain, JAVA memiliki alir kontrol yang ditentukan dengan statement seleksi dan perulangan (looping). Suatu blok atau sekumpulan statement ditandai dengan sepasang kurung { }. Blok dapat bersarang dalam blok yang lain. Suatu variabel yang didefinisikan dalam suatu blok bersifat lokal.

Penyeleksian Kondisi
1. statement if
a. Bentuk sederhana
BU : if (kondisi) statemen ;
Contoh :
• Tanpa Blok statemen
if(jumlah > 2) Tunjangan = 0.3;
• Dengan blok statement :
if(jumlah>2) {
Tunjangan = 0.3;
Potongan = 0.07; }
Ket : Jika kondisi benar makan akan di beri nilai tunjangan dan potongan.

b. Bentuk if-else
BU : if (kondisi) statement;
else statement;
Jika kondisi yang diseleksi bernilai benar maka statemen yang mengikutinya akan diproses dan bila kondisi bernilai salah maka statemen setelah else yang akan diproses.

c. Bentuk if-else-if…else
BU : if (kondisi1)
Statement;
else if (kondisi2)
statement;
………
else
statement;
Contoh :
int menu = 2;
if (menu = = 1)
Sytem.out.println(“menu anda nasi goreng”);
else if (menu = = 2)
Sytem.out.println (“menu anda nasi uduk”);
else
Sytem.out.println (“tidak ada menu”);

Out : menu anda nasi uduk

d. Bentuk if bersarang (Nested if)
BU : if (kondisi1)
if (kondisi2)
…..
if (kondisi n)
statement;
else
statement;
…..
else
statement;
else statement;
Contoh :
if(Nilai >= 80)
if(Nilai = = 80) {
Sytem.out.println (“Nilai Anda”+Nilai);
Sytem.out.println (“Nilai Anda cukup”); }
else {
Sytem.out.println (“Nilai Anda”+Nilai);
Sytem.out.println (“Nilai Anda memuaskan”); }
else {
printf(“Nilai Anda “+Nilai);
printf(“Nilai Anda kurang”); }
Jika Nilai = 85 maka output : Nilai anda 85
Nilai anda memuaskan

e. Bentuk if kondisi jamak
Kondisi jamak berhubungan dengan operator logika AND(&&), OR(||), atau NOT(!) untuk menyeleksi beberapa kondisi sekaligus.
Contoh :
if(A>5 || B< 3 && C= = ‘Y’)
Sytem.out.println (“kondisi benar”);
else
Sytem.out.println (“kondisi salah”);
Jika diberi nilai A=4, B = 5, C = ‘Y’ maka
hasilnya : kondisi salah

2. Statement switch…case
Bentuk : switch(kondisi) {
case konstanta1:
Statement-statement;
break;
case konstanta2:
Statement-statement;
break;
………………
default:
statement-statement; }
Statement switch akan menyeleksi kondisi yang diberikan dan kemudian membandingkan hasilnya dengan konstanta-konstanta yang berda pada case. Jika hasil dari kondisi sama dengan konstanta yang ada di case maka statementstatement yang ada di case akan diproses sampai ditemui statemen break untuk keluar dari penyeleksian switch. Jika semua konstanta tersebut tidak ada yang sama maka statement yang berada pada default akan dijalankan.
Contoh :
class Switch {
public static void main( String args[] ) {
int nilai = 2 ;
switch (nilai) {
case 1: printf(“satu”); break;
case 2: printf(“dua”); break;
default: printf(”tidak ada”); break; }
}
Out : dua

PERULANGAN

Indeterminate loops
1. while (condition) { block }
2. do {
…..Statement….
} while (ekspresi) ;
Kontrol perulangan while lebih diperuntukkan pada control perulangan yang didasarkan pada kondisi yang benar. Bisa jadi, tidak ada inisialisasi nilai awal. Bentuk perintah do … while mirip dengan while, hanya perintah yang berada dalam blok perulangan paling tidak akan dikerjakan satu kali

Determinate loops
for (Inisialisasi; terminasi; increment)
{
…..Statement…. }

Statement merupakan inisialisasi, dimungkinkan untuk menginisialisasi lebih dari satu variabel, masing-masing dipisahkan dengan koma.

Contoh :
public class CommaOperator {
public static void main (String[ ] args) {
for (int i=1,j=1;i<5; i++ , j = i * 2) {
System.out.println(“i = “+ i +“ j = “+ j);
}}
}
out : i = 1 j = 2
i = 2 j = 4
i = 3 j = 6
i = 4 j = 8

a. Statemen Continue
Menyebabkan proses perulangan ke awal mulainya perulangan dengan mengabaikan statement-statement berikutnya setelah continue. Dapat digunakn untuk perulangan for, while dan do-while.
Contoh :
class Continue {
public static void main( String args[]) {
int I, N; N = 2;
for(I = 1; I16) continue;
N = N + 1 ; }
System.out.print (“Nilai N adalah ” + N); }
}

Output : Nilai N adalah 44
Penjelasan : I N = N*2 N=N+1
1 N = 4 N = 5
2 N = 10 N = 11
3 N = 22
kondisi N>16 terpenuhi maka N = N+1 tidak dijalankan, program melanjutkan looping.
4 N= 44

b. Statemen Break
Selain digunakan pada pernyataan switch, berak juga digunakan pada pernyataan for, le dan do-while. Kegunaanya untuk memaksa keluar dari pernytaan-pernyataan itu.
Contoh:
class Break {
public static void main( String args[]) {
int I, N; N = 2;
for(I = 1; I16) break;
N = N + 1 ; }
System.out.print (“Nilai N adalah ” + N); }
}
Output : Nilai N adalah 22
Penjelasan : I N = N*2 N=N+1
1 N = 4 N = 5
2 N = 10 N = 11
3 N = 22
kondisi N>16 terpenuhi maka looping dihentikan. Program keluar dari proses looping karena terdapat break,

Jun
22

Belajar PBO, berarti harus membiasakan diri berpikir secara kelas dan objek setiap menghadapi masalah.

Contoh :

Buatlah program untuk menghitung keliling lingkaran dari masukan jari-jarinya !

Masalah tersebut bila disajikan dengan pendekatan kelas dan objek, harus direvisi sebagai berikut :

Buatlah kelas lingkaran yang memiliki tanggungjawab mengetahui jari-jarinya dan kelilingnya, lingkaran tersebut dapat melakukan aksi mengembang dan berkerut sesuai dengan panjang jari-jarinya.

 

 

 

 

 

 

 

 

Sylabi

1.        Pengantar

2.        Kelas, Method dan Modifier

3.        Objek

4.        Package

5.        Information Hiding, Encapsulation, Inheritance, dan Polymophism

6.        Kelas Inner, Kelas Abstract, dan Interface

7.        Exception Handling

8.        Kelas-Kelas Dasar

9.        MultiThreading

 

 

 

 

 

 

 

 

 

 

BAB I. Pengantar

(Identifier, Keyword, Literal dan Tipe Data, Operator, Separator)

 

1.1.   Pengantar

Bahasa java yang telah dirilis :

1.    Product Sun Microsystem : j2se, j2me, j2ee

2.    Product Borland : JBuilder

3.    Product Microsoft : Visual J

Spesifikasi j2ee antara lain JDBC, JDOM (untuk XML),  Remote Method Invocation, Enterprise Java Beans, Java Messaging, Java Server Pages, Java Servlet, Socket Programming, dan SQLJ.

Java/Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi programmer untuk membuat dan menjalankan java.

Development Kit dapat didownload di :

http://java.sun.com/product/JDK/index.html atau

http://java.sun.com/j2se/1.5/index.html atau

http://java.sun.com/cgi-bin/java-ports.cgi

 

 

Komponen JDK antara lain compiler(javac), interpreter(java) disebut juga java virtual machine atau java runtime environment, applet viewer(appletviewer), debugger(jdb), java class library(jcl), header dan stub generator(javah), dan yang paling penting yaitu java documentation(javadoc).

Penjelasan penggunaan komponen JDK :

1.    Kompilator (javac)

Bertugas untuk melaksanakan kompilasi

*.java menjadi *.class

Syntax umum : javac nama.java

2. Interpreter (java)

Bertugas untuk menjalankan bytecode (*.class)

Syntax umum : java nama.class

3.    Applet Viewer

Digunakan untuk menjalanakan applet viewer, namun sekarang sudah digantikan browser.

Syntax umum : appletviewer nama.html

4.    Java Debugger

Bertugas untuk melakukan debugging aplikasi java. Syntax umum : jdb option

5.    Java Class File Diassembler (javap)

Bertugas membuat daftar method dan attribute public dari suatu kelas.

Syntax : javap namaKelas

6.    Java Header and Stub Generator

Bertugas menerjemahkan bahasa yang ditulis dalam bahasa java menjadi bahasa C.

Syntax umum : javah namaKelas

7.    Java Documentation Generator

Menampilkan pustaka kelas, interface, constructor, dan method standard yang telah dibuat vendor.

Dari hasil instalasi, dokumentasi ini dapat dilihat di pada  C:\java\docs\api\index.html atau

C:\Program Files\NetBeans3.6\docs\junit\index.html

8.    Source Code Java API

Source code ini dapat diperoleh dari file src.zip.

 

 

 

 

Untuk pemrogram pemula lingkungan pemrograman java dapat diringkas menjadi :

1.   Editing source code menggunakan editor teks.

2.   Compiling menggunakan keyword javac melalui command promp (dapat juga dari editor teks).

3.   Executing menggunakan :

a.    Keyword java melalui command prompt (dapat juga dari editor teks)

b.   Browser atau applerviewer untuk applet.

 

Token

Token adalah elemen terkecil di program yang masih memiliki arti. Ada 5 token dalam bahasa java yaitu identifier, keyword, literal dan tipe data, operator, serta separator.

 

Identifier

Identifier adalah token yang merepresentasikan nama sesuatu. Sesuatu tersebut adalah variabel, atau konstanta, atau attribute, atau method, atau kelas, atau package, atau interface, atau nama file, dan lain-lain.

Keyword

Kata kunci digunakan untuk suatu tujuan tertentu. Ada 51 keyword dalam java yaitu :

abstract continue for new switch
boolean default goto null synchronized
break do if package this
byte double implements private threadsafe
byvalue else import protected throw
case extends instanceof public throws
catch false int return transient
car final interface short true
class finally long static try
const float native super void
        while

 

Literal dan Tipe Data Primitif

Literal adalah nilai variabel/attribute atau nilai konstanta atau nilai objek data. Ada tiga besaran literal dalam java yaitu angka, karakter, dan string.

Angka terdiri dari byte, short, int, long, float, double, dan boolean (dianggap angka true = 1 atau false = 0)

Semua variabel dan konstanta  yang akan digunakan harus dipesan terlebih dahulu dalam deklarasi.

Bentuk umum :

TipeData namaVar = ungkapan_atau_nilai;

TipeData namaVar1, namaVar2, …;

[modifier] static final TipeData NAMAKONSTANTA = nilai;

Contoh deklarasi :

double a=3, b=4;

double c = Math.sqrt(a*a+b*b);

static final PHI=3.14;

static final double CM_PER_INC = 2.54;

Berikut tabel jangkauan dan ukuran dari semua tipedata sederhana dalam java :

Tipe Data Primitif

Jangkauan

Ukuran (bit)

byte

-128 s/d 127

8

short

-32767 s/d 32767

16

int

-2147483648 s/d 2147483647

32

long

-9223372036854775808 s/d

9223372036854775807

64

char

sebuah Unicode

16

float

3.4e-038 s/d 3.4e+038

32

double

1.7e-308 s/d 1.7e+308

54

boolean

false = 0 atau true = 1

8

 

 

Operator

Operator melakukan komputasi terhadap satu/dua objek data. Operan yang dioperasikan dapat berupa literal, variabel, atau nilai yang dikirim method.

Berikut tabel dan hirarki operator :

Prioritas

Kelompok Operator

Keterngan

1

.  []  () Sekaligus

2

++var, –var, ~, instanceof preincrement, predecrement, unary, instance dari kelas …

3

(type) (casting)  

4

! Not

5

*, /, % perkalian, pembagian, modulus

6

+, – penjumlahan, pengurangn

7

<<, >>, >>> geser untuk bil biner

8

<, >, <=, >= pembandingan

9

==, != kesamaan, ketidaksamaan

10

& and

11

^ exclusive or

12

| unconditional or

13

&& conditional and

14

|| conditional or

15

? : shorthand untuk if..then…else…

16

=, +=, -=, *=, /=, %=, ^= operator penugasan

17

&=, |=, <<=, >>=, >>>= operator penugasan

18

var++, var– postincrement, postdecrement

Separator

Separator menginformasikan ke compiler java mengenai adanya kelompok kode program.

Berikut adalah daftar separator di java :

Notasi

Nama

Deskripsi

(…)

kurung mengelompokkan parameter method.

{…}

kurung kurawal mengelompokkan nilai-nilai suatu array,

mendefinisikan blok kode kelas ataupun kode method.

[…]

kurung siku mendeklarasikan tipe array

:

titik koma mengakhiri pernyataan, merangkai pernyataan-pernyataan di dalam for.

,

koma memisahkan identifier-identifier di bagian deklarsi variable.

.

titik memisahkan nama-nama package,

memisahkan kelas dari objek,

dan objek dari method.

 

 

 

 

 

 

Keyword break, continue, dan return

Kelompok keyword ini pada prinsipnya merupakan kendali jump (variasi lain dari goto), sehingga berakibat pengabaian sisa instruksi.

 

Jun
22

Java Foundation Class (JFC) merupakan sekumpulan class-class Java yang digunakan untuk mengembangkan perangkat lunak berbasis GUI (Graphical User Interface). Selain itu, JFC juga mempunyai class-class yang digunakan untuk menambahkan fungsi dan kemampuan interaksi yang variatif dari pemrograman Java. Dari definisi ini, JFC tidak hanya berisi class-class GUI saja tetapi juga class-class lain yang dapat meningkatkan kemampuan pemrograman Java baik dari segi fungsionalitasnya maupun dari segi kemampuan interaksi pemrograman Java yang sangat kaya.

 

Feature JFC

Fitur-fitur yang dipunyai oleh JFC

Komponen Swing

 

Memuat semua class-class yang dibutuhkan untuk membuat aplikasi berbasis GUI, dari tombol, table, tab, menu, toolbar dan sebagainya
Look and Feel (LaF)

 

Memberikan kemampuan kepada program Java yang dikembangkan menggunakan library swing untuk memilih tema tampilan. Misalnya sebuah program yang sama dapat mempunyai tampilan windows LaF atau Java LaF, atau LaF lain yang dikembangkan oleh komunitas seperti JGoodies.
Accessibility API

 

Faslititas untuk mengembangkan aplikasi bagi penyandang cacat, misalnya dukungan untuk membuat huruf braile, kemampuan mengambil input dari layar sentuh dan sebagainya.
Java 2D API

 

Berisi kumpulan class-class yang dapat digunakan untuk memanipulasi object-object 2 dimensi, sperti garis, kotak, lingkaran, kurva dan lain sebagainya. Selain itu Java 2D API juga memberikan kemampuan program yang ditulis menggunakan Java untuk mencetak output ke alat pencetak seperti printer.
Drag-anddrop

 

Menyediakan kemampuan drag-and-drop antara program Java dan program lain yang ditulis spesifik untuk suatu platform sistem operasi tertentu.
International ization (i18n)

 

Membantu pengembang perangkat lunak untuk membangun aplikasi yang dapat mendukung semua bahasa dan huruf yang ada di dunia.

Tabel Feature JFC

Modul ini akan berkonsentrasi untuk membahas komponen swing. Pemilihan komponen dan library swing yang tepat dapat mempengaruhi kualitas program yang kita buat secara signifikan. Hal ini dikarenakan, dalam dunia Java Standard Edition, lebih spesifik lagi aplikasi Java yang dibangun menggunakan swing, belum ada framework yang benar-benar komprehensif membimbing pengembang untuk membuat aplikasi yang berkualitas.

Pada umumnya aplikasi yang dikembangkan dengan Swing mempunyai kode yang sangat ‘kotor’, dimana kode yang berisi pengendalian terhadap event komponen swing bercampur aduk dengan kode yang berisi aturan bisnis dan kode yang berisi manipulasi terhadap data.

 

Swing Package

 

Swing API sangat bagus dan lengkap, Java 6.0 menyertakan setidaknya tujuh belas (17) buah package yang berisi class-class swing yang siap digunakan.

 

javax.accessibility javax.swing.plaf javax.swing.text
javax.swing javax.swing.plaf.basic javax.swing.text.html
javax.swing.border javax.swing.plaf.metal javax.swing.text.rtf
javax.swing.colorchooser javax.swing.plaf.multi javax.swing.table
javax.swing.event javax.swing.plaf.synth javax.swing.tree
javax.swing.filechooser javax.swing.undo  

 

Utungnya kita tidak akan menggunakan semua class-class dalam package swing, hanya sebagian kecil saja dari class-class tersebut yang nantinya akan benar-benar kita gunakan. Sehingga kita bisa berkonsentrasi untuk memahami beberapa komponen penting saja. Dalam modul ini nanti kita hanya akan menggunakan beberapa class komponen swing yang penting saja. Beberapa kelas ini sudah cukup sebagai bahan  pemembuat perangkat lunak berkualitas.

Komunitas Java juga menyediakan banyak sekali library swing, antara lain dari Swingx dan JGoodies yang mengembangkan library standard swing dengan menambahkan berbagai macam feature menarik. Sedangkan komunitas dari javadesktop.org mengembangkan banyak sekali library swing untuk keperluan khusus. Nyaris semua komponen yang kita perlukan baik komponen umum hingga komponen untuk tujuan khusus banyak tersedia di internet, kita tinggal mencari dan menggunakan.

Praktek yang baik dalam memilih komponen apa yang tepat adalah dengan mencari dahulu informasi di internet. Hal ini sangat bermanfaat untuk mengurangi waktu kita mengembangkan komponen, sehingga kita bisa lebih banyak berkonsentrasi untuk

mengembangkan sisi bisnis dan usability dari software yang kita kembangkan. Sebaik apapun softeware yang kita buat tapi tidak memberikan nilai tambah terhadap masalah yang dihadapi adalah kesia-siaan belaka. Banyak sekali software yang dianggap gagal memberikan nilai tambah terhadap masalah yang dihadapi hanya karena tampilan GUI-nya sangat susah dipahami dan tidak intuitif.

 

Membuat Swing HelloWorld dengan

Netbeans 6

 

Netbeans 6 dilengkapi dengan GUI builder yang dikenal dengan Matisse. Dalam modul ini selanjutnya, Matisse akan digunakan untuk menyebut Netbeans GUI Builder. Tools ini sangat powerful dan produktif dalam membuat komponen GUI. Langkah-langkah yang harus anda lakukan untuk membuat Swing HelloWorld dengan Matisse adalah sebagai berikut:

1. Buat project baru dalam Netbeans, caranya pilih menu :

File > New Project

2. Langkah berikutnya anda harus menentukan kategori project yang akan anda buat,      caranya pilih :

General > Java Application

Anda akan dibawa ke dialog untuk menentukan nama project dan folder dimana anda meletakkan project tersebut, pilih folder sesuai keinginan anda.

3. Klik kanan di project yang baru anda buat, popup menu akan muncul, kemudian pilihlah menu :

New > JFrame Form…

Kemudian masukkan nama class JFrame yang akan dibuat, misalnya Helloworld.java, klik finish.

4. Tampilan Netbeans akan berganti dengan tampilan GUI builder, dimana di sisi kanan akan terlihat Swing Pallet. Klik item Label di Swing Pallet kemudian klik di atas JFrame, sebuah Jlabel akan dibuat

Jendela Design dan Pallete Netbeans Matisse

 

5. Untuk memenuhi tujuan kita membuat Swing HelloWorld, kita akan memasukkan string “HelloWorld” ke dalam JLabel yang baru saja kita buat. Caranya, dobel klik di atas JLabel tersebut, kursor muncul bersama text field dan ketikkan “Helloworld”.

6. Klik kanan di file HelloWorld.java pada jendela explorer di sebelah kiri, pilih menu Run File… untuk mengcompile dan menjalankan class HelloWorld.java atau tekan tombol SHIFT + F6.

 

Matisse mempunyai sistem Layouting yang sangat fleksible, sistem layout yang digunakan oleh Matisse adalah GroupLayout. Dalam chapter berikutnya kita akan belajar bagaimana menggunakan GroupLayout ini dengan benar dan memanfaatkan keunggulanya dalam menata component GUI dengan sangat rapi.

Swing helloworld ini hanya sebagian kecil saja dari pekerjaan yang harus dilakukan dalam membangun aplikasi desktop berbasis Java. Selanjutnya kita akan membahas penggunaan JLabel, JButton, JCheckBox, JTextField dan JRadioButton untuk membuat aplikasi GUI sederhana dengan menggunakan Matisse.

 

Komponen Swing

 

 

Swing toolkit menyediakan banyak sekali komponen untuk membangun aplikasi GUI desktop. Swing toolkit juga menyediakan class-class untuk menangani interaksi antara aplikasi dan user menggunakan standard input seperti keyboard dan mouse. Komponen-komponen yang disediakan swing mencakup semua GUI toolkit yang lazim digunakan dalam apilasi desktop, seperti : JTabel, JList, JTree, JButton, JLabel dan masih banyak komponenkomponen lainnya yang sudah teruji dan siap pakai.

Selain komponen GUI, swing juga menyediakan fasilitas untuk proses undo, komponen untuk mengolah text, internationalization, Komponen GUI yang mendukung penyandang cacat (accessibility support) dan fasilitas drag-and-drop.

Look and Feel merupakan fasilitas yang unik dalam swing. Dengan fasilitas Look and Feel ini kita bisa dengan mudah merubah tampilan dari program kita sesuai dengan keinginan dan tujuan kita. Misalnya, agar program terlihat fancy atau agar program terlihat konsisten dalam segala keadaan.

Swing juga menyediakan library Java 2D untuk pengolahan data secara visual, seperti mengolah gambar, object 2D, bahkan animasi. SwingLabs.org menyediakan libary Swing Painter yang merupakan pengembangan dari Java 2D, Swing Painter ini memungkinkan aplikasi swing mempunyai tampilan yang indah dan terlihat profesional.

Java 6.0 menambahkan banyak sekali fitur-fitur baru ke dalam package swing, termasuk dukungan untuk library OpenGL menggunakan JOGL, Tray Icon dan Web Service. Dengan adanya dukungan ini swing menjadi lebih poweful dan mempunyai masa depan yang cerah.

Jun
22

Pemrograman Jaringan modern sekarang ini berbasis pada model client/server. Pada sebagian besar kasus, server biasanya mengirim data, sedangkan client menerimanya. Pembahasan tentang model Client/Server tidak akan lepas dari konsep sistem terdistribusi. Sebab client/server merupakan model dasar dari sistem terdistribusi.

Pengertian “Sistem Terdistribusi”
“A system in which hardware or software components located at networked computers communicate and coordinate their actions only by message passing.” [Coulouris]

Dengan pembagian fungsi untuk tiap komponen dalam suatu sistem, manfaatnya:
– Berbagi resource
– Berbagi beban kerja
– Tidak membedakan platform
– Meningkatkan efisiensi
Ada dua organisasi yang menstandarisasi pemrograman jaringan dan protokol di internet, yaitu :
– Internet Engineering Task Force (IETF) : TCP/IP, MIME, dan SMTP
– World Wide Web Consortium (W3C) : HTTP, HTML, XHTML, MathML, dan XML
Dokumen-dokument IETF dipublikasikan sebagai Internet drafts dan requests for comments (RFCs). RFCs and Internet drafts berasal dari informational dokumen dari keinginan umum sampai spesifikasi detail dari Internet protokol seperti HTTP.
Dokumen RFCs dipublikasikan jika disetujui oleh Internet Engineering Steering Group (IESG) dari IETF. Semua dokumen standar IETF yang disetujui adalah RFCs, tetapi tidak semua RFCs adalah standar IETF. RFCs banyak terdapat di Internet, misalnya http://www.faqs.org/rfc/ dan http://www.ietf.org/rfc.html
RFC Title Maturity level Requirement level Description
RFC 791
RFC 919
RFC 922
RFC 950
STD 5 Internet Protocol Standard Required The IP internet layer protocol.
RFC 768
STD 6 User Datagram Protocol Standard Recommended An unreliable, connectionless transport layer protocol.
RFC 793
STD 7 Transmission Control Protocol Standard Recommended A reliable, connection-oriented, streaming transport layer protocol.
RFC
2821 Simple Mail Transfer Protocol Proposed standard Recommended The application layer protocol by which one host transfers email to another host. This standard doesn’t say anything about email user interfaces; it covers the mechanism for passing email from one computer to another.
RFC 822
STD 11 Format of Electronic Mail Messages Standard Recommended The basic syntax for ASCII text email messages. MIME is designed to extend this to support binary data while ensuring that the messages transferred still conform to this standard.
RFC 854
RFC 855
STD 8 Telnet Protocol Standard Recommended An application-layer remote login service for command-line environments based around an abstract network virtual terminal (NVT) and TCP.
RFC 959
STD 9 File Transfer Protocol Standard Recommended An optionally authenticated, two-socket application layer protocol for file transfer that uses TCP.
RFC 977 Network News Transfer Protocol Proposed standard Elective The application layer protocol by which Usenet news is transferred from machine to machine over TCP; used by both news clients talking to news servers and news servers talking to each other.
RFC
1034
RFC 1035
STD 13 Domain Name System Standard Recommended The collection of distributed software by which hostnames that human beings can remember, like http://www.oreilly.com, are translated into numbers that computers can understand, like 198.112.208.11. This STD defines how domain name servers on different hosts communicate with each other using UDP.
RFC 1738 Uniform Resource Locators Proposed standard Elective Full URLs like http://www.amnesty.org/ and ftp://ftp.ibiblio.org/pub/multimedia/chinese-music/Dream_Of_Red_Mansion/HLM04 .Handkerchief.au.
RFC 1808 Relative Uniform Resource Locators Proposed standard Elective Partial URLs like /javafaq/books/ and ../examples/07/index.html used as values of the HREF attribute of an HTML A element.
RFC 1939
STD 53 Post Office Protocol, Version 3 Standard Elective An application-layer protocol used by sporadically connected email clients such as Eudora to retrieve mail from a server over TCP.
RFC 1945 Hypertext Transfer Protocol (HTTP 1.0) Informational N/A Version 1.0 of the application layer protocol used by web browsers talking to web servers over TCP; developed by the W3C rather than the IETF.
RFC
2045
RFC 2046
RFC 2047 Multipurpose Internet Mail Extensions Draft standard Elective A means of encoding binary data and non-ASCII text for transmission through Internet email and other ASCII-oriented protocols.
RFC 2068 Hypertext Transfer Protocol (HTTP 1.1) Proposed standard Elective Version 1.1 of the application layer protocol used by web browsers talking to web servers over TCP.
RFC 2373 IP Version 6 Addressing Architecture Proposed standard Elective The format and meaning of IPv6 addresses.
RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax Proposed standard Elective Similar to URLs but cut a broader path. For instance, ISBN numbers may be URIs even if the book cannot be retrieved over the Internet.
RFC 3501 Internet Message Access Protocol Version 4rev1 Proposed standard Elective A protocol for remotely accessing a mailbox stored on a server including downloading messages, deleting messages, and moving messages into and out of different folders.

Sedangkan W3C hanya boleh terdiri dari perusahaan-perusahaan saja.

ARSITEKTUR CLIENT-SERVER
Client/Server dapat diartikan sebagai kemampuan komputer untuk meminta layanan request data kepada komputer lain. Komputer yang meminta layanan disebut sebagai client, sedangkan yang menyediakan layanan disebut sebagai server.

Pengertian lain, client melakukan permintaan suatu informasi atau mengirim perintah ke server. Server akan menerima permintaan dan perintah client. Kemudian server akan memproses memproses berdasarkan permintaan tersebut, dan mengembalikan kepada client sebagai hasil pemrosesan yang sudah dilakukan.