Anda di halaman 1dari 27

DASAR-DASAR JAVA

Java sebagai salah satu bahasa pemrograman baru menjanjikan banyak kemudahan bagi

programer junior maupun senior. Tutorial ini akan membawa Anda mengenal lebih jauh bahasa

ini melalui pembahasan konsep model perancangan dan petunjuk sederhana penggunaannya.

Apakah Java?

Java adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun

Microsystems sejak tahun 1991. Bahasa ini dikembangkan dengan model yang mirip dengan

bahasa C++ dan Smalltalk, namun dirancang agar lebih mudah dipakai dan platform

independent, yaitu dapat dijalankan di berbagai jenis sistem operasi dan arsitektur komputer.

Bahasa ini juga dirancang untuk pemrograman di Internet sehingga dirancang agar aman dan

portabel.

Platform Independent

Platform independent berarti program yang ditulis dalam bahasa Java dapat dengan

mudah dipindahkan antar berbagai jenis sistem operasi dan berbagai jenis arsitektur komputer.

Aspek ini sangat penting untuk dapat mencapai tujuan Java sebagai bahasa pemrograman

Internet di mana sebuah program akan dijalankan oleh berbagai jenis komputer dengan berbagai

jenis sistem operasi. Sifat ini berlaku untuk level source code dan binary code dari program Java.

Berbeda dengan bahasa C dan C++, semua tipe data dalam bahasa Java mempunyai ukuran yang

konsisten di semua jenis platform. Source code program Java sendiri tidak perlu dirubah sama

sekali jika Anda ingin mengkompile ulang di platform lain. Hasil dari mengkompile source code
Java bukanlah kode mesin atau instruksi prosesor yang spesifik terhadap mesin tertentu,

melainkan berupa bytecode yang berupa file berekstensi .class. Bytecode tersebut dapat

langsung Anda eksekusi di tiap platform yang dengan menggunakan Java Virtual Machine

(JVM) sebagai interpreter terhadap bytecode tersebut.

JVM sendiri adalah sebuah aplikasi yang berjalan di atas sebuah sistem operasi dan

menerjemahkan bytecode program Java dan mengeksekusinya, sehingga secara konsep bisa

dianggap sebagai sebuah interpreter. Proses pengeksekusian program Java dapat dilukiskan

seperti di Gambar 1. Dengan cara ini, sebuah program Java yang telah dikompilasi akan dapat

berjalan di platform mana saja, asalkan ada JVM di sana.

Kompiler dan interpreter untuk program Java berbentuk Java Development Kit (JDK)

yang diproduksi oleh Sun Microsystems. JDK ini dapat didownload gratis dari situs

java.sun.com. Interpreter untuk program Java sendiri sering juga disebut Java Runtime atau Java

Virtual Machine. Interpreter Java, tanpa kompilernya, disebut Java Runtime Environment (JRE)

dapat didownload juga di situs yang sama. Untuk mengembangkan program Java dibutuhkan

JDK, sementara jika hanya ingin menjalankan bytecode Java cukup dengan JRE saja. Namun

untuk mengeksekusi applet (sebuah bytecode Java juga) Anda biasanya tidak perlu lagi

mendownload JRE karena browser yang Java-enabled telah memiliki JVM sendiri.

Library
Selain kompiler dan interpreter, bahasa Java sendiri memiliki library yang cukup besar

yang dapat mempermudah Anda dalam membuat sebuah aplikasi dengan cepat. Library ini sudah

mencakup untuk grafik, desain user interface, kriptografi, jaringan, suara, database, dan lain-lain.

OO

Java adalah bahasa pemrograman berorientasi objek. Pemrograman berorientasi objek secara

gamblang adalah teknik untuk mengorganisir program dan dapat dilakukan dengan hampir

semua bahasa pemrograman. Namun Java sendiri telah mengimplementasikan berbagai fasilitas

agar seorang programer dapat mengoptimalkan teknik pemrograman berorientasi objek.

Sedikit perbandingan tambahan dengan bahasa C dan C++, Java banyak mewarisi konsep

orientasi objek dari C++ namun dengan menghilangkan aspek-aspek kerumitan dalam bahasa C+

+ tanpa mengurangi kekuatannya. Hal ini mempermudah programer pemula untuk mempelajari

Java namun mengurangi keleluasaan programer berpengalaman dalam mengutak-atik sebuah

program. Di balik kemudahan yang ditawarkan Java, luasnya fasilitas library Java sendiri

membuat seorang programer membutuhkan waktu yang tidak singkat untuk dapat menguasai

penggunaan library-library tersebut.

Memulai Pemrograman Java

Untuk membuat program Java, seperti telah disebutkan sebelumnya, Anda membutuhkan JDK.

Proses instalasi JDK tersebut sangat mudah dan tidak membutuhkan pengetahuan tertentu.

Namun untuk menggunakannya Anda perlu melakukan beberapa penyesuaian dengan sistem

operasi Anda. Umumnya yang perlu Anda lakukan adalah memasukkan path ke direktori JDK
Anda ke setting path pada sistem operasi Anda. Misalkan direktori JDK Anda adalah C:\jdk1.4

maka pada Windows 98 Anda cukup menambahkan baris perintah SET PATH=C:\jdk1.4\bin

pada file autoexec.bat Anda. Untuk Windows NT/2000/XP Anda cukup menambahkan

direktori C:\jdk1.4\bin pada variabel path di System Environment. Caranya: klik kanan ikon

My Computer, pilih Properties. Kemudian pilih tab Advanced. Lalu klik tombol Environment

Variables, cari variabel path, kemudian tambahkan path direktori JDK Anda ke dalam variabel

tersebut. Untuk Linux, tambahkan baris perintah SET CLASSPATH=(direktori jdk Anda) ke

