Selasa, 10 Agustus 2010

Java Untuk Pemula

Java Untuk Pemula

Posting sekarang kita tidak akan membahas tentang pemrograman web tapi pemrograman desktop menggunakan bahasa pemrograman Java. Sedikit bercerita, kemarin ada tugas Algoritma Pemrograman menggunakan C++, tapi berhubung installer compiler C++ nya terserang virus, terpaksa deh menggunakan Java. Toh output/hasil yang dikeluarkan (lewat console) gak beda jauh antara Java dengan C++. Dan ternyata membuat program di Java menggunakan console sangatlah gampang dan cepat!. Nah, Jika kamu masih awam tentang Java dan ingin belajar Java, akan kuberikan step-step nya untuk melengkapi komputermu dengan "peralatan" standard untuk belajar pemrograman Java.

Apa saja yang dibutuhkan untuk melakukan pemrograman Java di Windows? Pada dasarnya hanya ada satu saja yaitu JDK (Java Development Kits) yang bisa kamu unduh disini. JDK ini yang akan mengkompilasi source yang kamu buat menjadi file yang bisa dibaca oleh Java Runtime. Setelah selesai diunduh, lalu install di komputermu. Cara menginstallnya juga tidak ribet, tinggal klik Next, dan Finish :). Berikutnya kamu butuh text editor untuk menuliskan source Java yang kamu buat. Pakai Notepad bawaan dari Windows juga bisa tapi text editor favoritku adalah Notepad++ yang bisa kamu unduh disini. Setelah JDK diinstal dan kamu punya text editor, pastikan kamu bisa mengakses Command Prompt-nya Windows. Cara menampilkannya: Klik Tombol Start, lalu pilih menu Run atau tekan tombol bendera di keyboard + R, ketik cmd lalu tekan enter. Jika kamu belum tahu bentuk Command Prompt itu seperti apa, ini gambarnya:

command prompt

Setelah muncul jendela Command Prompt, coba ketikkan disitu perintah berikut: javac , jika muncul pesan "javac is not recognized as an internal or external"..dst, berarti kamu harus memasukkan Path JDK ke Environment Variables. Caranya:

Untuk Windows XP:
Buka Control Panel, jika mode viewnya menggunakan Category, ubah ke Classic dulu biar lebih mudah. Setelah itu, diantara deretan icon yang ada, buka bagian System.
Untuk Windows Vista dan 7:
Buka Control Panel, pilih System dan kemudian disebelah kiri ada menu Advanced System Setting, klik menu itu.

Langkah berikutnya sama untuk XP, Vista atau 7: Akan muncul sebuh jendela baru System Properties. Klik tab Advanced, lalu dibagian bawah ada tombol Environment Variables. Klik tombol itu lalu muncul jendela baru lagi. Lihat dibagian kelompok System Variables, lalu cari bagian Path, dobel klik teks tersebut atau klik lalu tekan tombol Edit dibagian bawahnya. Tambahkan path JDK dibagian Variable Value dengan cara: Teks yang sudah ada jangan dihapus, tapi bagian paling akhir dari teks yang sudah ada diberi tanda titik koma ";" dan diikuti path JDK-nya yang umumnya ada di C:\Program Files\Java\jdk1.6.0_06\bin. Jika bingung, ini contoh gambarnya:

edit nilai environment

Tentu saja pathnya akan berubah seandainya kamu menginstall JDK di lokasi atau drive lain atau kamu menggunakan versi JDK yang berbeda. Jadi pastikan bahwa kamu benar-benar tahu letak direktori bin JDK, gunakan Windows Explorer, copy Adrress bila perlu. Setelah itu klik OK beberapa kali lalu buka ulang Command Prompt (jendela yang lama ditutup terus buka lagi yang baru). Coba ketikkan perintah javac dan jika masih muncul pesan kesalahan yang sama dengan diatas, berarti kamu butuh merestart komputermu. Tapi jika semua langkah diatas udah diikuti dengan benar, kamu bakal melihat seperti ini saat mengetikkan perintah javac:

tampilan perintah javac

Pemrograman Java

Sekarang kita masuk ke pemrograman Java-nya. Kita akan membuat program haloDunia yang cuma menampilkan teks "Halo Dunia!" di console. Pergunakan teks editor kesayanganmu lalu ketik teks berikut ini:

public class haloDunia {

    public static void main(String[] args) {
        //tulis kodemu dalam blok ini
        System.out.print("Halo Dunia!");
        
    }
    
}

