tutorial object oriented programming dengan java netbeans.pdf

Upload: wisnu-antoro

Post on 29-Feb-2016

69 views

Category:

Documents


6 download

TRANSCRIPT

  • 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.