file profile Anda. Untuk mencoba JDK, ketikkan perintah java dan javac pada shell prompt

(atau DOS Command Prompt). Jika perintah tersebut sudah dikenali maka program java atau

javac akan menampilkan sintaks penggunaan. Untuk kemudahan dan berbagai fasilitas

tambahan Anda dapat menggunakan Integrated Development Environment (IDE) untuk bahasa

Java seperti Visual Café dari Symantec atau JBuilder dari Borland.

Urutan langkah-langkah yang harus Anda lakukan untuk membuat sebuah program Java

sederhana adalah:

1. Membuat source code program dengan editor teks apapun. Ingat, file tersebut harus

berekstensi .java dan case sensitive.

2. Mengkompile source code dengan perintah javac. Misalnya: javac HelloWorld.java.

Jika berhasil, hasilnya adalah file bytecode berakhiran .class.

3. Mengeksekusi bytecode dengan perintah java. Parameter dari perintah ini adalah nama

file hasil kompilasi tanpa ekstensi .class. Contoh: java HelloWorld.

Source Code
Berikut kode untuk HelloWorld.java:

publicclass HelloWorld

public static void main(String[] args)

System.out.println("Apa Kabar Dunia?");

Dan ini sebuah contoh lain, yaitu applet sederhana untuk menampilkan teks di applet.

Sebutlah file ini bernama HelloWorldApplet.java:

import java.awt.Graphics;

public class HelloWorldApplet extends java.applet.Applet

public void paint(Graphics g)

g.drawString("Apa Kabar Dunia?", 5, 25);

Secara gamblang dapat diperhatikan bahwa struktur kedua program sangat mirip, dan

hanya berbeda dalam konteks eksekusi. Kedua program ini akan dibahas lebih lanjut setelah kita

membahas cara mengkompile dan mengeksekusi program tersebut.

Perlu diingat bahwa bahasa Java bersifat case sensitive, sehingga Anda harus

memperhatikan penggunaan huruf besar dan kecil. Selain itu penulisan source code program
tidak harus memperhatikan bentuk tertentu, sehingga Anda bisa saja menuliskan semua baris

source code tersebut dalam satu baris asal Anda tidak lupa membubuhkan tanda titik koma ( ;),

atau menuliskan tiap kata dalam satu baris tersendiri. Namun dianjurkan Anda mengikuti layout

seperti pada contoh agar program Anda mudah dibaca dan dimengerti.

Kompilasi

Setelah kedua file disave dengan nama HelloWorld.java dan HelloWorldApplet.java,

kita akan mengkompile kedua program tersebut dengan perintah:

prompt> javac HelloWorld.java

prompt> javac HelloWorldApplet.java

Perlu diperhatikan bahwa direktori aktif Anda saat ini adalah direktori tempat Anda

meletakkan file-file program tersebut. Anda tetap dapat mengkompile program Anda dari

direktori berbeda dengan perintah:

prompt> javac (direktori program)/namafile.java

Setelah perintah ini selesai, Anda akan melihat bahwa telah tercipta dua buah file

.class, yaitu bytecode hasil kompilasi source code kita.

Sintaks Program

Sekarang kita akan mencoba membahas elemen-elemen dalam kedua source code

tersebut.
Pada awal Listing 2 kita menemukan perintah import. Pada tahap awal ini Anda perlu

mengetahui bahwa pernyataan tersebut hanya berfungsi mempermudah penulisan metode atau

dalam bahasa pemrograman lain disebut prosedur atau fungsi. Jadi Anda hanya perlu menulis

Graphics sebagai pengganti java.awt.Graphics, karena kita telah mengimpor

java.awt.Graphics.

Kemudian di masing-masing listing terdapat pernyataan public class. Pernyataan ini adalah

pernyataan pembuka sebuah kelas. Kelas sendiri digunakan untuk menciptakan objek. Ingat

bahwa Java berorientasi objek. Kata public di depannya berfungsi agar kelas tersebut dapat

diakses oleh semua program lain. Untuk saat ini anggaplah objek sebagai suatu item yang dapat

dimanipulasi oleh sebuah program. Dalam Listing 2 terdapat tambahan kata extends. Hal ini

berarti kelas yang kita buat akan mewarisi sifat-sifat dari kelas yang kita extends. Dengan kata

lain kita menjadikan kelas yang kita extends sebagai himpunan bagian dari kelas kita buat.

Kemudian kita menemukan baris pernyataan public static void main(String[] args) dan

public void paint(Graphics g). Keduanya adalah pernyataan pembuka sebuah metode.

Metode sendiri adalah kumpulan pernyataan untuk melakukan suatu tugas tertentu dalam kelas.

Keduanya sebenarnya mempunyai fungsi yang sama namun dalam konteks yang berbeda. Dalam

setiap aplikasi harus ada sebuah metode yang bernama main yang akan dieksekusi pertama kali

saat program tersebut dieksekusi. Sementara dalam applet, metode yang pertama kali akan

dieksekusi ketika applet diload adalah paint. Kata public di depannya mempunyai fungsi yang

sama dengan kata public yang ada di depan baris permulaan kelas. Namun nantinya Anda akan

menemukan juga bentuk lain seperti private dan protect yang akan kita bahas nanti.
Pada Listing 1 terdapat kata static pada pernyataan pembuka metode main. Hal ini berarti

metode main tidak mengubah atau menggunakan objek yang diciptakan oleh kelas tersebut,

sehingga dapat dikatakan berdiri sendiri dan tidak terikat dengan objek. Dalam metode main

dalam aplikasi, parameternya adalah selalu String[] args, di mana args hanyalah sebuah

nama dari objek array dari String. Array ini nantinya akan berisi parameter-parameter yang

diberikan user sebagai argumen command line. Sementara Anda tidak perlu mengerti mengenai