Setelah itu simpan file tersebut dengan nama haloDunia.java dan letakkan dimana saja terserah. Yang harus diperhatikan adalah nama filenya harus sama dengan nama class yang dideklarasikan public didalamnya. Pada contoh diatas karena class haloDunia dideklarasikan public maka nama file yang kita buat harus sama yaitu haloDunia lalu diberi extension java. Buka Command Prompt lagi seandainya sudah kamu tutup.

Perintah Pindah Direktori Aktif di Command Prompt

Bagian ini hanya untuk yang awam Command Prompt saja, yang udah paham lewati saja. Dalam Command Prompt, untuk berpindah direktori aktif menggunakan perintah cd, sedangkan untuk berpindah drive aktif (dari C ke D misalnya) maka tinggal ketikkan drivenya diikuti tanda titik dua ":"

pindah direktori

Baris pertama gambar diatas melakukan perintah pindah drive dari D ke E. Baris kedua masuk ke direktori Java yang ada di drive E. Baris ketiga naik satu direktori diatas direktori Java berarti di drive E. Ya.. kira-kira cukup segitulah perintah dasar untuk berpindah direktori aktif lewat Command Prompt.

Mengcompile file Java

Kembali ke file yang telah dibuat tadi, setelah Command Prompt terbuka dan direktori aktif di command prompt berada dimana file tersebut (saya meletakkan file java tadi di drive E:\Java), ketikkan perintah javac diikuti namafile tadi yaitu haloDunia.java. Gambarnya seperti ini:

perintah javac

Jika tidak muncul pesan kesalahan, maka file yang kita buat telah sukses dikompilasi. Sebuah file class dibuat disebelah file java, dan cara mengeksekusinya adalah dengan menggunakan perintah java diikuti nama class-nya. Jika tadi kita menggunakan nama class haloDunia maka yang kita ketikkan adalah "java haloDunia" dan tekan Enter. Lalu muncullah pesan Halo Dunia! yang kita buat menggunakan Java.

hasil program

Penjelasan Program

Kita kembali ke source Java yang telah kita buat diatas.

1   public class haloDunia {
2
3       public static void main(String[] args) {
4           //tulis kodemu dalam blok ini
5           System.out.print("Halo Dunia!");
6           
7       }
8       
9   }

Bagian yang selalu harus ada dan harus selalu diingat adalah deklarasi class (baris 1) dan deklarasi fungsi/method main (baris 3). Kode yang kita buat akan berada di dalam blok fungsi main tersebut. Untuk menampilkan teks di Console menggunakan Java digunakan perintah System.out.print (yang memang kelihatan lebih panjang dari perintah di C++). Karena Java merupakan bahasa pemrograman yang berbasis object maka kita "dipaksa" untuk menggunakan konsep class untuk memunculkan teks di Console. Untuk mengakses properti atau method yang dimiliki suatu object di Java digunakan tanda titik ".". Seperti contoh diatas, untuk mengakses method print digunakan perintah System.out.print().

Kita tidak akan dibahas secara lengkap tentang dasar-dasar dari pemrograman Java, tapi hanya sekilas saja. Jika kamu pernah mempelajari bahasa keluarga C, maka bentuk umumnya hampir sama. Untuk tipe data --hampir sama dengan yang lain-- Java memiliki beberapa tipe data primitif seperti byte, short, int, long, float, double, boolean, char serta tipe data bentukan seperti String dan Number ataupun Array. Untuk mendeklarasikan sebuah variabel adalah dengan cara: tipeData namaVariabel = nilai; sedangkan untuk mendeklarasikan method/fungsi adalah dengan cara: tipeData/Void namaFungsi();. Penamaan variabel di Java adalah case sensitif dan variabel juga dapat menampung sebuah acuan object dari perintah new.

Berikutnya akan kuberikan sebuah source Java singkat yang menggunakan algoritma sederhana untuk menjumlahkan inputan dari user dan menampilkan hasilnya. Disini aku anggap kamu sudah sedikit paham tentang dasar-dasar bahasa pemrograman (apapun bahasanya) karena meskipun judulnya untuk pemula tapi bukan untuk pemula yang benar-benar baru belajar bahasa pemrograman :). Maaf ya...

