Laporan Java
Laporan Java
Disusun oleh :
JOSUA SIAGIAN
200601030175
MIK 34
PEMATANGSIANTAR
2010
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 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
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
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
program. Di balik kemudahan yang ditawarkan Java, luasnya fasilitas library Java sendiri
membuat seorang programer membutuhkan waktu yang tidak singkat untuk dapat menguasai
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
3. Mengeksekusi bytecode dengan perintah java. Parameter dari perintah ini adalah nama
Source Code
Berikut kode untuk HelloWorld.java:
publicclass HelloWorld
Dan ini sebuah contoh lain, yaitu applet sederhana untuk menampilkan teks di applet.
import java.awt.Graphics;
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
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
Perlu diperhatikan bahwa direktori aktif Anda saat ini adalah direktori tempat Anda
meletakkan file-file program tersebut. Anda tetap dapat mengkompile program Anda dari
Setelah perintah ini selesai, Anda akan melihat bahwa telah tercipta dua buah file
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
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
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
objek out dalam kelas System kemudian panggil metode println dari objek out dengan
parameter berupa string "Apa Kabar Dunia?". Sedang dalam Listing 2, pernyataan
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>
</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
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
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".
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.
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.
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.
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.
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
Perintah kosong sering merupakan sumber kesalahan dan salah satu fitur yang sulit untuk dicari
kesalahannya pada saat debugging. Misalnya perintah berikut
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.
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.
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 :
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).
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:
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 :
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.
Perhatikan pada kode di atas bahwa isi objek bisa diubah. Akan tetapi jika kita mencoba menulis
seperti ini
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.
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
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”);
}
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
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.