parameter tersebut, cukup diingat bahwa bentuk metode main harus selalu demikian.

Kemudian di dalam kedua metode pada kedua listing tersebut, kita menemukan sebuah

pernyataan. Anda tentu dapat saja meletakkan lebih dari satu pernyataan dalam sebuah metode.

Setiap pernyataan dalam sebuah metode dipisahkan oleh titik koma dan akan dieksekusi satu

persatu. Kedua pernyataan pada listing ternyata memanggil sebuah metode lain yaitu metode

println dan paint. Tentunya dapat Anda perhatikan bahwa untuk memanggil sebuah metode

diperlukan tiga komponen yaitu:

1. Objek yang ingin kita pakai. Dalam hal ini objek System.out dan Graphics g.

2. Nama metode yang ingin kita pakai. Dalam hal ini println dan paint.

3. Sepasang tanda kurung yang berisi informasi tambahan yang diperlukan oleh metode

yang dipanggil, yaitu parameter.

Dalam Listing 1, pernyataan System.out.println("Apa Kabar Dunia?"); berarti carilah

objek out dalam kelas System kemudian panggil metode println dari objek out dengan

parameter berupa string "Apa Kabar Dunia?". Sedang dalam Listing 2, pernyataan

g.drawString("Apa Kabar Dunia?", 5, 25); berarti carilah objek g kemudian panggil

metode drawString pada objek g dengan parameter "Apa Kabar Dunia?”, 5, 25);.
Eksekusi

Setelah selesai membahas sintaks dasar Java dalam kedua listing, selanjutnya kita akan

mencoba mengeksekusi kedua program ini. Untuk program pertama yang berupa aplikasi biasa,

kita tinggal mengetikkan perintah java HelloWorld pada prompt dan pesan Apa Kabar Dunia?

akan tampil di layar (atau mungkin di tempat lain, bergantung sistem operasi Anda). Sedangkan

untuk applet kita mesti membuat sebuah file HTML sebagai pembungkus—atau pemanggilnya.

Berikut diberikan contoh file HTML untuk membungkus applet yang kita buat.

<HTML>

<HEAD>

<TITLE>Coba Applet</TITLE>

</HEAD>

<BODY>

<APPLET CODE="HelloWorldApplet.class" WIDTH=150 HEIGHT=25>

</APPLET>

</BODY>

</HTML>

Beri nama helloword.html dan simpanlah di direktori yang sama dengan lokasi file-file

.java dan .class sebelumnya. Untuk mengeksekusi applet kita cukup membuka file HTML

tersebut di browser yang Java-enabled atau mengetikkan perintah appletviewer

namafile.html di prompt.
PERNYATAAN IF-ELSE
Pernyataan Percabangan If-Else digunakan untuk memecahkan persoalan untuk
mengambil suatu keputusan diantara sekian pernyataan yang ada. Untuk keperluan pengambilan
keputusan, Borland C++ menyediakan beberapa perintah antara lain:

1. Pernyataan If-Else

Bentuk umum dari pernyataan If-Else

if(kondisi)
{
statement 1;
}
else
{
statement 2;
}

Ket :

 Kondisi adalah pernyataan relasi yang akan diuji kebenarannya. Kondisi bisa berbentuk
pernyataan relasi tunggal maupun pernyataan relasi majemuk yang dihunbungkan dengan
operator logika.
 Statement adalah satu atau lebih perintah yang akan dikerjakan jika kondisi bernilai
benar.
 Kurung kurawal buka-tutup bisa dihilangkan apabila hanya terdapat satu statement.

Kesimpulan:
Pernyataan if mempunyai pengertian, "Jika kondisi bernilai benar, maka statement 1 akan
dikerjakan dan jika tidak memenuhi syarat maka akan mengerjakan statement 2".

Untuk contoh listing programnya, silahkan lihat di sini!

2. Pernyataan If-Else Multi Kondisi

Kondisi yang diperiksa di dalam perintah if bisa berupa kumpulan operasi yang dihubungkan
dengan satu atau lebih operator logika.
Bentuk umum If-Else Multi Kondisi.

if(kondisi1 &&/|| kondisi2 .......dst)


{
statement;
}
.....dst
Ket:

 Kondisi 1, kondisi 2, dst adalah beberapa pernyataan relasi yang akan diuji
kebenarannya. Hasil akhir dari seluruh kondisi inilah yang akan menentukan apakah blok
statement akan dikerjaka atau tidak.
 Operator "&&" digunakan untuk menghubungkan dua relasi dengan logika AND. Hasil
akhir akan bernilai benar apabila kedua kondisi benar. Dan bernilai salah apabila kedua
kondisi atau salah satu kondisi bernilai salah.
 Operator "||" digunakan untuk menghubungkan dua relasi dengan logika OR. Hasil akhir
akan bernilai benar apabila kedua kondisi benar atau salah satunya benar. Dan bernilai
salah apabila kedua kondisi bernilai salah.
 Kurung kurawal buka-tutup bisa dihilangkan apabila hanya terdapat satu statement.

3. Pernyataan Nested If-Else

Percabangan If-Else secara Nested merupakan sebuah struktur percabangan bisa saja berada di
dalam struktur percabangan yang lain, demikian terus tanpa batas, disesuaikan dengan persoalan
yang dihadapi. Diproses atau tidaknya percabangan yang berada di bagian dalam ditentukan oleh
diproses-tidaknya percabangan bagian luar.

Nested if merupakan pernyataan if berada didalam pernyataan if yang lainnya. Bentuk penulisan
pernyataan Nested if adalah :

if(kondisi 1)
{
if(kondisi 1-1)
{
statement 1.1;
}
else
{
statement 1.2;
}
}
else
{
if(kondisi 2-1)
{
statement 2.1;
}
else
{
statement 2.2;
}
}