1   import java.io.Console;
2
3   public class gampang {
4
5       public static void main(String[] args) {
6           //membuat object console
7           Console console = System.console(); 
8           //deklarasi variabel input
9           int input1, input2;
10          //memasukkan nilai input1
11          console.printf("Masukkan input1: ");
12          input1 = Integer.parseInt(console.readLine()); 
13          //memasukkan nilai input2
14          console.printf("Masukkan input2: ");
15          input2 = Integer.parseInt(console.readLine()); //input2
16          //tampilkan hasil
17          console.printf("Hasil Penjumlahan: %d", input1+input2);
18      }
19
20  }

Pada baris pertama kita masukkan library yang mirip fungsi perintah include di C++. Karena kita membutuhkan class Console untuk menerima input dari user maka kita memasukkannya dengan perintah import java.io.Console;. Lanjut ke baris 7, kita membuat sebuah variabel baru dengan tipe data Console. Dibaris 12 dan 15 adalah inputan dari user menggunakan method readLine(). Method readLine() akan mereturn tipe data String, sedangkan yang kita butuhkan adalah tipe data integer. Oleh karena itu kita gunakan method parseInt di class Integer untuk mengubah tipe data String ke Integer. Baris ke 12 adalah menampilkan hasil menggunakan method printf yang fungsinya sama dengan fungsi printf di C++ yaitu untuk mencetak string terformat ke Console. Dan inilah programnya ketika dijalankan:

hasil program

Pengenalan Dasar Class dan Object di Java

Java termasuk OOP (Object Oriented Programming), jadi maka mau tidak mau kamu harus tau konsep dasar tentang Class dan Object di Java. Class adalah kerangka bentuk dari Object. Jadi sebelum dapat membuat object, kamu harus mendefinisikan class-nya terlebih dahulu. Sedangkan object dapat dianalogikan sebagai objek real disekitar kita seperti kambing, kerbau, dsb. Kambing memiliki bentuk dan perilaku. Bentuk yang pendek, berkaki empat, berekor, disebut sebagai properties/fields dan perilakunya yang mengembek, berlari, melompat disebut sebagai methods. Untuk membuat object dari class yang telah kita buat adalah dengan menggunakan perintah new diikuti nama classnya. Berikut ini adalah cara mendefinisikan class dan pembuatan object dalam Java.

public class buatObject {
    /** Mendefinisikan class kambing yang digunakan dalam method main */
    static class kambing {
        //properti nama dengan tipe data String
        public String nama = "Awe";
        
        //method void mengembek
        public void mengembek() { 
            System.out.printf("Embeekkkk !!");
        }
    }
    
    public static void main(String[] args) {
        /** Membuat object kambing dengan nama awe :D */
        kambing awe = new kambing();
        
        System.out.printf("\n\n%s: \"", awe.nama); //menggunakan property nama
        awe.mengembek(); //memanggil method mengembek
    }
}

Di dalam bahasa pemrograman Java, kita diperbolehkan membuat sebuah class di dalam class seperti pada contoh diatas. Dalam class kambing kita membuat properti nama dengan tipe data String serta sebuah method mengembek yang bertugas menampilkan teks Embeekkkk !! :) di Console. Keliatan kan beda antara method dan property? (method adalah suatu fungsi sedangkan properti adalah sebuah variabel). Properti serta Method diatas dibuat public agar bisa diakses dari luar class tersebut. Salah satu konsep dalam OOP adalah Encapsulation dimana kamu bisa menyembunyikan method dan properti tertentu agar tidak dapat diakses dari luar class yang bersangkutan. Tujuannya bukan pelit atau mempersulit :) tapi justru mempermudah kamu dan orang lain untuk tidak mengotak-otak bagian yang tidak seharusnya diotak-atik atau diubah.

Kamu bisa mendeklarasikan suatu method atau properti menjadi public, protected atau private. Jika menggunakan visibility private, maka suatu method atau properti hanya bisa diakses di dalam class tersebut saja. Sedangkan dengan protected maka method atau properti tidak bisa diakses dari luar class tapi masih bisa diakses oleh turunan dari class itu. Konsep warisan class akan dibahas setelah ini. Nah, program diatas jika dieksekusi akan menghasilkan output seperti berikut:

hasil program

Class Warisan (Inherits) dan Constructor

Penggunaan class akan sangat bermanfaat karena lebih modular, bisa terus dikembangkan dan dapat digunakan berulang kali (reuseable). Untuk mengembangkan class yang sudah ada, kita dapat memanfaatkan fasilitas class warisan (padahal tidak ada yang meninggal) menggunakan kata kunci extends. Semua method dan properti induknya yang menggunakan tanda protected dan public bisa digunakan atau didefinisikan ulang di class warisan. Misalkan sebelum membuat class kambing kita buat class hewan dulu dengan method dan properti yang akan diwariskan ke hewan lain seperti kucing, ayam, dsb. Selain itu, sebuah class dapat merupakan turunan lebih dari satu class. Misalkan class awe merupakan turunan dari class hewan dan turunan class manusia yang jika dituliskan menjadi class awe extends manusia extens hewan { --- awe, maafkan aku jika terlalu berlebihan :). Berikut ini akan aku beri contoh penggunaan class warisan di Java.

