OmahTI Learning Center 2013 Desktop Programming Module 1 OmahTI Learning Center 2013 Terima kasih untuk semua pihak yang telah membantu pembuatan modul ini. Yogyakarta, 2013 Omah TI Desktop Programming Module 2 OmahTI Learning Center 2013 i. Daftar Isi i. Daftar Isi ............................................................................................................................................. 3 1. Java...................................................................................................................................................... 6 1) Apa itu Java? ....................................................................................................................................... 6 Java sebagai bahas pemrograman ....................................................................................................... 6 2) Mengapa Java? .................................................................................................................................... 6 3) Cara Kerja Dalam Pemrograman Java ................................................................................................ 7 2. Software Yang Dibutuhkan ................................................................................................................. 7 1) JRE & JDK.......................................................................................................................................... 7 2) IDE ...................................................................................................................................................... 8 3. Program Pertama ................................................................................................................................. 8 1) Pembuatan Project Pada NetBeans IDE .............................................................................................. 8 2) Penjelasan dari struktur kode program .............................................................................................. 10 Komentar ........................................................................................................................................... 10 Package ............................................................................................................................................. 11 Main Method ..................................................................................................................................... 11 3) Menjalankan Program Java ............................................................................................................... 12 4. Variabel dalam Java .......................................................................................................................... 15 1) Tipe data primitive pada Java ........................................................................................................... 15 logika - boolean ................................................................................................................................. 15 teksual – char..................................................................................................................................... 16 String ................................................................................................................................................. 16 Integral – byte, short, int & long ....................................................................................................... 16 Floating Point – float dan double ...................................................................................................... 17 2) Inisialisasi variable dan tata cara penulisan di Java .......................................................................... 17 3) Menampilkan data Variable .............................................................................................................. 17 5. Operator ............................................................................................................................................ 18 1) Operator aritmatika ........................................................................................................................... 19 Increment dan Decrement ................................................................................................................. 20 2) Operator relasional ............................................................................................................................ 21 3) Operator Logikal ............................................................................................................................... 22 Short circuit logikal operator ............................................................................................................ 23 4) Menerima Input Dari Keyboard ........................................................................................................ 23 Menggunakan Scanner untuk mendapatkan input............................................................................. 23 Desktop Programming Module 3 OmahTI Learning Center 2013 Menggunakan BufferedReader untuk menerima input ..................................................................... 26 Menggunakan JOptionPane untuk Mendapatkan Input .................................................................... 27 Parsing dari String ke tipe data tertentu ............................................................................................ 27 6. Statement Kontrol dan Kontrol Pemilihan ........................................................................................ 28 1) Kontrol pemilihan ............................................................................................................................. 28 Penggunaan IF................................................................................................................................... 28 Switch................................................................................................................................................ 32 2) Perulangan ......................................................................................................................................... 33 For – loop .......................................................................................................................................... 33 While – loop ...................................................................................................................................... 34 Do – While loop ................................................................................................................................ 35 3) Kontrol pemilihan dan Perulangan bersarang ................................................................................... 37 If bersarang,....................................................................................................................................... 37 For bersarang ..................................................................................................................................... 37 7. Java arrays ......................................................................................................................................... 37 1) Apa Itu Array?................................................................................................................................... 37 2) Pendeklarasian Array ........................................................................................................................ 38 3) Pengaksesan sebuah elemen array..................................................................................................... 39 4) Array Multidimensi ........................................................................................................................... 39 Array Dua Dimensi ............................................................................................................................ 39 Array Lebih Dari Dua Dimensi ........................................................................................................... 41 8. Java method....................................................................................................................................... 41 1. Memanggil Method ........................................................................................................................... 42 2. Pemberian Variabel Dalam Method .................................................................................................. 44 9. Pengenalan Object Oriented Programming Pada Java ...................................................................... 45 1. Class dan Object .............................................................................................................................. 46 1) Pemahaman Class dan Objek .................................................................................................. 46 2) Deklarasi Atribut ....................................................................................................................... 48 3) Deklarasi Constructor .............................................................................................................. 50 4) Packages ...................................................................................................................................... 53 2. Access Modifiers .............................................................................................................................. 55 1) Akses Default (Package Accessibility) ..................................................................................... 55 2) Akses Public ............................................................................................................................... 56 3) Akses Protected ......................................................................................................................... 56 Desktop Programming Module 4 OmahTI Learning Center 2013 4) Akses Private ............................................................................................................................. 57 10. Referensi ........................................................................................................................................... 58 Desktop Programming Module 5 OmahTI Learning Center 2013 1. Java 1) Apa itu Java? Java sebagai bahasa pemrograman Java merupakan sebuah bahasa pemrograman komputer. Java memungkinkan programmer menuliskan instruksi-intruksi komputer menggunakan perintah berbasiskan bahasa Inggris. Namun kita tidak perlu mempelajari bahasa Inggris secara mendalam untuk menggunakan Java. Java merupakan “High-Level language programming” karena perintah-perintah dalam Java dapat dibaca dan ditulis dengan mudah oleh manusia. Seperti bahasa pemrograman lainnya, Java juga memiliki aturan dalam penulisannya. Aturan dalam penulisan bahasa pemrograman disebut “sintax”. Sebuah Development Environment Sebagai sebuah peralatan pembangun, teknologi Java menyediakan banyak tools : compiler, interpreter, penyusun dokumentasi, paket kelas dan sebagainya. Sebuah Aplikasi Aplikasi dengan teknologi Java secara umum adalah aplikasi serba guna yang dapat dijalankan pada seluruh mesin yang memiliki Java Runtime Environment (JRE). Sebuah Deployment Environment Terdapat dua komponen utama dari Deployment Environment. Yang pertama adalah JRE, yang terdapat pada paket J2SDK, mengandung kelas–kelas untuk semua paket teknologi Java yang meliputi kelas dasar dari Java, komponen GUI dan sebagainya. Komponen yang lain terdapat pada Web Browser. Hampir seluruh Web Browser komersial menyediakan interpreter dan runtime environment dari teknologi Java. 2) Mengapa Java? Java memiliki kelebihan, yaitu : - Sederhana - Berorientasi objek (object oriented) - Dapat didistribusikan dengan mudah - Interpreter - Robust - Aman - Architecture Neutral - Portable Desktop Programming Module 6 OmahTI Learning Center 2013 - Performance - Multithreaded - Dinamis 3) Cara Kerja Dalam Pemrograman Java Gambar 1.1 : Alur Proses Pemrograman Java Untuk menuliskan sebuah kode sumber(source code)program Java kita membuthkan sebuah text editor, beberapa text editor yang baik untuk penulisan kode program adalah, notepad++, Emacs, gedit, dan lainnya. Kode sumber program yang telah selesai, kemudian di kompilasi menggunakan Java Compiler menghasilkan Java bytecode.Ketika program akan di eksekusi atau dijalankan, Java bytecode kemudian diinterpretasikan menjadi bahasa mesin yang sesuai dengan komputer target. Inilah alasan mengapa program Java portable. 2. Software Yang Dibutuhkan 1) JRE & JDK JRE atau Java runtime environtmen merupakan program yang digunakan untuk menginterpretasikan Java bytecode menjadi bahasa mesin yang sesuai dengan komputer yang digunakan. Dengan kata lain JRE merupakan program yang digunakan agar program Java dapat berjalan pada komputer. JDK atau Java development kit merupakan program yang digunakan untuk mengkompilasi kode sumber program Java menjadi Java codebyte. Jadi JDK merupakan alat yang digunakan untuk membuat kode sumber program menjadi sebuah file yang dapat dijalankan pada sebuah komputer. Ketika ketika menginstalasi JDK pada komputer kita, secara otomatis kita juga telah menginstal JRE.Tetapi dalam paket instalasi JRE tidak terdapat JDK. Desktop Programming Module 7 OmahTI Learning Center 2013 2) IDE IDE atau Integrated Development Environment merupakan sebuah program yang memudahkan untuk melakukan pengembangan sebuah program atau software. Komponen utama dalam IDE adalah text editor untuk memanipulasi kode sumber program, Build automaton, dan sebuah debugger. Untuk pengeditan kode sumber program memang cukup menggunakan text editor biasa, tetapi dengan IDE proses pengeditan kode sumber bisa menjadi lebih mudah. Salah satu yang memudahkan adalah pengkoreksian sintax pada saat kode tersebut ditulis. Untuk pengembangan program Java, IDE yang cukup populer dan mudah digunakan adalah NetBeans IDE. NetBeans IDE tidak hanya mendukung bahasa pemrograman Java, tetapi pada modul pelatihan ini hanya akan dibahas penggunaan NetBeans untuk pengembangan program Java. 3. Program Pertama 1) Pembuatan Project Pada NetBeans IDE Untuk memulai pembuatan sebuah project pada NetBeans, caranya adalah click File > NewProject kemudian akan muncul jendela baru seperti ini. Gambar 2.1 : NetBeans 7.0.1 new project window Kita akan membuat sebuah aplikasi Java, maka yang kita pilih adalah Java Application yang berada pada kategori Java. Klik Next, dan kita akan memasuki tahap kedua, yaitu pemilihan nama project dan lokasi penyimpanannya. Desktop Programming Module 8 OmahTI Learning Center 2013 Gambar 2.2 : NetBeans 7.0.1 new Java aplication window Masukan nama project yang akan anda pada bagian Project Name, perhatikan juga bahwa bagian Create Main Class berubah sesuai dengan nama project. Gambar 2.3 : NetBeans 7.0.1 new Java aplication window, main class menu Klik finish untuk mengakhiri dan memulai project yang dibuat tersebut. Perhatikan bahwa kita akan langsung ditampilkan project yang kita buat, karena dalam pembuatan project, kita mengatur project tersebut sebagai project utama. Jendela untuk melakukan pengeditan kode program berada di sebelah kanan, di sebelah kiri merupakan jendela untuk mengatur project. Tampilan jendela untuk editing kode program. Di bagian inilah kita akan menuliskan kode program yang akan dibuat. Desktop Programming Module 9 OmahTI Learning Center 2013 Gambar 2.4 : NetBeans 7.0.1 source code editor 2) Penjelasan dari struktur kode program Komentar Pada kode tersebut ada beberapa bagian teks yang berwarna abu-abu, bagian tersebut merupakan komentar. Pada saat program dijalankan, komentar yang berada pada kode program tidak dijalankan, dan dibiarkan apa adanya. Jadi, apapun yang ada pada komentar tidak mempengaruhi jalannya program yang dibuat. Tetapi, biasanya komentar digunakan para programmer sebagai penjelasan dari program yang dibuat. Ada dua cara penulisan dalam komentar di Java, komentar yang berjumlah satu baris dan komentar yang berjumlah lebih dari satu baris. Untuk komentar yang berjumlah satu baris dituliskan menggunakan double slash. // Ini merupakan komentar satu baris Jika kita ingin menuliskan lebih dari satu baris komentar, dapat ditulis dengan cara seperti ini // Ini komentar baris pertama // baris kedua Atau bisa menggunakan bentuk seperti ini Desktop Programming Module 10 OmahTI Learning Center 2013 /* Ini komentar baris pertama baris kedua */ Pada komentar diatas cara penulisannya adalah dengan menggunakan tanda /* di awal, dan di akhiri dengan */. Kemudian ada juga komentar yang disebut dengan komentar Javadoc. Dari gambar yang sebelumnya terlihat komentar yang diawali dengan /** dan di akhiri dengan */ . Setiap baris komentarnya diawali dengan * . /** * Ini merupakan komentar Javadoc */ Javadoc merupakan pembuat dokumentasi dari kode program Java dalam bentuk html. Untuk membuat Javadoc pada NetBeans dapat dilakukan dengan cara : Run > Generate Javadoc. Package Dapat kita lihat package berada pada paling atas kode program (komentar tidak dihitung). Jika diperhatikan package diakhiri dengan tanda titik koma (;), Jika tidak terdapat titik koma maka program tidak bisa dikompilasi. package helloworld; Kemudian Kelas, kelas atau class. Untuk masalah kelas akan dibahas lebih lanjut pada bagian object oriented programming. Nama kelas dianjurkan diawali dengan huruf kapital, dan nama class harus sesuai dengan nama file classnya. Dapat dilihat di project explorer bahwa file kode program bernama HelloWorld.java. public class HelloWorld { } Main Method Kemudian di dalam kelas kita menemukan : public static void main( String[ ] args ) { } Desktop Programming Module 11 OmahTI Learning Center 2013 Bagian ini dinamakan dengan main method, main method adalah barisan program yang pertama kali akan dijalankan ketika program dijalankan. Pada bagian ini, bagian katakata sebelum “main” dapat kalian hiraukan terlebih dahulu, bagian ini akan dibahas lebih lanjut pada bagian berikutnya. ( Tetapi, jika kalian sangat penasaran, public bermakna bahwa method dapat dilihat dari luar kelas; static artinya untuk dapat dieksekusi tidak perlu membuat sebuah object; dan void bermakna method ini tidak mengembalikan sebuah return value; Bagian dalam kurung setelah main merupakan command line argument. Tidak perlu khawatir jika tidak mengerti pada bagian ini, karena akan dipelajari lebih lanjut pada bagian lain.) Jadi yang perlu kita ingat adalah, untuk menuliskan kode program, kita harus menuliskannya di dalam main method. 3) Menjalankan Program Java Ada beberapa cara untuk menjalankan program Java pada NetBeans. Cara yang paling mudah adalah menekan tombol F6 pada keyboard. Dengan cara ini kita menjalankan program pada project utama kita. Cara berikutnya adalah mengklik ikon yang ada pada toolbar di NetBeans. Gambar 2.5 : NetBeans 7.0.1 icon bar Fungsinya sama seperti dengan menekan tombol F6. Cara lainnya yaitu melalui menu Run. Gambar 2.6 : NetBeans 7.0.1 source code editor pull down menu Desktop Programming Module 12 OmahTI Learning Center 2013 Kita dapat memilih untuk menjalankan project utama dengan memilih Run Main Project.Atau menjalankan project yang sedang aktif dengan memilih Run File atau dengan menekan Shift + F6. Ketika kita mencoba menjalankan program yang telah kita buat sebelumnya, maka akan muncul suatu jendela di bawah seperti ini. Gambar 2.7 : NetBeans 7.0.1 output window Sekarang kita akan mencoba menambahkan satu baris kode pada program kita, agar dapat menampilkan suatu kalimat. Pada main method, kita akan menambahkan satu sintak seperti ini. System.out.println("Hallo dunia, Java itu mudah. "); Sehingga program tersebut seperti ini : package helloworld; public class HelloWorld { public static void main(String[] args) { System.out.println("Hallo dunia, Java itu mudah."); } } Tampilan pada NetBeans: Desktop Programming Module 13 OmahTI Learning Center 2013 Gambar 2.8 : NetBeans 7.0.1 code example (Komentar yang dibuat secara otomatis pada saat kita membuat project bisa dihapus, dan tidak mempengaruhi apa-apa.) Kemudian coba jalankan kembali program tersebut.Anda dapat melihat tampilan sebelum menambah baris kode dan sesudah memiliki perbedaan. Ya benar, output yang dihasilkan sesuai dengan apa yang di dalam tanda ". Gambar 2.9 : NetBeans 7.0.1 output window example Untuk menampilkan suatu output ke layar, kita dapat menggunakan sintax System.out.println(). Untuk menampilakan suatu kalimat, cukup dengan menambahkan kalimat di dalam tanda kurung, dan kalimat tersebut diawali dan diakhiri dengan tanda “ seperti pada contoh. Selain menggunakan System.out.println() ada satu lagi sintak yang digunakan untuk menampilkan output ke layar, yaitu System.out.print(). Perbedaan println() dan print() adalah, pada println() mencetak pada suatu baris, kemudian ketika telah selesai akan membuat baris baru, sedangkan pada print() tidak. Contoh penggunaanya. package helloworld; public class HelloWorld { public static void main(String[] args) { System.out.println("Ini ditampilkan pada baris pertama"); System.out.println("Ditampilan pada baris kedua"); System.out.print("Ditampilkan pada baris ketiga"); System.out.println("Ditampilan pada baris ketiga"); Desktop Programming Module 14 OmahTI Learning Center 2013 } } Tampilan output ketika program dijalankan Gambar 2.10 : NetBeans 7.0.1 output window example 2 Perhatikan juga bahwa tidak ada pemisah antara kalimat "Ditampilkan pada baris ketiga" dan "Ditampilkan pada baris ketiga". Agar terpisah oleh spasi, dapat dilakukan dengan cara menambahkan secara langsung di akhir kalimat "Ditampilkan pada baris ketiga".Dalam java penulisan sintax merupakan case sensitive, yaitu memperhatikan besar kecilnya huruf.Sebagai contoh, System dengan system merupakan hal yang berbeda.Aturan ini juga berlaku untuk semua baik dalam penamaan variable dan juga yang lainnya. 4. Variabel dalam Java Di dalam Java terdapat dua tipe variable yang bisa ditemukan, yaitu Tipe data object oriented dan tipe data non-object oriented atau biasa disebut dengan tipe data primitif. Tipe data object oriented akan dibahas pada bagian selanjutnya, sedangkan pada bagian ini kita akan membahas tipe data non-object oriented atau tipe data primitif. Bahasa pemrograman Java mendefinisikan delapan tipe data primitif. Mereka diantaranya adalah boolean (untuk bentuk logika), char (untuk bentuk tekstual), byte, short, int, long (integral), double and float (floating point). 1) Tipe data primitive pada Java logika - boolean Tipe data boolean hanya memiliki dua nilai yaitu true dan false. Contohnya adalah boolean prima = true; Desktop Programming Module 15 OmahTI Learning Center 2013 Contoh tersebut memiliki arti bahwa prima bernilai benar. teksual – char Tipe data character (char), diwakili oleh karakter single UNICODE. Nilai dari tipe data char harus diisikan didalam tanda petik (’ ’). Sebagai contoh, ‘a’ //Huruf a ‘\t’ //tab Untuk menampilkan karakter khusus seperti ' (single quotes) atau " (double quotes), menggunakan karakter backslash \. Sebagai contoh, '\'' //untuk single quotes '\"' //untuk double quotes String String memang bukan dikategorikan sebagai suatu tipe data primitive di dalam Java. String pada Java merupakan sebuah kelas (class). Tetapi String merupakan suatu kelas yang dapat disebut sebagai kelas yang istimewa karena penggunaannya tidak membutuhkan deklarasi seperti deklarasi obyek lainnya, tetapi hanya seperti variabel primitif. Sebagai sebuah kelas, String juga memiliki method – method yang dapat digunakan. Method akan dipelajari lebih lanjut pada bagian berikutnya. Contoh deklarasi penggunaan String. String message = “Hello world”; Nilai String yang akan dimasukan harus berada didalam tanda “”. Integral – byte, short, int & long Tipe data ini merupakan tipe data yang melambangkan bilangan bulat. Yang membedakan adalah range nilai yang dapat dicakup oleh tipe data tersebut. byte bernilai -128 s.d. 127 short bernilai -32768 s.d. 32767 int bernilai -2147483648 s.d. 2147483647 long bernilai -9223372036854775808 s.d. 9223372036854775807 Contoh deklarasi variabel dan inisialisasinya. Desktop Programming Module 16 OmahTI Learning Center 2013 int a = 100; long c = 100000000; Floating Point – float dan double Tipe floating point terdiri dari dua jenis, yaitu float dan double. Tipe data double memiliki presisi yang lebih tinggi dibandingkan tipe data float dalam menyimpan data pecahan. Contoh deklarasi dan inisialisasinya. double nilai = 7.5; float magnitude = 2.5; 2) Inisialisasi variable dan tata cara penulisan di Java Variable adalah suatu item untuk menyimpan nilai. Variabel seperti yang telah dijelaskan seperti sebelumnya memiliki tipe data yang beragam.Variabel memiliki nama dan nilai, nama dari setiap variabel tidak boleh sama dengan yang lainnya, artinya hanya ada boleh ada satu variabel dengan nama tertentu. Tipe data menandakan tipe nilai yang dapat dibentuk oleh variabel itu sendiri. Di dalam Java penulisan nama variabel dan seluruh sintaksnya merupakan case sensitive. Deklarasi secara umum sebuah variabel. <data type> <name> [=initial value]; Contoh : int x = 10 ; double y = 0.25042010; int a; String teks; 3) Menampilkan data Variable Untuk mengeluarkan nilai dari variabel yang diinginkan, kita dapat menggunakan perintah yang sama pada saat menampilkan sebuah kalimat pada bab sebelumnya, yaitu menggunakan perintah atau sintax sebagai berikut : System.out.println() System.out.print() Desktop Programming Module 17 OmahTI Learning Center 2013 Contoh : public class OutputVariable{ public static void main( String[] args ){ int value = 10; System.out.println( value ); } } Program tersebut akan mengeluarkan teks berikut pada layar, 10 Pada contoh tersebut diperlihatkan bahwa untuk menampilkan sebuah nilai dari variable kita tidak perlu menambahkan " di awal dan di akhir nama variable. Contoh ke-2 : public class OutputVariable{ public static void main( String[] args ){ int value = 100; System.out.println("Nilai dari variable value adalah "+value ); } } Program tersebut akan mengeluarkan teks berikut pada layar, Nilai dari variable value adalah 100 Perhatikan pada penggunaan sintax println(), untuk menampilkan sebuah string dan sebuah kalimat dapat dilakukan dengan menggunakan tanda + seperti pada contoh. Cara ini dapat digunakan untuk 2 atau lebih variable. 5. Operator Dalam Java, ada dua tipe operator. Ada 4 operator yang secara umum digunakan dalam Java yaitu operator aritmatika, operator bitwise, operaor relasional, dan operator logikal. Setiap operator di Java juga memiliki prioritas, jadi operator di Java di kerjakan berdasarkan prioritasnya. Selain itu di Java juga terdapat beberapa operator untuk menangani beberapa situasi khusus. Dalam bab ini akan dijelaskan tentang operator aritmatika, relational, dan logikal. Desktop Programming Module 18 OmahTI Learning Center 2013 1) Operator aritmatika Operator Arti + Penjumlahan - Pengurangan (juga menunjukan tanda negatif) * Perkalian / Pembagian % Modulus (sisa dari pembagian) ++ Increment -- Decrement Tabel 5.1 : Arithmetic operator Operator +,-,/,* bekerja sesuai dengan operasi matematika secara umum, dan dapat digunakan untuk semua tipe data numerik. Dan juga untuk variabel yang bertipe char. Untuk operator / yang dioperasikan untuk tipe data integer akan menghasilkan nilai bulatnya saja, sebagai contoh 10/3 akan menghasilkan 3 pada pembagian tipe data integer. Dalam penggunaannya, operasi aritmatika pada Java juga mengenal penggunaan tanda kurung, jadi sangat dekat sekali dengan penggunaan sehari-hari. Contoh penggunaan operasi aritmatika pada Java public class Aritmetika { public static void main(String[] args) { int var1 = 10 + 3; int var2 = 10 - 3; int var3 = 10 * 3; int var4 = 10 / 3; int var5 = 10 % 3; double var6 = 10.0 / 3.0; System.out.println(var1); System.out.println(var2); System.out.println(var3); System.out.println(var4); System.out.println(var5); System.out.println(var6); } } Output pada layar adalah 13 7 30 3 1 Desktop Programming Module 19 OmahTI Learning Center 2013 3.3333333333333335 Operator Penggunaan Keterangan + var1 + var2 Menambahkan var1 dengan var2 - var1 - var2 Mengurangi var1 dengan var2 * var1 * var2 Mengalikan var1 dengan var2 / var1 / var2 Membagi var1 dengan var2 % var1 % var2 Menghitung sisa dari pembagian var1 dengan var2 Tabel 5.2 : Arithmetic operator Increment dan Decrement Increment adalah penambahan nilai sejumlah 1, sedangkan decrement adalah pengurangan nilai sejumlah 1. Jadi, x = x + 1; dapat ditulis dengan x++; Dan, x = x – 1 ; dapat ditulis dengan x--; Increment dan decrement ditulis sebelum variabel (prefix) dan sesudah (psotfix).Berikut table perbedaan increment decrement prefix dan postfix. Operator Penggunaan Keterangan Menambahkan nilai 1 pada op; ++ op++ mengevaluasi nilai op sebelum diincrementasi/ditambahkan Menambahkan nilai 1 pada op; ++ ++op mengevaluasi nilai op setelah diincrementasi/ditambahkan Mengurangkan nilai 1 pada op; -- op-- mengevaluasi nilai op sebelum didecrementasi/dikurangkan Mengurangkan nilai 1 pada op; -- --op mengevaluasi nilai op setelah didecrementasi/dikurangkan Desktop Programming Module 20 OmahTI Learning Center 2013 2) Operator relasional Operator relasional adalah operator yang digunakan untuk menentukan keterhubungan dua nilai tertentu. Hasilnya adalah Boolean, yaitu true atau false. True menunjukan bahwa keterhubungan dua nilai tersebut sesuai dengan operator, dan false jika sebaliknya. Di dalam java, semua object dapat dibandingkan kesamaannya menggunakan == dan !=. Tetapi penggunaan operator <,<=,>,>= harus digunakan untuk tipe data yang memiliki tingkatan. Operator Penggunaan Keterangan > var1 > var2 var1 lebih besar dari var2 >= var1 >= var2 var1 lebih besar atau sama dengan var2 < var1 < var2 var1 kurang dari var2 <= var1 <= var2 var1 kurang dari atau sama dengan var2 == var1 == var2 var1 sama dengan var2 != var1 != var2 var1 tidak sama dengan var2 Tabel 5.4 : Relational operator Contoh penggunaan public class Relasional { public static void main(String[] args) { int var1 = 10; int var2 = 5; System.out.println(var1 + ">" + var2 + "=" + (var1 > var2)); System.out.println(var1 + ">=" + var2 + "=" + (var1 >= var2)); System.out.println(var1 + "<" + var2 + "=" + (var1 < var2)); System.out.println(var1 + "<=" + var2 + "=" + (var1 <= var2)); System.out.println(var1 + "==" + var2 + "=" + (var1 == var2)); System.out.println(var1 + "!=" + var2 + "=" + (var1 != var2)); } } Maka outputnya adalah 10>5=true 10>=5=true 10<5=false 10<=5=false 10==5=false 10!=5=true Desktop Programming Module 21 OmahTI Learning Center 2013 3) Operator Logikal Operator logikal adalah operator yang digunakan untuk operasi logika. Operator & | ^ || && ! Arti AND OR XOR (exclusive OR) Short-circuit OR Short-circuit AND NOT Tabel 5.5: Logical operator Tabel kebenaran dari masing-masing operator p Q p&q p|q False False False False True False False True True False True False True True True True p^q False True True False !p True False True False Tabel 5.6 : Truth table Contoh penggunaan : public class Logical { public static void main(String[] args) { boolean p = true; boolean q = false; System.out.println("nilai p = " + p); System.out.println("nilai q = " + q); System.out.println("p & q = " + (p & q)); System.out.println("p | q = " + (p | q)); System.out.println("p ^ q = " + (p ^ q)); System.out.println("!p = " + !q); System.out.println("p & !q = " + (p & !q)); } } Output yang dihasilkan nilai p = true nilai q = false p& q = false p | q = true p ^ q = true !p = true p& !q = true Desktop Programming Module 22 OmahTI Learning Center 2013 Short circuit logikal operator Java memberikan short circuit operator yaitu short circuit AND dan short circuit OR sehingga memberikan peningkatan pada efisiensi kode. Mengapa short circuit ini menguntungkan dalam hal efisiensi? Seperti yang kita ketahui bahwa AND akan bernilai True jika keduanya bernilai True, dalam short circuit AND, ketika ekspresi pertama bernilai False, maka ekspresi kedua tidak perlu dicek lagi nilainya karena sudah pasti bernilai true, sehingga efisiensi meningkat. Sedangkan untuk short circuit OR ketika ekspresi pertama bernilai True, maka ekspresi kedua tidak perlu lagi dicek kebenarannya, karena untuk OR salah bernilai True, maka hasilnya True. Di Java, terdapat urutan pengerjaan operator berdasarkan tingkat prioritasnya, berikut ini urutan pengerjaan operator berdasarkan prioritas dari yang paling tinggi ke yang paling rendah. tinggi () ++ * + >> > == & ^ | && || ?: = rendah [] -/ >>> >= != ~ % << < ! <= Tabel 5.7 : Operator order 4) Menerima Input Dari Keyboard Salah satu kemudahan menggunakan Java adalah banyaknya library yang secara default telah desediakan dan dapat digunakan dengan mudah. Library yang sudah ada ini biasanya digunakan untuk tujuan tertentu. Salah satu library untuk mendapatkan input dari keyboard adalah Scanner. Hal yang perlu dilakukan untuk menggunakan library yang telah tersedia adalah dengan mereferensikan library yang akan kita gunakan, lalu memanggil methodnya. Untuk menerima input dari keyboard, Java memiliki beberapa library yang telah tersedia. Beberapa yang sering digunakan adalah Scanner, BufferedReader dan JOptionPane. Menggunakan Scanner untuk mendapatkan input Scanner merupakan library default Java, class Scanner dapat ditemukan di dalam library java.util. Seperti yang sudah dijelaskan sebelumnya, untuk menggunakan library ini Desktop Programming Module 23 OmahTI Learning Center 2013 pertama kali kita harus merefrensikan library yang akan digunakan menggunakan kata kunci import. Deklarasi import berada dibawah deklarasi package atau di atas class. Contoh pendeklarasian referensi library Scanner package input; import java.util.Scanner; public class GetUserInput { public static void main(String[] args) { } } Untuk menggunakan class Scanner kita harus terlebih dahulu membuat sebuah object yang bertipe Scanner. (Sebuah class hanya berisi baris code. Kode tersebut tidak akan berpengaruh apapun sebelum kita membuat object dari class tersebut. Untuk penjelasan kelas lebih lanjut terdapat pada materi selanjutnya) Untuk membuat object Scanner sintax yang digunakan adalah sebagai berikut. Scanner user_input = new Scanner( System.in ); Pendeklarasian object hampir mirip dengan pendeklarasian variable. Scanner merupakan classnya atau tipe objectnya, user_input merupakan nama variabelnya. Kemudian kita akan menemukan new diakhir dari tanda sama dengan. new merupakan sebuah sintax untuk pembuatan sebuah object baru, dan Scanner() merupakan konstruktor atau pembangun dari class tersebut. System.in merupakan parameternya, ini seperti memberitahu Java bahwa ini adalah System input. Untuk mendapatkan input, kita dapap menggunakan salah satu dari banyak method yang telah tersedia dari object Scanner kita. Salah satu methodnya bernama next. Method next akan mendaptkan string dari teks yang dimasukan oleh user melalui keyboard. Contoh penggunaannya String nama; nama = user_input.next( ); Dalam penggunaannya di NetBeans, setelah kita mengetikan nama object dan menuliskan titik, akan muncul pop-up windows yang berisi method dalam class tersebut. Ini juga merupakan salah satu kelebihan IDE dibandingkan dengan Text Editor biasa. Contoh penggunaannya package input; import java.util.Scanner; public class GetUserInput { public static void main(String[] args) { Scanner user_input = new Scanner(System.in); System.out.println("Masukkan nama anda :"); Desktop Programming Module 24 OmahTI Learning Center 2013 String nama = user_input.next(); System.out.println("Selamat datang di pelatihan OLC kelas Desktop Programming , "+nama+"."); } } Jika kita mencoba memasukan dua kata atau lebih yang dipisahkan oleh spasi pada program di atas, kita hanya akan mendapatkan kata pertama saja. Hal ini bukan merupakan suatu kesalahan, karena cara kerja next() memang seperti itu. Untuk mendapatkan dua kata atau lebih dalam sekali input pada program kita, kita bisa menggunakan method nextLine() pada object Scanner yang dibuat. String nama = user_input.nextLine(); Beberapa method pada class Scanner yang sering umum digunakan Method Fungsi Mengambil input yang bertipe String sebanyak 1 kata next() Mengambil input yang bertipe String sebanyak 1 kalimat nextLine() Mengambil input yang bertipe integer nextInt() Mengambil input yang bertipe long nextLong() Mengambil input yang bertipe double nextDouble() Mengambil input yang bertipe float nextFloat() Mengambil input yang bertipe boolean nextBoolean() Mengambil input yang bertipe short nextShort() Tabel 5.8 : Arithmetic operator Contoh penggunaan input menggunakan Scanner dan penggunaan operasi aritmatika Program pengkonversi suhu dari skala Celcius package input; import java.util.Scanner; public class GetUserInput { public static void main(String[] args) { Scanner user_input = new Scanner(System.in); double celcius; System.out.println("Masukan suhu dalam celcius :"); celcius = user_input.nextDouble(); double kelvin = celcius + 273; double reamur = celcius / 1.25; double fahrenheit = celcius / 5 * 9 + 32; System.out.println("Dalam kelvin " + kelvin); System.out.println("Dalam reamur " + reamur); System.out.println("Dalam fahrenheit " + fahrenheit); } Desktop Programming Module 25 OmahTI Learning Center 2013 } Program ini menghasilkan konversi suhu dari celcius menjadi kelvin, reamur, dan Fahrenheit. Menggunakan BufferedReader untuk menerima input Contoh penggunaannya package input; import java.io.*; class DemoInputKeyboard { public static void main(String[] args) throws IOException { BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); String name = ""; System.out.print("Please Enter Your Name:"); name = dataIn.readLine(); System.out.println("Hello " + name + "!"); } } Keterangan: Sama seperti Scanner, unutk mendapatkan input kita membutuhkan sebuah object dari class BufferedReader dan memanggil method dari object BufferedReader. Dalam contoh kali ini penggunaan import memiliki perbedaan dibanding penggunaannya, dalam contoh ini kita merefrensikan semua class yang ada pada library java.io. Dibandingkan dengan sebelumnya yang merefrensikan secara spesifik dengan menyebutkan nama class yang akan kita gunakan, penggunaan * memiliki arti seluruh class yang ada dalam library java.io. Dalam BufferedReader ini tidak ada method khusus untuk mengambil input selain String. Untuk mendapatkan tipe data lain selain String, pertaman kali kita harus membaca input kemudian menampung pada sebuah variable kemudian melakukan konversi tipe data. Pada main method yang menggunakan BufferedReader terdapat throws IOException, ini merupakan cara yang digunakan di dalam Java untuk menangani error. Untuk tahap ini anda tidak perlu khawatir jika tidak mengerti bagian ini. Desktop Programming Module 26 OmahTI Learning Center 2013 Menggunakan JOptionPane untuk Mendapatkan Input Cara lain untuk mendapatkan input dari user adalah dengan menggunakan class JoptionPane yang didapatkan dari javax.swing package. JoptionPane memudahkan memunculkan dialog box standard yang memberikan kepada user sebuah nilai atau menginformasikan sesuatu. Contoh : import javax.swing.JOptionPane; class DemoInputKeyboard { public static void main(String[] args) { String name = ""; name = JOptionPane.showInputDialog("Please enter your name"); System.out.println("Hello " + name + "!"); } } Tampilan JOptionPane Gambar 5.1 : JOptionPane Keterangan : Dengan mengimport package javax.swing.JOptionPane kita dapat menggunakan salah satu fitur swing pada Java untuk melakukan input data. Javax.swing sendiri merupakan sebuah library default Java yang digunakan untuk pembuatan GUI. Tipe data yang dihasilkan menggunakan JOptionPane ini sama seperti BufferedReader, yaitu secara default String, untuk menghasilkan tipe data lain kita harus melakukan konversi tipe data terlebih dahulu. Parsing dari String ke tipe data tertentu Beberapa metode input di Java hanya memiliki masukan yang berupa String saja, untuk merubah ke tipe data lain ada method yang bisa digunakan. Desktop Programming Module 27 OmahTI Learning Center 2013 Metode Integer.parseInt(value) Long.parseLong(value) Short.parseShort(value) Float.parseFloat(value) Double.parseDouble(value) Boolean.parseBoolean(value) value bertipe String Tipe data yang dihasilkan int long short float double boolean Tabel 5.9 : Parsing table 6. Statement Kontrol dan Kontrol Pemilihan Pada bab ini anda akan mempelajari tentang bagaimana pengontrolan alur eksekusi program. Struktur kontrol pemilihan adalah pernyataan dari Java yang mengijinkan user untuk memilih dan mengeksekusi blok kode spesifik dan mengabaikan blok kode yang lain. 1) Kontrol pemilihan Struktur kontrol pemilihan adalah pernyataan dari Java yang mengijinkan user untuk memilih dan mengeksekusi blok kode spesifik dan mengabaikan blok kode yang lain. Penggunaan IF IF Pernyataan if akan menentukan sebuah pernyataan (atau blok kode) yang akan dieksekusi jika dan hanya jika persyaratan terpenuhi atau bernilai benar(true). Bentuk dari pernyataan if, if( boolean_expression) statement; atau if( boolean_expression ){ statement1; statement2; ... } dimana, boolean_expression adalah sebuah penyataan logika (true/false) atau variable bertipe boolean. Desktop Programming Module 28 OmahTI Learning Center 2013 Gambar 6.1: Flowchart Statement If Berikut ini adalah potongan kode dari pernyataan if: int grade = 68; if( grade > 60 ) System.out.println("Congratulations!"); atau int grade = 68; if( grade > 60 ){ System.out.println("Congratulations!"); System.out.println("You passed!"); } IF - ELSE Pernyataan if-else merupakan bentuk pengembangan if. Pada bentuk ini jika kondisi pada if terpenuhi, maka pernyataan yang berada pada block if akan di eksekusi, jika tidak terpenuhi maka pernyataan yang berada di block else yang akan di eksekusi. Bentuk statement if-else, if( boolean_expression ) statement; else statement; dapat juga ditulis seperti, if( boolean_expression ){ statement1; statement2; ... } Desktop Programming Module 29 OmahTI Learning Center 2013 else{ statement1; statement2; ... } Berikut ini contoh code statement if-else, int grade = 68; if( grade > 60 ) System.out.println("Congratulations!"); else System.out.println("Sorry you failed"); atau int grade = 68; if( grade > 60 ){ System.out.println("Congratulations!"); System.out.println("You passed!"); } else{ System.out.println("Sorry you failed"); } Gambar 6.2: Flowchart Statement If-Else IF-ELSE IF-ELSE Pernyataan pada bagian kondisi else dari blok if-else dapat menjadi struktur if-else yang lain. Kondisi struktur seperti ini mengijinkan kita untuk membuat seleksi persyaratan yang lebih kompleks. Bentuk statement if-else if, if( boolean_expression1 ) statement1; else if( boolean_expression2 ) Desktop Programming Module 30 OmahTI Learning Center 2013 statement2; else if( boolean_expression3 ) statement3; … else elsestatement; Sebagai catatan : anda dapat memiliki banyak blok else-if sesudah pernyataan if. Blok else bersifat opsional dan dapat dihilangkan. Pada contoh yang ditampilkan di atas, jika boolean_expression1 bernilai true, maka program akan mengeksekusi statement1 dan melewati pernyataan yang lain. Jika boolean_expression2 bernilai true, maka program akan mengeksekusi statement2 dan melewati statement yang berada di bawahnya. Jadi statement yang akan di eksekusi adalah dibagian yang terpenuhi terlebih dahulu, statement berikutnya walaupun bernilai benar tidak akan dieksekusi. Gambar 6.3: Flowchart Statement If-Else-If Berikut ini contoh code statement if-else-if int grade = 68; if( grade >= 90 ){ System.out.println("Excelent!"); } Desktop Programming Module 31 OmahTI Learning Center 2013 else if( grade > 60 ){ System.out.println("Very good!"); } else{ System.out.println("Sorry you failed"); } Switch Percabangan berikutnya adalah Switch. Cara kerja Switch adalah nilai dari suatu ekspresi ditest kecocokannya dari daftar yang telah tersedia. Ketika cocok maka urutan langkah yang berhubungan dengan list yang cocok dieksekusi. Bentuk umum dari switch adalah : Bentuk statement switch, switch( switch_expression ){ case case_selector1: statement1; // statement2; //block 1 . . . // break; case case_selector2: statement1; // statement2; //block 2 . . . // break; default: statement1; // statement2; //block n . . . // break; } Pada switch, yang menjadi ekspresinya harus bertipe data char, byte, short, int, atau long. Untuk tipe data floating point seperti double dan float tidak dapat diaplikasikan menggunakan switch. Statement default pada switch akan dieksekusi jika tidak ada case yang memenuhi. Sifat dari default merupakan sebuah opsional.Jadi jika tidak default maka tidak ada yang perintah yang dieksekusi jika tidak ada yang cocok. Pada contoh tersebut, blok kode yang akan dieksekusi ketika memenuhi kondisi tidak berada dalaam tanda kurung kurawal seperti if. Dan juga ketika lebih dari satu kondisi Desktop Programming Module 32 OmahTI Learning Center 2013 yang terpenuhi, maka semua kondisi yang benar akan dieksekusi, akan tetapi bisa dicegah menggunakan perintah break, ketika menggunakan perintah break seperti contoh di atas, tidak semua keadaan yang terpenuhi dieksekusi, tetapi hanya yang pertama kali ditemukan saja, ini karena break merupakan perintah keluar dari sebuah perulangan ataupun sebuah percabangan. Gambar 6.4 : Flow chart Switch 2) Perulangan Seperti yang kita ketahui, bahwa program yang kita buat dieksekusi secara linear dari atas kebawah. Terkadang kita membutuhkan sebuah kode yang berulang. Untuk memenuhi kebutuhan itu terdapat struktur kontrol pengulanngan pada Java. Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol pengulangan yaitu for, while, do while. For – loop Perulangan menggunakan for merupakan perulangan yang sangat umum digunakan. Bentuk umum perulangan for, Desktop Programming Module 33 OmahTI Learning Center 2013 for (inisialisasi; kondisi; iterasi){ statement1; statement2; ... } dimana, inisialisasi–inisialisasi dari variabel kontrol loop sebagai counter yang mengatur loop. kondisi–merupakan suatu ekspresi boolean yang menentukan loop akan berjalan atau tidak. iterasi–mendefinisikan seberapa banyak variabel kontrol loop bertambah setiap kali loop di jalankan. Contoh penggunaan for, int i; for( i = 0; i < 10; i++ ){ System.out.print(i); } Pada contoh ini i = 0 merupakan inisialisasi dari variable. i< 10 merupakan loop condition yang akan dicek setiap kali perulangan, jika loop condition bernilai true, maka perintah yang ada dalam for akan dieksekusi. Jika bernilai false perintah tidak dieksekusi dan keluar dari perulangan.Pada bagian iterasi nilai i++ sama dengan i = i + 1, yang berarti setiap perulangannya akan menaikan nilai i sebanyak 1. Pada contoh tersebut output yang dihasilkan adalah bilangan dari 0 hingga kurang dari 10 atau 9. While – loop Pernyataan while loop adalah pernyataan atau blok pernyataan yang diulang-ulang selama kondisi terpenuhi. Pada while sebelum memasuki perulangan kondisinya dicek terlebih dahulu, jika terpenuhi akan mengeksekusi blok perulanga while, jika tidak terpenuhi makan tidak ada perulangan yang dilakukan. Bentuk pernyataan while, while( kondisi ){ statement1; statement2; ... statementN; Desktop Programming Module 34 OmahTI Learning Center 2013 } Pernyataan di dalam while loop akan dieksekusi berulang-ulang selama kondisi bernilai benar (true). Contoh, pada kode dibawah ini, int i = 4; while ( i > 0 ){ System.out.print(i); i--; } Contoh diatas akan mencetak angka 4321 pada layar. Perlu dicatat jika bagian i--; dihilangkan, akan menghasilkan pengulangan yang terus menerus (infinite loop). Sehingga, ketika menggunakan while loop atau bentuk pengulangan yang lain, pastikan Anda memberikan pernyataan yang membuat pengulangan berhenti pada suatu kondisi. Berikut ini adalah beberapa contoh while loop, Contoh 1: int x = 0; while (x<10){ System.out.println(x); x++; } Contoh 2: //infinite loop while(true) System.out.println(“hello”); Contoh 3: //no loops //statement ini tidak akan dieksekusi while (false) System.out.println(“hello”); Do – While loop Do – while loop memilki kesamaan seperti while, perulangan akan dilakukan ketika kondisi terpenuhi atau bernilai benar(true). Perbedaan antara do – while dengan while Desktop Programming Module 35 OmahTI Learning Center 2013 adalah pada do – while blok perulangan dikerjakan terlebih dahulu baru kemudian mengecek kondisi, ini berbeda pada while yang mengecek kondisi terlebih dahulu. Bentuk umum do – while, do{ statement1; statement2; ... }while( kondisi); Pernyataan di dalam do-while akan dieksekusi pertama kali, setelah itu mengecek nilai kebenaran dari kondisi. Jika nilai pada kondisi tersebut bernilai true, pernyataan di dalam do – while akan dieksekusi lagi selama nilai pada kondisi bernilai true. Berikut ini beberapa contoh do-while loop: Contoh 1: int x = 0; do { System.out.println(x); x++; }while (x<10); Contoh ini akan memberikan output 0123456789 pada layar. Contoh 2: //infinite loop do{ System.out.println(“hello”); } while (true); Contoh di atas akan melakukan pengulangan terus menerus yang menulis kata “hello” pada layar sebanyak tak terhingga. Contoh 3: //one loop // statement is executed once do { System.out.println(“hello”); Desktop Programming Module 36 OmahTI Learning Center 2013 } while (false); Contoh di atas akan memberikan output hello pada layar sebanyak satu kali. 3) Kontrol pemilihan dan Perulangan bersarang Di dalam Java, semua bentuk kontrol pemilihan dan perulangan dapat dimasukan ke dalam kontrol pemilihan atau perulangan lainnya.Cara ini biasa digunakan untuk menyelelasikan berbagai macam masalah dalam programming. Beberapa contoh penggunaanya If bersarang, Scanner scan = newScanner(System.in); System.out.println("Masukan nilai anda"); int nilai = scan.nextInt(); if (nilai >= 60) { System.out.print("Selamat anda lulus, dengan predikat "); if (nilai >= 90) { System.out.println("sangat baik."); } else { System.out.println("baik."); } } else { System.out.println("Maaf anda tidak lulus."); } For bersarang for (int i = 1; i <= 100; i++) { System.out.print(i + "\t: "); for (int j = 2; j < i; j++) { if (i % j == 0) { System.out.print(j + " "); } } System.out.println(); } 7. Java arrays 1) Apa Itu Array? Pada materi sebelumnya, kita menemukan pendeklarasian variabel secara satu persatu. Dalam penamaan variabel tersebut kita menggunakan nama variabel yang unik untuk setiap variabelnya. Bagaimanakah jika kita membutuhkan beberapa variabel dengan tipe yang sama dan direferensikan dengan nama yang mirip. Desktop Programming Module 37 OmahTI Learning Center 2013 Sebagai contoh kita membutuhkan 5 buah variabel dengan tipe double dengan nama nilai dan hanya dibedakan pada indeksnya saja, pada bab sebelumnya cara yang digunakan adalah : double nilai1; double nilai2; double nilai3; double nilai4; double nilai5; Untuk memfasilitasi kebutuhan tersebut, ada tipe tipe data yang bernama array. Dan jika kita menggunakan array dalam menyimpannya akan direpsentasikan sebagai berikut. Gambar 7.1 : Array representation 2) Pendeklarasian Array Sama seperti pada pendeklarasian sebuah variabel, pendeklarasian array juga mengikuti aturan pendeklarasian variabel, hanya saja pada array penulisan deklasi variabelnya sedikit berbeda. Bentuk umum pendeklarasian array type array-name[ ] = new type[size]; type menentukan tipe data apa yang digunakan array tersebut array-name merupakan variabel array tersebut diikuti dengan tanda [] size merupakan ukuran array yang akan dibuat. new merupakan perintah permintaan alokasi memori Contoh : double nilai[] = new double[5]; Desktop Programming Module 38 OmahTI Learning Center 2013 3) Pengaksesan sebuah elemen array Untuk mengakses sebuah elemen yang ada pada array kita harus merefrensikan array pada indeks keberapa yang akan kita akses. Indeks ini merupakan representasi dari tipe data bilangan bulat, bisa int, byte, ataupun short. Contoh : double nilai[] = new double[5]; nilai[0] = 8.5; nilai[1] = 8.9; nilai[2] = 7.6; nilai[3] = 9.4; nilai[4] = 6.1; Pada contoh di atas kita menginisialisasi variabel array nilai dari indeks 0 hingga 4, perlu diperhatikan bahwa pengindeksan array dalam java dimulai dari indeks 0. Jadi ketika kita membuat array dengan 10 nilai, maka indeksnya dari 0 hingga 9. Jika kita mengetahui nilai dari seluruh anggota array, kita dapat mendeklarasikannya seperti ini : int nilai[] = {8.5, 8.9, 7.6, 9.4, 6.1}; Untuk mendapatkan nilai dari suatu array yang ada pada indeks tertentu kita dapat menggunakan : array-name[index] Contoh mencetak semua anggota elemen array menggunakan perulangan for for(int i = 0; i < nilai.length; i++){ System.out.println(nilai[i]); } Pada contoh tersebut kita akan mencetak semua anggota elemen array nilai. 4) Array Multidimensi Contoh pada bagian sebelumnya merupakan array satu dimensi, selain array satu dimensi ada juga array multidemensi. Array Dua Dimensi Array multi dimensi yang paling umum digunakan dalam pemrograman adalah array dua dimensi, pada array dua dimensi data direpresentasikan sebagai sebuah matriks. Contoh deklarasi array dua dimensi Desktop Programming Module 39 OmahTI Learning Center 2013 int table[][] = new int[2][3]; pada contoh diatas kita mendeklarasikan sebuah array dua dimensi dengan ukuran 3 x 3. Penggunaan array dua dimensi ini sama penggunaanya seperti array satu dimensi, yaitu dengan memanggil berdasarkan indeksnya, tetapi indeks pada array dua dimensi ini ada 2. Untuk lebih jelasnya dapat memperhatikan contoh berikut ini. int row = 2; int columns = 3; int table[][] = new table[2][3]; for(int i = 0 ; i < row; i++){ for(int j = 0; j < columns; j++){ table[i][j] = (i*3)+j+1; System.out.print(table[i][j] + ""); } System.out.println(); } Pada contoh berikut array table akan berisi seperti berikut. Gambar 7.2: Array 2D representation Jadi, nilai dari table[1][2] adalah 6. Desktop Programming Module 40 OmahTI Learning Center 2013 Array Lebih Dari Dua Dimensi Selain array 1 dan 2 dimensi yang telah dijelaskan sebelumnya, di dalam java ada array yang memiliki dimensi lebih dari 2, dan bentuk umum deklarasinya sebagai berikut. type array-name[][]…[] = new type[size-1][size-2]…[size-n]; Cara penggunaannya pun sama dengan array 1 atau dua dimensi. 8. Java method Sejauh yang kita pelajari hingga saat ini, method yang kita gunakan hanya method main() saja, pada bagian ini kita akan mempelajari lebih jauh tentang method dalam Java. Method adalah suatu bagian dari baris kode yang mengerjakan sesuatu sesuai dengan isi dari method tersebut. Suatu method tidak akan berjalan jika method tersebut tidak dipanggil. Method terdiri dari dua bagian, method header dan method body. Method header adalah bagian dimana kita memberitahukan kepada Java apa nama method yang kita buat, apa tipe kembalinya, dan apa saja nilai yang dimasukan kedalam method. Dan method body dimana kita menuliskan isi kode method yang kita buat. Berikut contoh dari sebuah method : int addTen(int number) { int sum = number + 10; return sum; } Method tersebut bernama addTen, dan variabel yang di dalam tanda kurung merupakan variabel yang dimasukan kedalam method. Nilai kembalian dari method tersebut adalah int. Nilai kembalian atau return value adalah nilai yang akan dikembalikan ketika method tersebut dipanggil. Pada contoh tersebut nilai yang akan dikembalikan adalah variabel sum, varibel sum merupakan variabel yang bertipe int. Sum merupakan hasil dari penjumlahan variabel number dengan 10. Dari method tersebut akan dikembalikan suatu nilai yang merupakan penjumlahan number dengan 10. Tipe dari return value pada sebuah method sama dengan tipe data yang ada pada Java, seperti int, double, float, boolean, dan lainnya. Desktop Programming Module 41 OmahTI Learning Center 2013 Terkadang method yang kita buat hanya mengerjakan suatu perintah namun tidak memiliki nilai kembalian, untuk kasus tersebut tipe return value pada method tersebut menggunakan tipe void. Contoh penggunaaan tipe void. void cetak(String teks){ System.out.println(teks); } Pada contoh tersebut, method cetak tidak memiliki nilai kembalian dan hanya mencetak variabel teks. Seperti yang telah disebutkan pada bagian tipe data, String merupakan sebuah tipe data object, artinya ketika suatu variabel bertipe String dideklarasikan, variabel tersebut merupakan sebuah obyek. Dan memiliki beberapa method yang ada pada kelasnya. Kelas dan obyek akan dijelaskan pada materi selanjunya. Untuk menggunakan method yang tersedia pada obyek, bentuk umum yang digunakan adalah : <obyek>.<method>; Contoh penggunaan method pada String. String a = “Hello World”; String b = “Hello OLC”; System.out.println(a.equals(b)); Pada contoh tersebut kita memanggil method equal yang digunakan untuk membandingkan 2 buah String. Untuk mengetahui lebih lanjut method apa saja yang ada pada String, bisa melihat pada Java Documentation. 1. Memanggil Method Method adalah potongan kode yang berisi perintah – perintah yang akan dekerjakan ketika method tersebut dipanggil. Method memudahkan kita dalam menggunakan kode yang dipakai secara berulang-ulang tanpa perlu menulis kembali kode tersebut ketika Desktop Programming Module 42 OmahTI Learning Center 2013 akan digunakan. Sebelum memanggil method, kita harus membuat method terlebih dahulu. Berikut ini adalah contoh pembuatan method. Buat sebuah project dan buat kodenya seperti pada contoh berikut. public class MethodTest { public static void main(String[] args){ } } Kemudian isikan sesuatu pada main method agar kita dapat melihat proses yang terjadi. Contohnya saja kita tambahkan System.out.println(“Hello OLC”); Kemudian kita membuat sebuah method yang bernama sayHello dengan tipe void pada class MethodTest. Sehingga kode kita seperti ini. public class MethodTest { public static void main(String[] args){ System.out.println(“Hello OLC”); } static void sayHello() { System.out.println(“Hello World”); } } Perhatikan bahwa method sayHello memiliki tipe static, static merupakan sebuah tipe yang memperbolehkan suatu method dapat dipanggil tanpa perlu mendefinisikan terlebih dahulu sebuah obyek. Jalankan program tersebut. Selanjutnya setelah kode System.out.println(“Hello OLC”);, kita tambahkan kode sayHello();, sehingga kodenya seperti berikut. Desktop Programming Module 43 OmahTI Learning Center 2013 public class MethodTest { public static void main(String[] args){ System.out.println(“Hello OLC”); sayHello(); } static void sayHello() { System.out.println(“Hello World”); } } Jalankan kembali program tersebut. Dapat dilihat bahwa method sayHello baru akan berjalan ketika dipanggil dalam main method. Dan perlu diingat kembali bahwa main method adalah method pertama kali yang akan dijalankan ketika program berjalan. 2. Pemberian Variabel Dalam Method Membuat method di dalam Java akan sangat berguna jika kita dapat memasukan variabel dalam method tersebut. Contohnya saja ketika kita membutuhkan method yang dapat digunakan untuk mencari nilai tersebesar dari sebuah array yang bertipe integer. Untuk memasukan variabel dalam method di Java, yang harus kita lakukan adalah memberikan variabel di dalam tanda kurung pada method header seperti pada contoh sebelumnya. Berikut contoh penggunaan method yang dapat di berikan variabel. Pertama kita buat terlebih dahulu methodnya, method pada contoh ini digunakan untuk mencari nilai maksimum dari sebuah array satu dimensi yang bertipe integer. static int max(int a[]){ int temp = a[0]; for(int i=1; i < a.length; i++){ if(temp < a[i]) temp = a[i]; } return temp; } Kemudian kita panggil dalam main method sehingga menjadi seperti ini. Desktop Programming Module 44 OmahTI Learning Center 2013 public static void main(String[] args){ int[] nilai = {80, 68, 75, 81, 60, 77, 91, 85, 86, 93, 93, 94, 89}; System.out.println(“Nilai maksimumnya adalah ”+ max(nilai)}; } Method pada Java juga mendukung lebih dari satu variabel yang dimasukan kedalam method, variabelnyapun dapat berbeda – beda. Penulisan variabel yang akan dimasukan kedalam method dituliskan pada tanda kurung yang berada pada method header, dan dipisahkan dengan tanda koma “ , “ untuk setiap variabel. Contohnya. static int luas(int panjang, int lebar){ return panjang * lebar; } 9. Pengenalan Object Oriented Programming Pada Java Object Oriented Programming (OOP) berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa obyek disekitar kita seperti mobil, singa, manusia dan seterusnya. Obyek ini dikarakterisasi oleh atribut dan tingkah lakunya. Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa. Coba perhatikan tabel dibawah ini sebagai contoh perbandingan : Desktop Programming Module 45 OmahTI Learning Center 2013 Objek Atribut Tingkah Laku Mobil Tipe dari transmisi Berbelok manufaktur Mengerem Warna Singa Mempercepat Berat mengaum Warna Tidur Lapar atau tidak lapar Berburu Jinak atau liar Tabel 9.1: Example of Real-life Objects . Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method. Data dan method dapat digunakan dalam pemrograman game atau perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. Contohnya adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang untuk anak anak. 1. Class dan Object 1) Pemahaman Class dan Objek Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang stukturnya mirip dengan obyek pada dunia nyata. Setiap obyek dibangun dari sekumpulan data (atribut) yang disebut variabel untuk menjabarkan karakteristik khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek. Bisa dikatakan bahwa obyek adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan method yg berhubungan. Variabel dan method dalam obyek Java secara Desktop Programming Module 46 OmahTI Learning Center 2013 formal diketahui sebagai variabel instance dan method instance. Hal ini dilakukan untuk membedakan dari variabel class dan method class, dimana akan dibahas kemudian. Class adalah sturktur dasar dari OOP. Class terdiri dari dua tipe dari anggota dimana disebut dengan field (attribut/properti) dan method. Field merupakan tipe data yang didefinisikan oleh class, sementara method merupakan operasi. Sebuah obyek adalah sebuah instance (keturunan) dari class. Untuk dapat membedakanantara class dan obyek, mari kita mendiskusikan beberapa contoh berikut ini. Kita memiliki sebuah class mobil dimana dapat digunakan untuk medefinisikan beberapa obyek mobil. Pada tabel dibawah, mobil A dan mobil B adalah obyek dari class mobil. Class memiliki field nomor, plat, warna, manufaktur dan kecepatan yang diisi dengan nilai pada obyek mobil A dan mobil B. Mobil juga dapat berakselerasi, berbelok dan melakukan rem. Class Mobil Variable Objek Mobil A Objek Mobil B Nomor Plat ABC 111 XYZ 123 Warna Biru Merah Manufaktur Mitsubishi Toyota Kecepatan 50 km/h 100 km/h Instance Method Akselerasi Method Instance Method Belok Method Rem Table 9.2: Contoh class mobil dan object-object nya Ketika diinisialisi, setiap obyek mendapat satu set variabel yang baru. Bagaimanapun, implementasi dari method dibagi diantara objek pada class yang sama. Class menyediakan keuntungan dari reusability. Programmer perangkat lunak dapat menggunakan sebuah kelas beberapa kali untuk membuat banyak objek. Desktop Programming Module 47 OmahTI Learning Center 2013 2) Deklarasi Atribut Dalam pendeklarasian atribut, kita tuliskan : <modifier><type><name> [= <default_value>]; Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class. Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan. Contohnya, Anda tidak mungkin menginginkan untuk menggunakan tipe data integer untuk nama siswa, atau tipe data string pada nilai siswa. Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord : name - String address - String age - Int math grade - double english grade - double science grade - double average grade – double Anda dapat menambahkan informasi lain jika diperlukan. Instance Variable Jika kita telah menuliskan seluruh atribut yang akan diisikan pada class, selanjutnya kita akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut – atribut tersebut adalah unik untuk setiap object (dalam hal ini untuk setiap siswa), maka kita harus mendeklarasikannya sebagai instance variable : Sebagai contoh : public class StudentRecord { private String name; private String address; private int age; Desktop Programming Module 48 OmahTI Learning Center 2013 private double mathGrade; private double englishGrade; private double scienceGrade; private double average; //area penulisan kode selanjutnya } dimana, private disini menjelaskan bahwa variabel tersebut hanya dapat diakses oleh class itu sendiri. Object lain tidak dapat menggunakan variabel tersebut secara langsung. Kita akan membahas tentang kemampuan akses pada pembahasan selanjutnya. Class Variable atau Static Variables Disamping instance variable, kita juga dapat mendeklarasikan class variable atau variable yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua object di class yang sama. Anggaplah kita menginginkan jumlah dari siswa yang dimiliki dari seluruh class, kita dapat mendeklarasikan satu static variable yang akan menampung nilai tersebut. Kita beri nama variabel tersebut dengan nama studentCount. Berikut penulisan static variable : public class StudentRecord { //area deklarasi instance variables private static int studentCount; //area penulisan kode selanjutnya } Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut adalah static. Maka keseluruhan kode yang dibuat terlihat sebagai berikut : public class StudentRecord { private String name; private String address; private int age; Desktop Programming Module 49 OmahTI Learning Center 2013 private double mathGrade; private double englishGrade; private double scienceGrade; private double average; private static int studentCount; //area penulisan kode selanjutnya } 3) Deklarasi Constructor Telah tersirat pada pembahasan sebelumnya, Constructor sangatlah penting pada pembentukan sebuah object. Constructor adalah method dimana seluruh inisialisasi object ditempatkan. Berikut ini adalah property dari Constructor : 1. Constructor memiliki nama yang sama dengan class 2. Sebuah Constructor mirip dengan method pada umumnya, namun hanya informasi – informasi berikut yang dapat ditempatkan pada header sebuah constructor, scope atau identifikasi pengaksesan (misal: public), nama dari konstuktor dan parameter. 3. Constructor tidak memiliki return value 4. Constructor tidak dapat dipanggil secara langsung, namun harus dipanggil dengan menggunakan operator new pada pembentukan sebuah class. Untuk mendeklarasikan constructor, kita tulis, <modifier><className> (<parameter>*) { <statement>* } Default Constructor Setiap class memiliki default constructor. Sebuah default constructor adalah constructor yang tidak memiliki parameter apapun. Jika sebuah class tidak memiliki constructor apapun, maka sebuah default constructor akan dibentuk secara implisit : Desktop Programming Module 50 OmahTI Learning Center 2013 Sebagai contoh, pada class StudentRecord, bentuk default constructor akan terlihat seperti dibawah ini : public StudentRecord() { //area penulisan kode } Overloading Constructor Seperti telah kita bahas sebelumnya, sebuah constructor juga dapat dibentuk menjadi overloaded. Dapat dilihat pada 4 contoh sebagai berikut : public StudentRecord(){ //area inisialisasi kode; } public StudentRecord(String temp){ this.name = temp; } public StudentRecord(String name, String address){ this.name = name; this.address = address; } public StudentRecord(double mGrade, double eGrade, double sGrade){ mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade; } Menggunakan Constructor Untuk menggunakan constructor, kita gunakan kode – kode sebagai berikut : public static void main( String[] args ) { //membuat 3 objek Desktop Programming Module 51 OmahTI Learning Center 2013 StudentRecord annaRecord=new StudentRecord("Anna"); StudentRecord beahRecord=new StudentRecord("Beah","Philippines"); StudentRecord crisRecord=new StudentRecord(80,90,100); //area penulisan kode selanjtunya } Sebelum kita lanjutkan, mari kita perhatikan kembali deklarasi variabel static studentCount yang telah dibuat sebelumnya. Tujuan deklarasi studentCount adalah untuk menghitung jumlah object yang dibentuk pada class StudentRecord. Jadi, apa yang akan kita lakukan selanjutnya adalah menambahkan nilai dari studentCount setiap kali setiap pembentukan object pada class StudentRecord. Lokasi yang tepat untuk memodifikasi dan menambahkan nilai studentCount terletak pada constructor-nya, karena selalu dipanggil setiap kali objek terbentuk. Sebagai contoh : public StudentRecord(){ //letak kode inisialisasi studentCount++; //menambah student } public StudentRecord(String temp){ this.name = temp; studentCount++; //menambah student } public StudentRecord(String name, String address){ this.name = name; this.address = address; studentCount++; //menambah student } public StudentRecord(double mGrade, double eGrade, double sGrade){ mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade; studentCount++; //menambah student } Desktop Programming Module 52 OmahTI Learning Center 2013 Pemanggilan Constructor Dengan this() Pemanggilan constructor dapat dilakukan secara berangkai, dalam arti Anda dapat memanggil constructor di dalam constructor lain. Pemanggilan dapat dilakukan dengan referensi this(). Perhatikan contoh kode sebagai berikut : public StudentRecord(){ this("some string"); } public StudentRecord(String temp){ this.name = temp; } public static void main( String[] args ) { StudentRecord annaRecord = new StudentRecord(); } Dari contoh kode diatas, pada saat baris ke 13 dipanggil akan memanggil constructor dasar pada baris pertama. Pada saat baris kedua dijalankan, baris tersebut akan menjalankan constructor yang memiliki parameter String pada baris ke-6. Beberapa hal yang patut diperhatikan pada penggunaan this() : 1. Harus dituliskan pada baris pertama pada sebuah constructor 2. Hanya dapat digunakan pada satu definisi constructor. Kemudian metode ini dapat diikuti dengan kode – kode berikutnya yang relevan 4) 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. Desktop Programming Module 53 OmahTI Learning Center 2013 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; Membuat Package Untuk membuat package, dapat dilakukan dengan menuliskan : package <packageName>; Anggaplah kita ingin membuat package dimana class StudentRecord akan ditempatkan bersama dengan class – class yang lain dengan nama package schoolClasses. Langkah pertama yang harus dilakukan adalah membuat folder dengan nama schoolClasses. Salin seluruh class yang ingin diletakkan pada package dalam folder ini. Kemudian tambahkan kode deklarasi package pada awal file. Sebagai contoh : Desktop Programming Module 54 OmahTI Learning Center 2013 package schoolClasses; public class StudentRecord { private String name; private String address; private int age; } Package juga dapat dibuat secara bersarang. Dalam hal ini Java Interpreter menghendaki struktur direktori yang mengandung class eksekusi untuk disesuaikan dengan struktur package. 2. Access Modifiers Pada saat membuat, mengatur properties dan class methods, kita ingin untuk mengimplementasikan beberapa macam larangan untuk mengakses data. Sebagai contoh, jika Anda ingin beberapa atribut hanya dapat diubah hanya dengan method tertentu, tentu Anda ingin menyembunyikannya dari object lain pada class. Di JAVA, implementasi tersebut disebut dengan access modifiers. Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan default. 3 tipe akses pertama tertulis secara ekplisit pada kode untuk mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe default, tidak diperlukan penulisan keyword atas tipe. 1) Akses Default (Package Accessibility) Tipe ini mensyaratkan bahwa hanya class dalam package yang sama yang memiliki hak akses terhadap variabel dan methods dalam class. Tidak terdapat keyword pada tipe ini. Sebagai contoh : public class StudentRecord { //akses dasar terhadap variabel int name; //akses dasar terhadap metode Desktop Programming Module 55 OmahTI Learning Center 2013 String getName(){ return name; } } Pada contoh diatas, variabel nama dan method getName() dapat diakses dari object lain selama object tersebut berada pada package yang sama dengan letak dari file StudentRecord. 2) Akses Public Tipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan luar class. Object apapun yang memiliki interaksi pada class memiliki akses penuh terhadap member dari tipe ini. Sebagai contoh : public class StudentRecord { //akses dasar terhadap variabel public int name; //akses dasar terhadap metode public String getName(){ return name; } } Dalam contoh ini, variabel name dan method getName() dapat diakses dari object lain. 3) Akses Protected Tipe ini hanya mengijinkan class member untuk diakses oleh method dalam class tersebut dan elemen – elemen subclass. Sebagai contoh : public class StudentRecord { //akses pada variabel Desktop Programming Module 56 OmahTI Learning Center 2013 protected int name; //akses pada metode protected String getName(){ return name; } } Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class dan subclass dari class StudentRecord. Definisi subclass akan dibahas pada bab selanjutnya. 4) Akses Private Tipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class dimana tipe ini dibuat. Sebagai contoh : public class StudentRecord { //akses dasar terhadap variabel private int name; //akses dasar terhadap metode private String getName(){ return name; } } Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class tersebut. Desktop Programming Module 57 OmahTI Learning Center 2013 10. Referensi M. Ma’as, Rafdi, 2011, Modul Programming, Yogyakarta : Techno Smart Schildt, Herbert, 2003, Java™ 2: A Beginner’s Guide, Second Edition. USA : McGraw-Hill Raharjo, B. Heryanto, I. dan Haryono, A., 2009, Mudah Belajar Java.Bandung : Informatika Desktop Programming Module 58