Kesimpulan:
Pernyatan Nested If-Else memiliki pengertian,

 "Jika kondisi 1 bernilai benar, dan jika kondisi 1-1 bernilai benar, maka akan
mengerjakan statement 1.1" Apabila kondisi 1-1 bernilai salah, maka akan mengerjakan
statement 1.2".
 "Jika kondisi 1 bernilai salah, dan jika kondisi 2-1 bernilai benar, maka akan
mengerjakan statement 2.1" Apabila kondisi 2-1 bernilai salah, maka akan mengerjakan
statement 2.2".

Pernyataan switch
Penyataan percabangan kedua yang dimiliki Java adalah switch. Pernyataan switch
lebih jarang digunakan, tetapi sering bermanfaat apabila kita ingin menuliskan percabangan
multi arah.

Pernyataan switch memiliki bentuk sebagai berikut

switch (ekspresi) {
case nilai1:
perintah1
break;
case nilai2:
perintah2
break;
case nilai3:
perintah3
break;
default:
perintah_lain
}

Di sini pernyataan switch akan mencari nilai ekspresi yang sesuai dengan nilai-nilai
yang didaftarkan pada pernyataan case. Jika salah satu nilai ditemui, maka program akan
melompat ke cabang case tersebut dan melakukan perintah yang terdapat di sana. Jika tidak
ditemui, maka program akan melompat ke perintah yang terdapat pada pernyataan default.

Catatan ekspresi hanya bisa berbentuk nilai bilangan bulat (int, short, dan sejenisnya) atau
karakter, sehingga kita tidak bisa menggunakan switch untuk mengevaluasi ekspresi yang
berbentuk String.
Pernyataan break di atas sebetulnya tidak harus selalu ada. Tetapi, perintah break di sini
memerintahkan komputer agar segera keluar dari blok switch apabila perintah tersebut telah
selesai dilaksanakan.

Apabila perintah break tidak diberikan, maka program akan terus mengeksekusi perintah
lain meskipun sudah berada di luar nilai yang tertera dalam pernyataan casenya.

Misalnya, lihat kode berikut ini :

switch (N)
case 1:
System.out.println("Angka tersebut bernilai 1");
break;
case 2:
case 3:
case 4:
case 5:
System.out.println("Angka tersebut bernilai 2, 3, 4, atau 5");
break;
case 6:
case 7:
case 8:
System.out.println("Angka tersebut bernilai 6, 7, atau 8");
break;
default:
System.out.println("Angka tersebut tidak bernilai 1 - 8");
}

Salah satu aplikasi di mana pernyataan switch berguna adalah untuk memproses menu.
Menu memiliki beberapa pilihan dan user akan diminta untuk memilih suatu pilihan. Kita dapat
menggunakan switch untuk menginstruksikan komputer untuk melakukan tugas tertentu sesuai
dengan menu yang dipilih oleh user.

Jika Anda ingat pernyataan main() pada program Java, pernyataan main memiliki
parameter String[] args, di mana args merupakan argumen yang diberikan pada saat program
dijalankan melalui konsol. Biasanya argumen yang diberikan berupa opsi bagaimana program
harus dilaksanakan. Di sini pernyataan switch juga berguna untuk memilih bagaimana program
akan berjalan.

Jika Anda terbiasa atau pernah bergaul dengan Linux, maka tidak asing untuk
menemukan perintah pada Linux seperti "ls -l" atau "tar xfz blabla". Di sini ls atau tar adalah
nama program dan "-l" atau "xfz blabla" adalah argumen yang diberikan pada saat program
dijalankan.

Pernyataan kosong
Pernyataan kosong sebenarnya merupakan blok kosong, atau sama dengan {} tanpa perintah apa-
apa di dalamnya. Dalam Java, pernyataan kosong juga berarti tanda ; sehingga apabila Anda
menulis kode seperti

if (x > 0);
perintah1

maka perintah1 akan tetap dilaksanakan walaupun x <= 0.

Perintah kosong sering merupakan sumber kesalahan dan salah satu fitur yang sulit untuk dicari
kesalahannya pada saat debugging. Misalnya perintah berikut

for (i = 1; i <= 10; i++);


System.out.println("hallo");

Anda berharap untuk mencetak kata hallo 10x di layar, pada kenyataannya hanya 1 hallo
yang dicetak. Kenapa? Karena tanda ";" setelah for menyatakan bahwa program tidak melakukan
apa-apa di dalam perulangan. Perintah System.out.println("hallo") tidak berada di dalam
perulangan for, sehingga perintah ini hanya dijalankan 1x saja.

Pernyataan-pernyataan lain
Hingga saat ini kita sudah membahas hampir semua pernyataan yang Java sediakan. Ada
beberapa yang akan kita bahas kemudian, tetapi pernyataan-pernyataan ini merupakan
pernyataan lanjutan Java, seperti return yang digunakan untuk membuat subrutin sendiri, atau
try...catch dan throw untuk mengontrol alur kesalahan apabila ditemui di tengah program
(atau dengan kata lain eksepsi atau pengecualian), dan synchronized untuk mengatur kontrol
untuk multi-threading.
Objek, Metode Instansi dan Variable Instansi
Pemrograman berorientasi objek bermaksud untuk memecahkan masalah programming
mirip dengan cara berfikir manusia dan bagaimana manusia berinteraksi dengan dunia. Kita telah
melihat bagaimana masalah programming dipecahkan dengan membaginya menjadi instruksi-
instruksi kecil yang dirangkai menjadi suatu kesatuan tugas. Cara ini disebut juga dengan
pemrograman berdasarkan prosedur.

Pada pemrograman berorientasi objek, kita membagi masalah pemrograman berdasarkan