public class cobaObject {
    
    //turunan dari class hewan (ada dibagian bawah)
    static class kambing extends hewan {
        public void bersuara() { mengembek(); }
        private void mengembek() { System.out.printf("Embeekkkkk....!"); }
    }
    static class ayam extends hewan {
        public void bersuara() { berkokok(); }
        private void berkokok() { System.out.printf("Kukuuruyuuuk...!"); }
    }
    
    public static void main(String[] args) {
        kambing awe = new kambing();
        awe.nama = "Kambing"; awe.kaki = 4;
        System.out.printf("%s (%s berkaki %d) bersuara: ", "Awe", awe.nama, awe.kaki); 
        awe.bersuara(); System.out.printf("\n\n");
        
        ayam dofir = new ayam();
        dofir.nama = "Ayam"; dofir.kaki = 2;
        System.out.printf("%s (%s berkaki %d) bersuara: ", "Dofir", dofir.nama, dofir.kaki); 
        dofir.bersuara(); System.out.printf("\n\n");
    }
}

class hewan {
    public String nama = "Hewan";
    protected int kaki = 0;
    public void bersuara() { 
        //suara hewan..
    }
}

Kamu perhatikan di class kambing dan ayam ada override method bersuara() dari class induknya. Class warisan dapat saja mendefinisikan ulang suatu method yang berbeda dari apa yang dilakukan oleh induknya. Perubahan atas method induknya ini disebut dengan Override. Program diatas jika dieksekusi akan menghasilkan output seperti berikut:

hasil program

Ada kalanya saat membuat object baru, kita ingin agar ada hal dasar tertentu yang langsung dikerjakan oleh object tersebut. Nah, "method" yang dipanggil pertamakali saat sebuah object terbentuk disebut dengan Constructor. Ciri dari constructor adalah dia memiliki nama yang sama dengan nama class-nya serta tidak me-return apapun. Contoh, berdasarkan program sebelumnya (dengan banyak perubahan), kita ingin class hewan memiliki sebuah constructor yang memanggil method bernafas() pada class ini.

public class cobaObject {
    public static void main(String[] args) {
        kambing awe = new kambing(); awe.bersuara("Awe");
        ayam dofir = new ayam(); dofir.bersuara("Dofir");
    }
}

class hewan {
    private static String nama = "Hewan";
    protected int kaki = 0;
    public boolean hidup; //status kehidupan
    
    //constructor class hewan
    public hewan() { 
        if(bernafas()) { hidup = true; } else { hidup = false; } //apakah bernafas?
    }
    protected boolean bernafas() { 
        return true; 
    }
    public void bersuara() { 
        //suara hewan..
    }
    //static method untuk mengakses private static property nama
    public static String lihatNama() { return nama; }
}

//class ayam turunan hewan
class ayam extends hewan {
    private static String nama = "Ayam"; 
    public int kaki = 2;
    
    //override method bernafas menjadi return false, akibatnya hidup = false
    @Override
    protected boolean bernafas() { return false; }
    
    public void bersuara(String nama) { 
        if(hidup) {
            System.out.printf("%s (%s berkaki %d) bersuara: ", nama, lihatNama(), kaki);
            berkokok();
        } else {
            System.out.printf("%s (%s berkaki %d) tak bersuara karena telah mati :(", nama, lihatNama(), kaki);
        }
        System.out.printf("\n");
    }
    private void berkokok() { System.out.printf("Kukuuruyuuuk...!"); }
}

//class kambing juga turunan hewan
class kambing extends hewan {
    private static String nama = "Kambing";
    
    //contoh constructor di class warisan
    public kambing() { 
        hidup = false; kaki = 4;
    }
    
    public void bersuara(String nama) { 
        if(hidup) {
            System.out.printf("%s (%s berkaki %d) bersuara: ", nama, lihatNama(), kaki);
            mengembek();
        } else {
            System.out.printf("%s (%s berkaki %d) tak bersuara karena telah mati :(", nama, lihatNama(), kaki);
        }
        System.out.printf("\n");
    }
    private void mengembek() { System.out.printf("Embeekkkkk....!"); }
}

