Anda di halaman 1dari 22

Tutorial Object Oriented Programming dengan Java

Penulis :
Firman Hidayat

Tutorial ini diambil dari http://firmanhid.wordpress.com


Yang terdiri dari empat bagian posting dan dijadikan satu bagian dalam bentuk pdf oleh

http://trikutakatik.com

Selamat Belajar

Bagian 1
Pendahuluan. Membuat Project Dalam Netbeans
Pada tutorial ini digunakan Netbeans 7.3 Beta2 dan sistem operasi windows XP.

Buat sebuah folder baru di C:\ dengan nama TUTORIAL. Kita akan menyimpan project yang akan dibuat
dalam folder ini.
Jalankan Netbeans. Kemudian tambahkan project baru. Pilih File > New Project.
Setelah muncul window New Project, pilih Categories: Java dan Projects: Java Application. Kemudian
tekan tombol Next

Isikan Project Name: Java_dasar dan Project Location: C:\TUTORIAL seperti pada gambar di bawah.
Kemudian tekan tombol Finish.

Pada file Java_dasar.java tambahkan kode berikut di dalam blok method main.

Sehingga menjadi seperti pada gambar berikut:

Untuk menjalankan project ini pilih Run > Run Project. Atau tekan F6. Output program dapat dilihat pada
bagian window output di Netbeans. Hasilnya seperti ini:

Dengan adanya output berupa tulisan Hallo, selamat belajar Java artinya program pertama kita ini
berhasil dijalankan.

Di dalam Netbeans semua pekerjaan kita harus dimuat dalam sebuah project. Proses penciptaan project ini
dimulai pada langkah ketiga sampai keempat di atas. Yaitu dimulai sejak memilih File>New Project hingga
menekan tombol Finish.
Setelah menekan tombol Finish pada langkah keempat di atas maka sebuah project baru telah diciptakan.
Selanjutnya, bila dikehendaki, kita bisa menambahkan file-file source code java ke dalam project ini. Tapi pada
tutorial bagian 1 ini kita tidak menambahkan file source lainnya kecuali file yang secara otomatis dibuatkan oleh
Netbeans.
Dalam tutorial ini, project yang baru dibuat ini hanya memiliki satu buah file. Yaitu file yang bernama
Java_dasar.java. Bila kita perhatikan di dalam file ini terdapat satu buah baris seperti berikut:

Ini dikenal sebagai method main. Di dalam sebuah project harus ada minimal satu buah file source code yang
memuat method main seperti ini. Biasanya Netbeans sudah membuatkan method main ini setiap kali pengguna
menciptakan project baru.
Untuk lengkapnya, struktur sebuah method main adalah sebagai berikut:

Sebuah file java hanya bisa dijalankan bila dia memiliki method main. Namun di dunia nyata, seorang pemrogram
akan banyak membuat file java yang tidak mengandung method main seperti ini. Untuk apa gunanya file java yang
tidak mengandung method main ini? Nanti dengan sendirinya kita akan menemui jawabannya. Ke depan kita akan
membuat file java yang tidak memiliki method main seperti ini.
Bila sebuah program java dijalankan, pertama kali yang dicari adalah method main ini. Setelah menemukan method
main, maka akan dijalankan statement-stetement yang ada di dalam blok method main ini hingga baris terakhir di
dalam blok. Setelah baris terakhir selesai dieksekusi maka program akan berhenti.
Awal blok ditandai dengan kurung kurawal buka ({) dan diakhiri dengan kurung kurawal tutup (}).
Dalam contoh di tutorial ini, di dalam blok method main hanya ada satu buah statement yaitu

Baris terakhir ini berfungsi untuk menampilkan (mencetak) tulisan Hallo, selamat belajar Java di window output.
Jadi ketika sudah ditemui method main, maka segera dieksekusi pernyataan yang ada di dalam blok main tersebut
yang dalam hal ini hanya satu baris System.out.println(Hal..) yang menghasilkan tulisan Hallo, selamat belajar
Java di window output. Setelah itu program berhenti.