objek atau "sesuatu" benda. Objek ini diibaratkan seperti makhluk hidup, yaitu memiliki ciri-ciri
fisik dan juga perilaku. Dalam pemrograman berorientasi objek, ciri-ciri fisik ini disebut juga
sebagai atribut, pada dasarnya berisi informasi tentang objek tersebut. Sedangkan perilaku
disebut sebagai metode, yaitu bagaimana suatu objek bertindak atau melakukan sesuatu.

Dengan cara ini diharapkan pemrograman berorientasi objek merupakan pemrograman


yang lebih alami dibandingkan dengan pemrograman berorientasi prosedur, karena cara fikir kita
sudah terbiasa dengan bagaimana kita berinteraksi dengan dunia.

Sampai tingkat tertentu, PBO hanya merubah cara pandang programmer. Objek dalam
kaitannya dengan dasar pemrograman adalah gabungan dari variabel (dalam hal ini atribut) dan
subrutin (yaitu metode) yang berinteraksi dengan variabel pada objek.

Banyak bahasa pemrograman lain yang juga mendukung konsep PBO, akan tetapi Java
merupakan bahasa yang mendukung penuh PBO, di antaranya karena Java memiliki beberapa
fitur penting yang berbeda dari bahasa standar. Untuk menggunakan fitur ini, kita harus
mengubah cara pandang kita terlebih dahulu.

Objek terkait erat dengan kelas. Kita telah bahas dan mencoba beberapa contoh kelas
pada bab-bab sebelumnya. Seperti kita lihat pula bahwa kelas memiliki variabel dan subrutin.

Jika objek juga memiliki variabel dan subrutin, lalu apa bedanya dengan kelas? Lalu
mengapa kita harus memiliki cara pandang berbeda dengan cara kita melihat kelas? Sepertinya
apabila kita lihat contoh-contohnya sebelumnya, perbedaannya hanya menghilangkan kata
"static" dari deklarasi variabel dan subrutinnya, khan?

Seperti disebutkan sebelumnya bahwa kelas mendeskripsikan suatu objek, atau lebih
tepatnya, bagian non "static" mendeskripsikan suatu objek. Mungkin bahasa biologi, kelas
adalah species, sedangkan objek merupakan individu. Human sapiens (nama biologi manusia)
adalah kelas, sedangkan Anda, saya, ibu, bapak, pak hansip adalah objek. Masing-masing dari
kita memiliki "blueprint" atau cetak biru yang sama, tetapi kita memiliki ciri-ciri yang berbeda,
rambut, mata, telinga, tinggi badan, berat badan, dan juga perilaku kita saat makan, minum,
belajar, dan lain-lain.

Dalam sudut pandang pemrograman, kelas digunakan untuk menciptakan suatu objek.
Atau dengan kata lain, kelas adalah pabrik pembuat objek. Bagian non-statik dari suatu kelas
adalah bagian yang memuat detail suatu objek, yaitu apa isi variabel dan metodenya. Perbedaan
kelas dan objek adalah : Objek diciptakan dan dihancurkan ketika program berjalan, sehingga
kita bisa memiliki beberapa objek sekaligus.

Kita lihat contoh sederhana, dimana kelas sederhana digunakan untuk menggabungkan
beberapa variabel statik. Misalnya

class DataPenduduk {
static String nama;
static int umur;
}

Pada program yang menggunakan kelas ini, hanya ada satu kopi dari setiap variabel
DataPenduduk.nama dan DataPenduduk.umur. Hanya akan ada satu penduduk, karena kita
menyimpan data tersebut sebagai data statik, yang artinya hanya satu tempat di memori di mana
data tersebut disimpan. Kelas DataPenduduk dan variabel isinya akan ada selama program
tersebut berjalan.

Sekarang kita lihat kode berikut yang memiliki variabel non-statik:

class DataPenduduk {
String nama;
int umur;
}

Dalam hal ini tidak ada lagi yang variabel DataPenduduk.nama dan DataPenduduk.umur,
karena nama dan umur bukan anggota statik kelas DataPenduduk. Jadi, tidak ada yang bisa kita
lakukan dengan kelas ini sama sekali, kecuali membuat objek dari kelas ini.

Setiap objek akan memiliki variable sendiri yang dinamakan "nama" dan "umur". Kita
bisa membuat banyak "penduduk" karena kita bisa membuat objek untuk setiap penduduk.
Misalnya setiap kali seseorang dilahirkan, kita bisa membuat objek penduduk baru. Atau jika
seseorang meninggal dunia, kita bisa hapus objek tersebut.

Suatu sistem yang terdiri dari kumpulan objek digunakan untuk memodelkan apa yang
terjadi di alam nyata. Kita tidak bisa membuat beberapa objek dengan menggunakan variabel
statik.

Contoh lainnya adalah pada GUI. Bayangkan kita memiliki beberapa tombol, misalnya
tombol OK, Cancel dan Apply. Masing-masing tombol ini memiliki kelas yang sama akan tetapi
apa yang dilakukan tombol ini berbeda-beda. Teks yang ditampilkan (OK, Cancel atau Apply)
merupakan variabel masing-masing objek.

Suatu objek yang diciptakan dari suatu kelas disebut instansi dari kelas tersebut. Variabel
yang dimiliki oleh objek disebut variabel instansi. Sedangkan subrutinnya disebut . (Dalam
PBO subrutin disebut metode)
Misalnya dalam kelas DataPenduduk di atas, kemudian kita buat suatu objek dari kelas
ini, maka objek yang diciptakan disebut instansi dari kelas DataPenduduk, "nama" dan "umur"
adalah variabel instansi di dalam objek tersebut.

Penting untuk diingat bahwa kelas suatu objek menentukan tipe data dari variabel
instansi, akan tetapi isi datanya sendiri tidak disimpan di dalam kelas, akan tetapi di dalam objek
yang diciptakan, sehingga setiap objek akan memiliki data masing-masing.