Jika class warisan tidak memiliki constructor seperti pada class ayam pada contoh diatas, maka Java akan mencari constructor di class induknya. Mungkin kamu bertanya, apakah semua class harus memiliki constructor? Jawabannya adalah tidak, selama tidak ada hal khusus yang harus dilakukan saat sebuah object dibuat dari class tersebut maka sebuah class tidak harus memiliki constructor. Selain itu pada class yang tidak memiliki constructor, Java akan membuatkan constructor default tanpa argumen secara otomatis. Kamu juga bisa membuat lebih dari satu constructor dalam satu class untuk parameter yang berbeda-beda. Program diatas setelah dieksekusi akan menghasilkan karya seperti berikut:

hasil program

Kata kunci "Static"

Dari tadi kita selalu menggunakan kata kunci Static, tapi apa sih sebenarnya maksud penggunaan kata ini?. Pada dasarnya, jika sebuah method atau properti dideklarasikan sebagai static maka dia dapat langsung diakses dari luar class tanpa harus membuat objectnya dengan perintah new. Kita langsung dapat memanggil method atau properti itu dengan didahului nama classnya, misalkan: hewan.nama tanpa harus membuat object dengan cara new hewan() misalnya. Yang perlu kamu catat adalah pemanggilan class, method dan properti yang tidak static dari dalam method yang static akan memunculkan error karena method atau properti dinamis harus dibuat dulu dengan perintah new sedangkan method atau properti static tidak.

Properti yang dinyatakan static biasa disebut sebagai Class Variable karena menjadi variabel dari class dan bukan variabel dari object/instance. Misalkan kita membuat 3 object dengan nama yang berbeda dari class kambing, apapun nama object yang dibuat mereka tetap memiliki properti yang sama yang dimiliki oleh class kambing yaitu nama yaitu "Kambing". Sedangkan Method yang dinyatakan static biasa disebut sebagai Class Method yang biasanya digunakan untuk mengakses static properti.

Simpulan Umum Dalam Pembuatan Class dan Object

Berikut ini adalah kesimpulan singkat dalam pembuatan class dan object di Java:

  • Dalam pendeklarasian class, nama class dapat saja didahului oleh modifier. Di bagian dalam class berisi property, method dan mungkin sebuah constructor dari class tersebut. Constructor yang dimulai saat sebuah object terbentuk menggunakan nama yang sama dengan nama class dan tidak memiliki return value. Kamu bisa mengatur hak akses atas class dan anggotanya menggunakan cara yang sama yaitu menggunakan modifier seperti public, protected dan private di dalam pendeklarasiannya.
  • Untuk membuat object dari sebuah class adalah dengan menggunakan perintah new. Operator new akan mereturn sebuah acuan pada object yang telah dibuat. Kamu dapat menempatkan acuan tersebut pada sebuah variabel atau dapat juga langsung menggunakannya. Untuk mengakses property dan method yang dapat diakses dari luar class adalah dengan menggunakan: acuanObject.namaProperty (untuk properti) dan acuanObject.namaMethod() (untuk method).

NetBeans

Sebagai penutup, jika kamu ingin membuat aplikasi Java yang lebih kompleks pada beragam platform lengkap dengan GUI-nya, sebaiknya kamu menggunakan NetBeans. Apa itu NetBeans? NetBeans adalah IDE (Integrated Development Environment -- benar gak sih? :) --) yang gratis dan bagus. Kamu bisa mempelajari NetBeans dan mengunduhnya disini. Selamat belajar dan mencoba-coba pemrograman Java! Sukses selalu buatmu.

Ucapan Terima Kasih

Aku sangat berterimakasih pada Awe dan Dofir yang tidak berkeberatan namanya digunakan sebagai contoh dipostingan kali ini :)...

Catatan Dari Penulis

Sekedar menginformasikan, aku sudah membuat sebuah aplikasi Java (dengan tipe file .jar) yang bisa langsung dieksekusi (dobel klik) untuk memunculkan Command Prompt yang direktori aktifnya sudah menunjukkan dimana file jar tersebut diletakkan. Ini lebih cepat daripada harus mengetik perintah cd berulangkali di Command Prompt untuk berpindah direktori aktif. Cukup letakkan file jar di sembarang direktori, lalu jalankan, maka muncul Command Prompt dengan direktori aktif di direktori tersebut. Kamu bisa unduh disini.

Tidak ada komentar:

Posting Komentar