Sebuah statement harus diakhiri dengan tanda titik koma (;). Begitulah aturan di dalam Java. Seperti dalam contoh
ini statement System.out.println(Hallo, selamat belajar Java) diakhiri dengan tanda titik koma (coba perhatikan
gambar di atas).
Selain statement, di Java dikenal juga yang namanya komentar. Berbeda dengan statement, komentar tidak akan
pernah dieksekusi oleh program. Biasanya komentar digunakan oleh pemrogram untuk memberi keterangan pada
suatu bagian source code sebagai panduan bagi orang yang membaca source code buatan dia. Komentar ditandai
dengan simbol // (double slash/ dua buah garis miring). Double slash ini digunakan untuk komentar yang hanya
terdiri atas satu baris. Namun bila komentar terdiri atas lebih dari satu baris maka digunakan tanda /* sebagai awalan
dan tanda */ sebagai akhiran. Perhatikan contoh berikut:

Komentar yang hanya satu baris

Contoh lainnya:

Komentar yang terdiri atas banyak baris

Perhatikan, penulisan komentar yang terdiri atas banyak baris lebih ringkas bila menggunakan tanda /* dan
*/ ketimbang menggunakan tanda // seperti pada contoh sebelumnya.
Coba perhatikan pada gambar source code dalam tutorial ini. Di sana ada beberapa komentar yang menggunakan
kedua tanda baca tadi: // dan /**/. Komentar dalam Netbeans tulisannya berwarna abu-abu, silakan perhatikan
sendiri!

Bagian 2
Melanjutkan Tutorial sebelumnya disini kita akan belajar membuat class dengan menggunakan project yang telah
kita buat sebelumnya

Klik kanan pada package java_dasar. Kemudian pilih New > Java Class. Di sini kita akan
menambahkan sebuah kelas baru pada project kita.

Setelah muncul window New Java Class, isikan field Class Name dengan KelasPenghitungAngka. Di
sini kita memberi nama kelas yang baru ini dengan nama KelasPenghitungAngka. Kemudian klik tombol
Finish

Pada kelas yang baru dibuat ini, tambahkan beberapa baris koding dan jangan lupa di-save. Setelah
penambahan, seluruh koding pada kelas KelasPenghitungAngka menjadi seperti berikut:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package java_dasar;
/**
*
* @author Firman Hidayat
*/
public class KelasPenghitungAngka {
public int contohBilanganPrima = 67;
public int contohBilanganGenap = 888;
// Method operasi penambahan bilangan
public int operasiTambah(int x, int y) {
int bilHasil;
bilHasil = x + y;
return bilHasil;
}
// Method operasi pengurangan bilangan
public int operasiKurang(int x, int y) {
int bilHasil;
bilHasil = x - y;
return bilHasil;
}
// Method yang tidak mengembalikan nilai
public void methodTidakMengembalikanNilai(int x, int y) {
int bilHasil;
bilHasil = x + y;
}
}
Screenshotnya seperti ini:

Kemudian pada kelas Java_dasar tambahkan beberapa baris koding pada method main (lihat baris koding
yang diblok pada screenshot). Koding kelas Java_dasar ini menjadi seperti berikut:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package java_dasar;
/**
*
* @author Firman Hidayat
*/
public class Java_dasar {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println(Hallo, selamat belajar Java);
KelasPenghitungAngka objekPenghitAngka = new KelasPenghitungAngka();
int bilGenap = objekPenghitAngka.contohBilanganGenap;
int bilPrima = objekPenghitAngka.contohBilanganPrima;
int bilTambah = objekPenghitAngka.operasiTambah(5, 3);
int bilKurang = objekPenghitAngka.operasiKurang(5, 3);
//

Tampilkan semua hasil operasi di atas


System.out.println(Bilangan genap = + bilGenap);
System.out.println(Bilangan prima = + bilPrima);
System.out.println(Hasil tambah = + bilTambah);
System.out.println(Hasil kurang = + bilKurang);
}

Jalankan project ini pilih Run > Run Project. Atau tekan F6. Output program dapat dilihat pada bagian
window output di Netbeans. Hasilnya seperti ini:

Yang telah kita kerjakan di atas adalah sebuah contoh bagaimana sebuah kelas berkomunikasi dengan kelas lainnya.
Ini adalah hal mendasar yang sangat penting dipahami dalam konsep Object Oriented Programming (OOP). Banyak
orang yang gagal dan menyerah mempelajari OOP karena tidak memahami teknik komunikasi antarobjek ini. (Ini
hasil pengamatan pribadi saya pada lingkungan kuliah saya, lho.)
Dalam OOP, sebuah kelas bisa jadi memiliki sumber daya (resources) yang dibutuhkan oleh kelas yang lain. Resources
ini dapat berupa atribut ataupun method.
Atribut pada bahasa pemrograman lain biasa disebut sebagai variabel. KelasPenghitungAngka memiliki dua buah
atribut yaitu contohBilanganPrima dan contohBilanganGenap. Kedua atribut ini memiliki jenis data integer.
Pada bahasa pemrograman lain method biasa disebut function atau procedure, tapi kalau di java disebut method.
KelasPenghitungAngka memiliki tiga buah method. Ketiga method ini adalah: operasiTambah, operasiKurang,
dan methodTidakMengembalikanNilai. Method operasiTambah berfungsi untuk menjumlahkan dua buah bilangan
integer. Method operasiKurang berfungsi untuk mengurangkan dua buah bilangan integer.
Lalu, di mana komunikasinya? Begini, alkisah si kelas Java_dasar ingin menambahkan dan mengurangkan dua buah
bilangan yaitu bilangan 5 dan 3. Namun masalahnya dia tidak memiliki method untuk penambahan dan pengurangan
tersebut. Maka dipanggillah (summon) kelas KelasPenghitungAngka oleh kelas Java_dasar untuk melakukan
penambahan dan pengurangan tersebut. Dalam Java, begini langkahnya:

Tentukan terlebih dahulu mana kelas pemanggil dan mana kelas yang dipanggil. Nggak ngerti? Gini, di sini
kelas Java_dasar akan memanggil method di KelasPenghitungAngka. Artinya di sini Java_dasar adalah kelas
pemanggil dan KelasPenghitungAngka adalah kelas yang dipanggil. Gitu. Semua langkah di bawah dilakukan
(ditulis) pada kelas pemanggil, dalam hal ini yaitu Java_dasar.

Instansiasi kelas KelasPenghitungAngka dalam kelas Java_dasar. Instansiasi (pembuatan instance) adalah
istilah pembuatan objek dari sebuah kelas di Java. Dalam contoh ini yang diinstansiasi adalah
KelasPenghitungAngka. Ini ditunjukkan pada koding berikut di Java_dasar:

Artinya:
Nama objek = objekPenghitAngka
Nama Kelas = KelasPenghitungAngka
Secara umum, (biar mudah untuk pemula) sintak pembuatan objek (instansiasi) adalah sebagai berikut:

Panggil resource (method ataupun atribut) yang dibutuhkan melalui objek yang sudah di buat di atas. Ini
ditunjukkan pada potongan koding berikut di kelas Java_dasar:

Coba perhatikan semua baris kode di atas. Semua memiliki pola yang sama: namaObjek(titik)namaResource.
Memang begitulah cara memanggil resource pada objek. Secara umum sintak pemanggilan resource pada objek
adalah seperti ini:

Koding lengkapnya pada Java_dasar, hasil pemanggilan resources dari KelasPenghitungAngka ditampung dalam
atribut-atribut (variabel) lokal milik Java_dasar. Ini ditunjukkan pada koding lengkapnya seperti ini:

Selanjutnya setiap atribut lokal tadi (bilGenap, bilPrima, bilTambah dan bilKurang) ditampilkan ke layar output
menggunakan koding:

Sederhananya ada dua langkah besar untuk komunikasi: Instansiasi > Panggil resourcenya (method/atribut).

Demikian langkah cara komunikasi antarkelas di Java. Sebetulnya lebih tepatnya disebut komunikasi antarobjek.
Karena yang kita gunakan adalah objek dari sebuah kelas.
Secara tidak langsung di sini kita sudah menerapkan konsep enkapsulasi dan abstraksi pada OOP. Menurut Wikipedia
:

Bagian 3
Masih menggunakan project sebelumnya. Sudahkah Anda lancar melakukan teknik komunikasi antarobjek? Yang itu
lho, instansiasi > panggil resource. Kalau belum coba baca lagi tutorial 2. Karena itu sangat penting.

Klik kanan pada package java_dasar lalu pilih New > Java Class. Di sini kita membuat kelas baru.

Pada window New Java Class isi field Class Name dengan AnakKelasPenghitung. Di sini kita memberi
nama kelas baru ini AnakKelasPenghitung.

Ini adalah screenshot kelas AnakKelasPenghitung yang baru saja dibuat.

Ubah koding kelas AnakKelasPenghitung. Tambahkan sebuah method dengan nama operasiKali. Lalu
tambahkan pula kalimat extends KelasPenghitungAngka pada bagian atasnya. Hingga akhirnya koding
kelas ini menjadi seperti ini:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package java_dasar;
/**
*
* @author Firman Hidayat
*/
public class AnakKelasPenghitung extends KelasPenghitungAngka {
public int operasiKali(int x, int y) {
return x * y;
}
}

Ini screenshotnya:

Kemudian kita pindah ke kelas Java_dasar. Tambahkan beberapa baris koding ke method main. Hasil akhir
koding kelas ini menjadi seperti ini:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package java_dasar;
/**
*
* @author Firman Hidayat
*/
public class Java_dasar {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Hallo, selamat belajar Java");
KelasPenghitungAngka objekPenghitAngka = new KelasPenghitungAngka();
int bilGenap = objekPenghitAngka.contohBilanganGenap;
int bilPrima = objekPenghitAngka.contohBilanganPrima;
int bilTambah = objekPenghitAngka.operasiTambah(5, 3);
int bilKurang = objekPenghitAngka.operasiKurang(5, 3);

//

Tampilkan semua hasil operasi di atas


System.out.println("Bilangan genap = " + bilGenap);
System.out.println("Bilangan prima = " + bilPrima);
System.out.println("Hasil tambah = " + bilTambah);
System.out.println("Hasil kurang = " + bilKurang);

//
//

Tutorial AnakKelasPenghitung
Instansiasi kelas AnakKelasPenghitung
AnakKelasPenghitung anakKelas = new AnakKelasPenghitung();
//
Panggil resourcenya
int bilKali = anakKelas.operasiKali(5, 3);
int bilTambah_2 = anakKelas.operasiTambah(5, 3);
int bilKurang_2 = anakKelas.operasiKurang(5, 3);
//

Tampilkan hasil operasi anakKelas ke layar

System.out.println("============ Hasil operasi AnakKelas =============");;


System.out.println("Hasil kali = " + bilKali);
System.out.println("Hasil tambah = " + bilTambah_2);
System.out.println("Hasil kurang = " + bilKurang_2);
}
}
Ini screenshotnya:

Jalankan project ini pilih Run > Run Project. Atau tekan F6. Output program dapat dilihat pada bagian
window output di Netbeans. Hasilnya seperti ini:

Apa yang kita kerjakan di atas adalah penerapan konsep pewarisan (inheritance) dalam OOP menggunakan Java.
Cara melakukan inheritance ini adalah dengan menambahkan kata extends pada kelas anak.
Coba perhatikan koding kelas AnakKelasPenghitung. Pada kelas ini terdapat kode:

Ini artinya kelas AnakKelasPenghitung mewarisi kelas KelasPenghitungAngka. Secara umum sintak extends ini adalah
seperti ini:

Apa sih akibat dari pewarisan ini? Akibatnya adalah semua resource (atribut dan method) yang dimiliki oleh kelas
induk akan diwariskan kepada kelas anak. Maksudnya adalah kelas anak akan memiliki semua resource (atribut dan
method) yang dimiliki kelas induk walaupun method dan atribut itu tidak ditulis pada kelas anak.
Kita tinjau lebih lanjut akibat pewarisan resource ini. Coba perhatikan kelas KelasPenghitungAngka (coba lihat
tutorial 2). Di kelas ini terdapat tiga method yaitu: operasiTambah, operasiKurang dan
methodTidakMengembalikanNilai.
Kemudian
kita
perhatikan
kelas
AnakKelasPenghitung.
Kelas
AnakKelasPenghitung ini hanya memiliki sebuah method yang bernama operasiKali. AnakKelasPenghitung ini
extends terhadap KelasPenghitungAngka (lihat baris 12 pada screenshot).
Sekarang, coba perhatikan kelas Java_dasar. Pada method main di kelas ini instansiasi AnakKelasPenghitung dan
dilanjutkan pemanggilan tiga buah method, yaitu: operasiKali, operasiTambah dan operasiKurang.

Lha, itu dari mana method operasiTambah dan operasiKurang? Bukankah AnakKelasPenghitung cuman punya
method operasiKali? Memang betul AnakKelasPenghitung cuman punya method operasiKali. Nah, method
operasiTambah dan operasiKurang diwarisi dari kelas induknya, yaitu KelasPenghitungAngka. Gitu.
Inheritance ini berlaku untuk mewariskan resource, dengan kata lain yang dapat diwariskan adalah method dan
atribut. Cara pemanggilan method/atribut ini sama seperti yang dijelaskan pada tutorial 2. Instansiasi > panggil
method/atribut. Cuman yang diinstansiasi di sini adalah kelas anak saja.
Kelas anak masih bisa diwariskan lagi lho. Misalnya kita membuat kelas CucuKelasPenghitung yang extends
terhadap AnakKelasPenghitung. Ini sintak meng-extends-nya:

Nah, si kelas CucuKelasPenghitung ini bakalan mewarisi 4 method yang dimiliki AnakKelasPenghitung, yaitu:
operasiKali (method miliknya sendiri) dan method hasil pewarisan sebelumnya: operasiTambah, operasiKurang,
methodTidakMengembalikanNilai. Ditambah pula CucuKelasPenghitung ini sekarang memiliki atribut
contohBilanganPrima dan contohBilanganGenap dari hasil pewarisan ini.
Jadi dengan konsep inheritance ini kita tidak perlu menulis ulang method yang sama pada beberapa kelas. Karena
method yang sudah ditulis pada sebuah kelas dapat diwariskan pada kelas lainnya.

Bagian 4
Masih menggunakan project sebelumnya. Kalau belum mahir instansiasi > panggil resource coba baca lagi tutorial
2. Ini penting.

Klik kanan pada package java_dasar lalu pilih New > Java Class. Di sini kita membuat kelas baru.

Pada window New Java Class isi field Class Name dengan Tutor4. Di sini kita memberi nama kelas baru
ini Tutor4.

Ubah koding kelas Tutor4. Jadikan kelas ini extends terhadap KelasPenghitungAngka. Kemudian tambahkan
sebuah kelas dengan nama operasiTambah pada kelas Tutor4 ini. Hingga akhirnya koding kelas ini menjadi
seperti ini:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package java_dasar;
/**
*
* @author Firman Hidayat
*/
public class Tutor4 extends KelasPenghitungAngka{
// Override method operasiTambah dari kelas induk
public int operasiTambah(int x, int y) {
return 55555555;
}
}
Ini screenshotnya:

Kemudian kita pindah ke kelas Java_dasar. Tambahkan beberapa baris koding ke method main(). Hasil
akhir koding kelas ini menjadi seperti ini:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package java_dasar;
/**
*
* @author Firman Hidayat
*/
public class Java_dasar {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Hallo, selamat belajar Java");
KelasPenghitungAngka objekPenghitAngka = new KelasPenghitungAngka();
int bilGenap = objekPenghitAngka.contohBilanganGenap;
int bilPrima = objekPenghitAngka.contohBilanganPrima;
int bilTambah = objekPenghitAngka.operasiTambah(5, 3);
int bilKurang = objekPenghitAngka.operasiKurang(5, 3);
//

Tampilkan semua hasil operasi di atas


System.out.println("Bilangan genap = " + bilGenap);
System.out.println("Bilangan prima = " + bilPrima);
System.out.println("Hasil tambah = " + bilTambah);
System.out.println("Hasil kurang = " + bilKurang);

//
//

Tutorial AnakKelasPenghitung
Instansiasi kelas AnakKelasPenghitung
AnakKelasPenghitung anakKelas = new AnakKelasPenghitung();

//

Panggil resourcenya
int bilKali = anakKelas.operasiKali(5, 3);
int bilTambah_2 = anakKelas.operasiTambah(5, 3);
int bilKurang_2 = anakKelas.operasiKurang(5, 3);

//

Tampilkan hasil operasi anakKelas ke layar


System.out.println("============ Hasil operasi AnakKelas =============");;
System.out.println("Hasil kali = " + bilKali);
System.out.println("Hasil tambah = " + bilTambah_2);
System.out.println("Hasil kurang = " + bilKurang_2);

//
//

Tutorial4
Instansiasi kelas Tutor4
Tutor4 tut = new Tutor4();
//
Panggil resourcenya
int hasilTambah_3 = tut.operasiTambah(5, 3);

int hasilKurang_3 = tut.operasiKurang(5, 3);


//

Tampilkan hasil operasi Tutor4 ke layar


System.out.println("============ Hasil operasi Tutor4 ================");
System.out.println("Hasil Tambah Tutor4 = " + hasilTambah_3);
System.out.println("Hasil Kurang Tutor4 = " + hasilKurang_3);
}

}
Ini screenshotnya:

Jalankan project ini pilih Run > Run Project. Atau tekan F6. Output program dapat dilihat pada bagian
window output di Netbeans. Hasilnya seperti ini:

Apa yang kita kerjakan di atas adalah menerapkan konsep polimorfisme (polymorphism) dalam OOP. Apa yang
berbeda dengan konsep inheritance seperti pada tutorial sebelumnya? Di sini terdapat override
(penimpaan/pengambilalihan) method operasiTambah yang diwariskan dari kelas induk (KelasPenghitungAngka).
Coba perhatikan pada kelas Tutor4. Di kelas ini terdapat sebuah method yang sama persis dengan method di kelas
induknya (KelasPenghitungAngka), yaitu method operasiTambah. Namun, berbeda dengan di
KelasPenghitungAngka, method operasiTambah ini akan selalu mengembalikan nilai (return value) 55555555
berapapun nilai parameter yang dikirimkan ke method ini. Override (penimpaan/pengambilalihan) method ini
mengakibatkan method dari KelasPenghitungAngka tidak lagi berfungsi. Yang berfungsi kini hanya method
operasiTambah pada kelas Tutor4 ini. (Fungsi method operasiTambah KelasPenghitungAngka diambil alih oleh
operasiTambah pada kelas Tutor4)
Karena itulah setiap kali method operasiTambah dipanggil dari kelas Tutor4 hasilnya selalu 55555555. Hal ini
berbeda dengan method operasiTambah yang dipanggil dari kelas AnakKelasPenghitung yang selalu mengembalikan
nilai hasil penjumlahan x dan y (nilai parameter yang dikirimkan).
Inilah contoh polimorfisme (kebanyakrupaan). Dua kelas yang berbeda (AnakKelasPenghitung dan Tutor4) walaupun
mewarisi method yang sama dari kelas induk yang sama (KelasPenghitungAngka), namun kelakuan kedua kelas anak
tersebut berbeda bila dipanggil method yang sama. Bila dipanggil method operasiTambah, AnakKelasPenghitung
akan mengembalikan nilai hasil penjumlahan, namun Tutor4 akan selalu mengembalikan nilai 55555555.
Dari Tutorial ke-1 hingga Tutorial ke-4 ini sebenarnya kita menerapkan empat konsep dalam OOP: abstraksi,
enkapsulasi, inheritance dan polymorphism. Konsep ini yang membedakan dengan paradigma OOP dengan
paradigma pemrograman terstruktur. Bila kita nyemplung ke dunia OOP (misalnya jadi programmer Java atau
sekedar bikin program skripsi pakai Java), kita bakal membutuhkan keempat konsep tadi.