Begitu juga dengan metode instansi, misalnya pada kelas tombol, kita memiliki metode
yang dinamakan klik(). Masing-masing tombol akan melakukan tugas berbeda-beda tergantung
dari objeknya.

Seperti kita lihat di sini bahwa bagian statik dan non-statik dari suatu kelas merupakan
hal yang sama sekali berbeda. Banyak kelas yang hanya memiliki anggota statik, atau hanya
memiliki anggota non-statik. Akan tetapi kita juga bisa mencampur keduanya dalam suatu kelas.
Variabel anggota statik suatu kelas juga bisa disebut variabel kelas dan metode anggota statik
suatu kelas juga bisa disebut metode kelas, karena mereka adalah milik kelas dan bukan milik
objek yang diciptakan dari suatu kelas.

Sekarang kita gunakan contoh yang lebih real. Kita akan buat versi sederhana dari kelas
Murid, dimana kita akan menyimpan informasi tentang murid yang terdaftar pada suatu sekolah.

class Murid {
String nama ; // nama murid
double nilai1, nilai2, nilai3; // nilai ulangan murid tersebut
double hitungRataRata() { // hitung rata-rata nilai ulangan
return (nilai1 + nilai2 + nilai3) / 3;
}
}

Kita lihat bahwa semua anggota kelas tersebut bukan anggota statik, artinya kelas ini
hanya bisa digunakan untuk membuat objek. Definisi kelas ini artinya bahwa di dalam objek
yang akan diciptakan, akan ada variabel instansi yang bernama nama, nilai1, nilai2, dan
nilai3, dan juga metode instansi yang bernama hitungRataRata(). Setiap murid memiliki
nilai rata-rata yang berbeda-beda. (Makanya ini disebut perilaku suatu objek berbeda-beda).

Dalam Java, kelas merupakan tipe data, yaitu mirip dengan tipe data bawaan seperti int
atau boolean. Jadi nama kelas bisa digunakan untuk menentukan tipe suatu variabel dalam
deklarasi pernyataan, dalam parameter formal dan juga dalam tipe keluaran suatu fungsi.
Misalnya, program mendefinisikan seorang murid dengan pernyataan seperti :

Murid amir;

Akan tetapi membuat variabel seperti di atas TIDAK menciptakan objek. Initinya, ini
adalah hal Yang Sangat Amat Penting :
Dalam Java, tidak ada variabel yang bisa menyimpan objek. Variabel hanya bisa
menyimpan referensi (alamat di memori) suatu objek. Komputer akan menggunakan
referensi ini untuk mencari objek di dalam memori.

Objek diciptakan dengan pernyataan new, yang bertugas menciptakan objek kemudian
mengembalikan referensi ke objek yang sudah diciptakan. Misalnya amir adalah variabel dengan
tipe Murid seperti dideklarasikan di atas, maka pernyataan berikut :

amir = new Murid();

akan membuat objek yang merupakan instansi dari kelas Murid. Variabel amir akan
menyimpan referensi ke objek yang baru saja diciptakan.

Sekarang anggap variabel amir merujuk pada objek yang diciptakan dari kelas Murid.
Dalam objek tersebut terdapat variabel nama, nilai1, nilai2, dan nilai3. Variabel instansi ini
bisa dipanggil dengan amir.nama, amir.nilai1, amir.nilai2, dan amir.nilai3. (Ingat aturan
penulisan nama lengkap, akan tetapi karena kelas ini tidak memiliki anggota statik, dan hanya
objek yang diciptakan dari kelas ini memiliki variabel atau metode ini, maka nama lengkapnya
diturunkan dari nama objek yang memilikinya).

Misalnya, program berikut :

System.out.println("Hai, " + amir.nama + " . Nilai Anda adalah : ");


System.out.println(amir.nilai1);
System.out.println(amir.nilai2);
System.out.println(amir.nilai3);

Program di atas akan mencetak nama dan nilai-nilai yang disimpan oleh objek amir.
Begitu juga kita bisa menghitung rata-rata pada suatu objek dengan menggunakan
amir.hitungRataRata(). Sehingga untuk menghitung rata-rata murid tersebut, bisa kita
perintahkan dengan:

System.out.println("Nilai rata-rata Anda adalah : " + amir.hitungRataRata());

Lebih umum lagi, kita bisa menggunakan amir.nama seperti layaknya variabel bertipe
String, artinya kita bisa menghitung jumlah karakter dengan menggunakan
amir.nama.length().

Kita juga bisa membuat variabel seperti amir untuk tidak menunjuk atau memiliki
referensi ke obek mana pun. Dalam hal ini kita sebut bahwa objek amir berisi referensi kosong
(null reference). Referensi kosong ini ditulis dalam Java dengan ekspresi "null". Dan kita bisa
menyimpan nilai "null" pada variabel amir dengan perintah :

amir = null;

Dan kita juga bisa uji apakah amir berisi referensi kosong dengan perintah
if (amir == null) . . .

Jika suatu variabel berisi referensi kosong, maka tentu saja, kita tidak bisa mengambil
variabel instansi dan menjalankan metode instansi, karena tidak ada objek yang dirujuk pada
variabel tersebut. Misalnya jika variabel amir berisi null, maka kita tidak bisa mengambil
variabel amir.nilai1.

Jika program kita mencoba mengakses referensi kosong secara ilegal, maka di tengah-tengah
jalannya program, program akan menampilkan pesan kesalahan "null pointer exception".

Mari kita lihat beberapa pernyataan yang bisa digunakan dengan objek :

Murid mrd1, mrd2, mrd3, mrd4; // mendeklarasikan 4 variabel yang bertipe


Murid
mrd1 = new Murid(); // membuat objek baru dari kelas Murid,
kemudian menyimpan referensinya pada variabel mrd1
mrd2 = new Murid(); // membuat objek baru dari kelas Murid,
kemudian menyimpan referensinya pada variabel mrd2
mrd3 = mrd1; // menkopi „referensi" yang disimpan pada
mrd1 ke mrd3
mrd4 = null; // menyimpan referensi kosong ke mrd4
 
mrd1.nama = "Ahmad Surahmat"; // mengisi nilai variabel instansi
mrd2.nama = "Hamid Samsudin";

Setelah komputer menjalankan program tersebut, maka kira-kira memori komputer akan tampak
seperti gambar berikut :
Gambar tersebut menunjukkan variabel dalam kotak-kotak kecil dengan nama variabelnya.
Objek ditunjukkan dalam kotak dengan pojok bulat. Ketika suatu variabel berisi referensi ke
suatu objek, maka nilainya adalah seperti panah yang menunjuk pada objek tersebut.

Variabel mrd4 bernilai null, sehingga tidak menunjuk ke mana-mana. Panah dari mrd1 dan
mrd3 menjunjuk pada objek ang sama. Ini merupakan Hal Yang Sangat Penting :

Jika isi variabel suatu objek diberikan kepada variabel yang lain, maka yang dikopi hanya
referensinya saja. Isi objek tidak pernah dikopi.

Ketika pernyataan "mrd3 = mrd1;" dieksekusi, tidak ada objek baru yang dibuat. Akan tetapi
mrd3 akan merujuk pada alamat yang sama seperti mrd1. Konsekuensinya mungkin sedikit
mengejutkan. Misalnya variabel mrd1.nama dan mrd3.nama menunjuk pada variabel yang persis
sama, maka apabila mrd1.nama disi dengan "Juju Juminten", maka mrd3.nama juga berisi "Juju
Juminten".

Sekali lagi, variabel tidak berisi objek, akan tetapi berisi referensi ke suatu objek.

Kita bisa menguji beberapa objek dengan operator == dan != untuk menguji kesamaan dan
ketidaksamaan. Akan tetapi yang dicek lagi-lagi bukan isi objek, melainkan alamat memori
dimana objek tersebut dijadikan referensi. Jika alamat referensi di memori sama, artinya kedua
objek tersebut merujuk pada alamat memori yang sama. Ini berarti perubahan yang dilakukan
pada variabel yang satu akan ikut mempengaruhi variabel yang lain.

Untuk menguji isinya, maka isinya harus dibandingkan satu per satu, yaitu misalnya dengan
"mrd3.nilai1 == mrd1.nilai1 && mrd3.nilai2 == mrd1.nilai2 && mrd3.nilai3 ==
mrd1.nilai3 && mrd3.nama.equals(mrd1.nama)"

Seperti telah disebutkan sebelumnya bahwa String juga merupakan objek. Sehingga
membandingkan String yang satu dengan String yang lain dengan menggunakan tanda == adalah
membandingkan apakah alamat memori yang ditunjuk oleh String yang satu sama dengan alamat
memori yang ditunjuk oleh String yang lain. Ingat == pada objek bukan membandingkan isi
objek, tetapi membandingkan alamat memori yang ditunjuk oleh variabel tersebut. Untuk
membandingkan isi String, kita dapat menggunakan String.equals() di mana parameternya
adalah objek String yang akan dibandingkan. Metode ini akan membandingkan karakter per
karakter dari kedua String.

Misalnya, variabel salam berisi String "Selamat". Untuk menguji apakah variabel salam berisi
"Selamat", bisa kita gunakan perintah

salam.equals("Selamat")

Konsekuensi lainnya adalah apabila suatu variabel merujuk pada objek yang dideklarasikan
sebagai final. Ini berarti nilai variabel itu tidak bisa berubah setelah diinisialisasi, sedangkan isi
variabel itu adalah rujukan ke alamat memori tempat objek berada. Dengan demikian variabel
tersebut akan selalu menunjuk pada alamat memori yang sama. Akan tetapi hal ini tidak berlaku
untuk objek itu sendiri. Apabila ada variabel lain yang tidak "final" tetapi menunjuk pada
alamat memori yang sama, kemudian variabel ini mengubah isi objek tersebut, maka isi objek
tersebut bisa berubah.

Kita boleh saja untuk menulis perintah sebagai berikut.

final Murid mrd = new Murid();


murid.nama = "Ahmad Basir";

Perhatikan pada kode di atas bahwa isi objek bisa diubah. Akan tetapi jika kita mencoba menulis
seperti ini

Murid mrd99 = new Murid();


mrd = mrd99; // ILEGAL, karena mrd adalah variabel final
Packages, Import dan Interfaces

1. Packages
Packages dalam JAVA berarti pengelompokan beberapa class dan interface
dalam satu unit. Fitur ini menyediakan mekanisme untuk mengatur class dan
interface dalam jumlah banyak dan menghindari konflik pada penamaan.

Mengimport Packages

Supaya dapat meggunakan class yang berada diluar package yang sedang
dikerjakan, Anda harus mengimport package dimana class tersebut berada.
Pada dasarnya, seluruh program JAVA mengimport package java.lang.*,
sehingga Anda dapat menggunakan class seperti String dan Integer dalam
program meskipun belum mengimport package sama sekali.
Penulisan import package dapat dilakukan seperti dibawah ini :
import <namaPaket>;
Sebagai contoh, bila Anda ingin menggunakan class Color dalam package
awt, Anda harus menuliskan import package sebagai berikut :
import java.awt.Color;
import java.awt.*;
Baris pertama menyatakan untuk mengimport class Color secara spesifik
pada package, sedangkan baris kedua menyatakan mengimport seluruh class
yang terkandung dalam package java.awt.
Cara lain dalam mengimport package adalah dengan menuliskan referensi
package secara eksplisit. Hal ini dilakukan dengan menggunakan nama
package untuk mendeklarasikan object sebuah class :
java.awt.Color color;

2. Import
Pada sebuah file .java, dibutuhkan referensi file-file mana saja yang menjadi
referensi dari class-class, method-method, ataupun segala sesuatu yang
digunakan dalam sebuah program java yang ditulis dalam sebuah file .java
tersebut. aturan penulisan pada umumnya ditulis di bawah penulisan
package, contohnya adalah sebagai berikut :
import java.io.RandomAccessFile;
import java.net.*;
3. Interface
Mendeklarasikan sebuah interface pada dasarnya mendeklarasikan sebuah
class tetapi sebagai penggantinya menggunakan kata kunci class, kata kunci
interface digunakan. Berikut syntaxnya.
<interfaceDeclaration> ::=
<modifier> interface <name> {
<attributeDeclaration>*
[<modifier> <returnType> <name>(<parameter>*);]*
}
Anggotanya adalah public ketika interface dideklarasikan public.

Petunjuk Penulisan Program:


Secara mutlak atribut adalah static dan final dan harus diinisialisasi dengan
nilai konstanta. Seperti mendeklarasikan class teratas, acces modifier yang
valid hanyalah public dan package(yakni jika tidak ada acces modifier
mengawali kata kunci class).
Class mengimplementasikan sebuah interface yang telah ada dengan
menggunakan kata kunci
implements. Class ini dibuat untuk mengimplementasikan semua method
interface. Sebuah class boleh mengimplementasikan lebih dari satu interface.

Contoh berikut menunjukkan bagaimana mendeklarasikan dan


menggunakan sebuah interface.
interface MyInterface {
void iMethod();
}
class MyClass1 implements MyInterface {
public void iMethod() {
System.out.println("Interface method.");
}
void myMethod() {
System.out.println("Another method.");
}
}
class MyClass2 implements MyInterface {
public void iMethod() {
System.out.println("Another implementation.");
}
}
class InterfaceDemo {
public static void main(String args[]) {
MyClass1 mc1 = new MyClass1();
MyClass2 mc2 = new MyClass2();
mc1.iMethod();
mc1.myMethod();
mc2.iMethod();
}
}
Output Program:
C:\Documents and Settings\Administrator\My Documents>javac
InterfaceDemo.java
C:\Documents and Settings\Administrator\My Documents>java
InterfaceDemo
Interface method.
Another method.
Another implementation.
OVERLOADING DAN OVERRIDING

OVERLOADING

• Overloading adalah suatu keadaan dimana beberapa method memiliki nama yang
sama tetapi fungsionalitasnya berbeda
• Contoh :
– titik(x,y);
– titik(x,y,z);
• Ciri Overloading :
– Nama method harus sama
– Daftar parameter harus berbeda
– Return type boleh sama, boleh berbeda

OVERRIDING

• Overriding menyatakan suatu keadaan dimana method pada subclass menolak


method pada parent class-nya.
• Ciri dari overriding :
– Nama method harus sama
– Daftar parameter harus sama
– Return type harus sama

CONTOH:

class Parent {
public void Info() {
System.out.println(“ini class parent”);
}
class Child extends Parent {
public void Info() {
System.out.println(“ini class child”);
}

Melakukan Overloading pada Method

import java.awt.Point;
public class Segiempat {
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
public void buatSegiempat(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public void buatSegiempat(Point topLeft, Point bottomRight) {
x1 = topLeft.x;
y1 = topLeft.y;
x2 = bottomRight.x;
y2 = bottomRight.y;
}
public void buatSegiempat(Point topLeft, int w, int h) {
x1 = topLeft.x;
y1 = topLeft.y;
x2 = (x1 + w);
y2 = (y1

void cetakSegiempat(){
System.out.print("Segiempat: <" + x1 + ", " + y1);
System.out.println(", " + x2 + ", " + y2 + ">");
}
public static void main(String[] arguments) {
Segiempat rect = new Segiempat();
System.out.println("Buat segiempat dengan koordinat (25,25)
dan (50,50)");
rect.buatSegiempat(25, 25, 50, 50);
rect.cetakSegiempat();
System.out.println();
System.out.println("Buat segiempat dengan point (10,10) dan
point (20,20):");
rect.buatSegiempat(new Point(10,10), new Point(20,20));
rect.cetakSegiempat();
System.out.println();
System.out.print("Buat segiempat dengan 1 point (10,10),
koodinat (50,50)");
rect.buatSegiempat(new Point(10,10), 50, 50);
rect.cetakSegiempat();
}}
KESIMPULAN

Java merupakan bahasa pemrograman yang berorientasi objek. Dapat membuat


seluruh bentuk aplikasi dan dapat dijalankan pada berbagai platform sistem operasi.

Pernyataan if ada tiga bentuk yaitu pertama if sederhana yaitu sebarang ekspresi yang
menghasilkan nilai benar saja, if-else yaitu pernyataan yang dijalankan sewaktu kondisi bernilai
benar atau bernilai salah ketiga pernyataan if bersarang yaitu suatu pernyataan if bisa berada
dalam pernyataan if. Sedangkan switch merupakan suatu perintah yang memungkinkan untuk
melakukan sebuah tindakan berbeda terhadap sebuah kemungkinan nilai

Program java berobjekkan class, metfod, construktor dan modifier dan tidak hanya
terstruktur pada satu objek saja bahkan bisa digabungkan dalam satu kode dan objek ini sangata
penting dalam pembuatan pemrograman java.

Program java menggunakan package dan import untuk mengelompokkan file class,
sehingga memudahkan user dalam menggunakannya.

Overriding dan overloading digunakan untuk mendefenisikan kembali method class


induk secara total dan berfungsi untuk menambahkan behavior tertentu pada method class induk
dan ini sangat penting dalam pemrograman java.

Anda mungkin juga menyukai