1 Pengenalan Java

Overview Bab ini akan menjelaskan tentang dasar-dasar pemrograman menggunakan bahasa Java. Penjelasan tentang karakteristik bahasa Java, identifier, tipe data, dan operator pada Java. Tujuan 1. Mengaplikasikan dasar-dasar pemrograman menggunakan Java 2. Menggunakan identifier dan tipe data pada Java 1.1 Sejarah Java

Pada tahun 1991, Sun dipimpin Patric Naughton dan James Gosling ingin merancang bahasa computer untuk perangkat consumer seperti cable TV Box. Karena perangkat itu tidak mempunyai banyak memori, bahasa harus berukuran kecil dan menghasilkan kode program yang liat. Juga karena manufaktur-manufaktur berbeda memilih pemroses-pemroses yang berbeda, maka bahasa harus bebas dari arsitektur manapun. Proyek ini diberi nama kode “Green”. Kebutuhan untuk kecil, liat dan kode netral terhadap platform mengatur tim mempelajari implementasi pascal yang pernah dicoba. Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portable yang menghasilkan kode intermediate untuk mesin hipotetis. Mesin ini sering disebut Virtual machine. Kode antara ini kemudian dapat digunakan disembarang mesin yang memiliki interpreter. Proyek Green menggunakan virtual machine untuk mengatasi isu utama netral terhadap arsitektur mesin. Karena orang-orang di proyek Green berbasis C++ bukan Pascal maka kebanyakan Sintaks diambil dari C++, serta mengadopsi orientasi obyek bukan procedural. Mulanya bahasa yang diciptakan diberi nama “Oak” kemudian diganti “Java” karena telah ada bahasa pemrograman bernama “Oak” Produk pertama proyek Green adalah “*7”, sebuah kendali jauh yang sangat cerdas. Karena pasar masih belum tertarik dengan produk consumer cerdas maka proyek Green harus menemukan pasar lain dari teknologi yang diciptakan. Kemudian, penerapan mengarah menjadi teknologi yang berperan di web. Pada 1995, Netscape memutuskan membuat browser yang dilengkapi dengan Java. Setelah itu diikuti oleh IBM, Symantec, Inprise, bahkan Microsoft. Setelah itu Java mulai didengar. Dengan strategi terbukanya, banyak industri yang meliriknya. Bersamaan itu disusul berbagai universitas Amerika, Jepang, dan Eropa yang mengubah pengenalan bahasa pemrograman komputer menjadi Java, meninggalkan C++. Java lebih sederhana dan telah mengakomodasikan hampir seluruh fitur penting bahasa-bahasa pemrograman yang ada semenjak perkembangan komputasi modern. Java pertama kali diluncurkan sebagai bahasa pemrograman umum (general purpose programming language) dengan kelebihan dia bisa dijalankan di web browser sebagai applet. Sejak awal, para pembuat Java telah menanamkan visi mereka ke dalam Java untuk small embedded customer device)seperti TV, telepon, radio, dan sebagainya supaya dapat berkomunikasi satu sama lain. Langkah pertama yang diambil oleh Sun Microsistem adalah dengan membuat JVM (Java Virtual machine) yang kemudian diimplementasikan dalam bentuk JRE (Java Runtime Environment). JVM adalah lingkungan tempat eksekusi program Java berlangsung di mana para obyek saling berinteraksi satu dengan yang lainnya. Virtual machine inilah yang menyebabkan Java mempunyai kemampuan penanganan memori yang lebih baik, keamanan yang lebih tinggi serta portabilitas yang besar. Apabila kita hanya ingin menjalankan program Java, maka kita cukup memiliki JRE saja. Tapi seandainya kita 1

ingin mengembangkan perangkat lunak sendiri, JRE saja tidak cukup. Untuk lebih meningkatkan produktivitas pengembang perangkat lunak, Sun juga meluncurkan SDK (Standard Development Kit) yang berisi kakas dan API untuk membuat program aplikasi berbasis Java. Pada tahun 1999 Sun meluncurkan J2EE (Java 2 Enterprise Edition) sebagai framework untuk membuat aplikasi enterprise berskala besar. Pada tahun 2001, Sun meluncurkan J2ME yang kelak menjadi salah satu standar pemrograman di dalam PDA maupun handphone. 1.2 Karakteristik Bahasa Java

1. Sederhana, semudah C dan seampuh C++: berlawanan dengan anggapan orang-orang bahwa bahasa Java sulit untuk dipelajari, Java gampang untuk dipelajari terutama untuk orang yang sudah mengenal pemrograman tapi belum terlalu terikat pada paradigma pemrograman prosedural. Tentu saja ini berarti bahwa kita harus siap mempelajari salah satu teknologi yang berkembang paling cepat di dunia dalam dua tahun terakhir ini dengan banyak membaca tentunya baik dari buku maupun melalui web. 2. Sangat berorientasi obyek (OOP) dengan implementasi yang sangat baik sehingga kita bukan hanya belajar bagaimana membuat program yang baik (reusable, scalable, dan maintanable) tetapi juga kita belajar bagaimana cara berfikir yang baik untuk mengenali struktur masalah yang sedang kita hadapi dan memecahkannya secara sistematis dengan pola-pola tertentu (patterns OpenPlatform, Write Once Run Anywhere (WORA), portable atau multiplatform, program yang kita buat dapat dijalankan di Windows, Linux/Unix, Solaris, dan Macintosh tanpa perlu diubah maupun di kompilasi ulang. Java adalah juga bahasa yang paling sesuai digunakan bersama dengan XML yang membuat data menjadi portable, ini karena kelahiran XML tidak terlepas dari dukungan parser-parser berbahasa Java. 3. Arsitekturnya yang kokoh dan pemrograman yang aman. Dalam Java program yang kita buat tidak mudah untuk “hang” karena konflik pada memori biasanya diselesaikan dengan mengumpulkan obyek-obyek yang sudah tak terpakai lagi secara otomatis oleh garbage collector. Penanganan kesalahan juga dipermudah dalam Java dengan konsep Exception. 4. Bukan sekedar bahasa tapi juga platform sekaligus arsitektur. Java mempunyai portabilitas yang sangat tinggi. Ia dapat berada pada smartcard, pager, POS (Point of Service), handphone, PDA, palm, TV, Embedded device (PLC, micro controller), laptop, pc, dan bahkan server). Menyadari akan hal ini Sun membagi arsitektur Java membagi tiga bagian, yaitu: a. Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi. Merupakan superset dari Standar Java b. Standard Java (J2SE), ini adalah yang biasa kita kenal sebagai bahasa Java, dan merupakan fokus kita sekarang. c. Micro Java (J2ME) merupakan subset dari J2SE dan salah satu aplikasinya yang banyak dipakai adalah untuk wireless device/mobile device 5. Program Java dijalankan menggunakan interpreter melalui Java Virtual machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda. 6. Fitur-fitur utama yang lain: a. Mendukung multithreading. b. Selalu memeriksa tipe obyek pada saat runtime. c. Mempunyai automatic garbage collection untuk membersihkan obyek yang tidak terpakai dari memori 2

d. Mendukung exception sebagai salah satu cara penanganan kesalahan 1.3 Bagaimana Java Bekerja?

Lingkungan pemrograman pada Java menggunakan compiler sekaligus interpreter agar dapat berjalan pada platform yang berbeda. Java compiler melakukan kompilasi pada source code (.java) menjadi Java bytecodes (.class) seperti ditunjukkan oleh Gambar 2.1 berikut.

Gambar 1.1 Mekanisme Kompilasi dan Eksekusi Program Java Java bytecodes merupakan instruksi mesin yang tidak spesifik terhadap processor. Oleh karena itu, program Java hasil kompilasi akan dapat dijalankan pada berbagai platform sistem komputer dengan menggunakan Java Virtual machine (JVM), "write once, run anywhere" (lihat Gambar 2.2). JVM disebut juga bytecodes interpreter atau Java runtime interpreter.

Gambar 1.2 Konsep Write Once, Run Anywhere pada Java 1.4 Platform Java

Platform dapat diartikan sebagai lingkungan perangkat keras atau perangkat lunak di mana program dijalankan. Umumnya platform dinyatakan berdasarkan nama sistem operasi yang digunakan, misalnya Windows 2000, Linux, Solaris, atau MacOS. Tidak seperti bahasa pemrograman lainnya, platform Java mempunyai dua komponen, yaitu: 1. Java Virtual machine (Java VM) Merupakan fondasi untuk platform Java yang dapat digunakan di berbagai platform perangkat keras. 2. Java Application Programming Interface (Java API) Kumpulan komponen-komponen perangkat lunak siap pakai (ready-made software components) untuk berbagai keperluan penulisan program, seperti graphical user interface (GUI). Gambar 2.3. berikut memperlihatkan gambaran program yang berjalan di atas di kedua 3

yaitu aplikasi stand alone dan applets. yaitu aplikasi untuk program multitiers. Sedangkan applets adalah aplikasi yang dijalankan melalui web browser ataupun applet viewer. 4. 5. 3. 4.5 Aplikasi Java Ada dua tipe aplikasi pada Java yang umumnya sering ditulis. kelas. paket. Identifier di Java Selain kedua tipe aplikasi tersebut. yaitu aplikasi di sisi server yang ditulis dalam bahasa script yang melekat pada halaman HTML untuk memberikan efek tampilan pada web browser. Adapun tatacara penamaan identifier: 1.3 Platform Java 1. Gambar 2. Karakter berikutnya dapat berupa huruf atau angka 0 sampai 9. method. Applets tidak dapat menjalankan program lain pada komputer yang menjalankan applets.6 Applets melakukan extends dari class applets. Java Servlet. huruf kapital dan kecil dibedakan 2. Namun sebisa mungkin diawali dengan huruf karena mungkin identifier dengan awalan underscore dan ($) digunakan unruk pemrosesan internal dan file import 4. Java Server Pages. Simbol-simbol seperti „+‟ dan spasi tidak dapat digunakan 4 . Identifier yang diberikan oleh pemrogram tidak boleh sama dengan keyword yang ada di Java 3. misalnya dengan menggunakan fasilitas Swing. 1. yaitu aplikasi yang diperuntukan bagi perangkat genggam (handheld devices). Case sensitive. yaitu aplikasi seperti applets tetapi dijalankan di sisi server. Applets tidak mempunyai fungsi main(). Dimulai dengan huruf atau underscore (garis bawah) atau tanda ($). Java Beans dan Enterprise Java Beans. 2. 3. Aplikasi berbasis Windows. dan interface untuk unik mengidentifikasikan bagi kompilator dan memberikan nama yang berarti bagi pemrogram. Java Micro Edition. ada beberapa tipe aplikasi Java yang lain yaitu: Identifier adalah nama yang diberikan kepada variabel. Applets mempunyai beberapa batasan keamanan.komponen platform Java. seperti tidak diperbolehkan membaca atau menulis file pada sistem komputer. 1. 2. Aplikasi stand alone merupakan aplikasi yang dijalankan langsung di atas platform Java. seperti telepon genggam. Perbedaan applets dengan Java stand alone adalah: 1.

Satu untuk tipe boolean yang berisi nilai logika: true/false Tipe data integer Tipe data integer memiliki jangkauan nilai sebagai berikut: Tabel 1. long .Dua untuk tipe angka pecahan (floating point): float. Tipe sederhana tidak diturunkan dari tipe lain.1. double .Satu untuk tipe karakter.8 Tipe Data di Java Tipe data dalam Java dibagi dalam dua kategori: 1. Daftar keyword Java adalah sebagai berikut: Tabel 1. Sederhana 2.8. int. short.Empat tipe adalah untuk bilangan bulat: byte. Komposit 1.1 Keyword dalam Java abstract do implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while boolean double break byte case catch char class continue default else extends false final finally float for if 1. Tipe ini adalah tipe data primitif. yaitu char . Terdapat delapan tipe data primitif di Java: .7 Keyword di Java Keyword adalah identifier yang digunakan Java untuk suatu tujuan khusus.1 Tipe data sederhana Tipe data sederhana merupakan tipe inti.1 Jangkauan nilai integer Jangkauan Panjang Integer Tipe data Nilai 7 8 bit byte -2 to 27-1 16 bit short -215 to 215-1 5 .

Angka literal bertipe float berakhiran F.535. akar persamaan. seperti berikut: Tabel 1.79769e+308 Masing-masing tipe data floating point memiliki kebutuhan memori yang berbeda. Terdapat pula beberapa barisan escape untuk karakter Unicode yang spesial.32 bit 64 bit int long -231 to 231-1 -263 to 263-1 Pada kebanyakan situasi. Keakuratan nilai untuk tipe data floating point adalah sebagai berikut: Tabel 1. Untuk data yang berukuran besar.14F sedangkan kalau tidak diberi akhiran F akan dipandang sebagai bertipe double. Himpunan karakter ASCII dipandang sebagai bagian dari Unicode dan ditempatkan sebagai 256 karakter pertama dari Unicode. sedangkan tipe data double memerlukan 64 bit sebagai double precision. dimulai dari nilai byte 0 sampai 65.3 Karakter Unicode spesial Barisan Escape Nama Nilai Unicode \b Backspace \u008 \t Tab \u009 \n Linefeed \u00a \r Carriage return \u00d \” Petik ganda \u0022 \‟ Petik tunggal \u0027 \\ Backslash \u005c 6 . tipe int paling banyak dipakai.536 karakter.2 Presisi nilai float Panjang Float Tipe data Nilai terbesar 32 bit Float 3. dan sebagainya. Literal dari char harus berada di antara single quotes („ „) Contohnya : „a‟ huruf a „\t‟ karakter tab Unicode dirancang untuk menangani semua karakter di dunia dalam kode 2 byte. Presisi float kebanyakan tidak memadai untuk banyak aplikasi komputasi. seperti perhitungan kosinus. Nama double mengacu pada presisinya yang sebesar dua kali dibandingkan float. digunakan tipe data long. Tipe data float memerlukan 32 bit sebagai single-precision. Java mengimplementasikan standar himpunan tipe dan operator titik mengambang IEEE-754. Kode 2 byte memungkinkan 65. Tipe data Floating Point Tipe data ini digunakan untuk perhitungan yang melibatkan bilangan pecahan. contoh 3.40282e+38 64 bit Double 1. Tipe short dan byte terutama digunakan untuk aplikasi khusus yang menangani file level rendah. Tipe data Char Tipe data char merupakan tipe data yang direpresentasikan dengan 16-bit Unicode character.

mendeklarasikan variabel truth sebagai tipe data boolean dan memberikan nilai true 1. bukan sebagai array of character. dan interface. Tipe ini dapat berupa array. Contoh. kelas.8.2 Tipe data komposit Tipe data komposit merupakan tipe data yang disusun dari tipe data sederhana atau tipe komposit lain yang sudah ada.9 Operator di Java Operator unary: Tabel 1. 1..5 Operator aritmatika Simbol Deskripsi + * / % Menambahkan dua buah nilai Pengurangan dua buah nilai Perkalian dua buah nilai Pembagian dua buah nilai Sisa pembagian dua buah nilai Java memiliki beberapa jenis operator di antaranya: - Operator relasi: 7 . contoh: String s=”Saya makan nasi”. string. nilai y akan berisi 6 dan x berisi 6 karena nilai x akan ditambahkan satu dahulu baru kemudian dimasukkan ke variabel y..Tipe data Boolean Tipe data boolean memiliki 2 literal yaitu : true dan false. pada kasus di atas nilai y akan berisi 5 dan nilai x akan berisi 6 karena nilai y akan mengambil nilai x dahulu setelah itu baru nilai x ditambahkan satu. Operator aritmatika: Nama Operator Penambahan Pengurangan Perkalian Pembagian Sisa bagi Tabel 1. Khusus untuk String pada Java dikenali sebagai kelas. berbeda kasusnya pada contoh di bawah ini: int x = 5. int y = ++x. String pada Java diapit oleh tanda petik ganda (“.. int y = x++. statement : boolean truth = true.. pada kasus di atas.4 Operator unary Nama Operator Simbol Definisi Increment ++ Akan menambahkan nilai sejumlah satu Decrement -Akan mengurangi nilai sejumlah satu Contoh penggunaan: int x = 5.”).

7 Operator boolean Simbol Deskripsi && AND || OR ^ XOR ! NOT 8 .Tabel 1.6 Operator relasi Simbol Deskripsi < Kurang dari > Lebih dari <= Kurang dari atau sama dengan >= Lebih dari atau sama dengan == Sama dengan != Tidak sama dengan Operator boolean: Tabel 1.

Jika tidak terpenuhi. 9 .println(“Bilangan ganjil”). } } } 2. Sintaks if Sintaks if digunakan untuk menyatakan alur percabangan dengan pengecekan kondisi. Sintaks if-else. 1. Mampu menggunakan flow control percabangan pada Java 2. break.2 Flow Control Overview Bab ini akan menjelaskan tentang flow control pada Java. default : statements. terdapat beberapa jenis sintaks untuk alur percabangan. yakni percabangan dan pengulangan. break. Variabel yang bisa dicek pada sintaks switch adalah variabel bertipe int. Mampu menggunakan flow control pengulangan pada Java 2. Pada Java. char dan boolean.println(“Bilangan genap”): } else { System. maka aksi tertentu akan dilakukan. Jika ditemukan nilai yang cocok dengan variabel yang dicek.out. if (i%2==0){ System. akan dijalankan aksi pada default. case constant2 : statements.out. Jika tidak ada kondisi yang terpenuhi. Flow control yang dasar pada pemrograman ada dua.1 Percabangan pada Java Percabangan merupakan sebuah alur pemilihan berdasarkan kondisi tertentu. Jika suatu kondisi yang dicek terpenuhi. Sintaks switch sebagai berikut : switch (expression) { case constant1 : statements. maka dilakukan aksi yang pada case yang bersesuaian dengan nilai tersebut. maka akan dilakukan pengecekan kondisi pada else if berikutnya. sebagai berikut : if (boolean expression) { statement or block } else if (boolean expression) { statement or block } else { statement or block } Contohnya: public class CobaIf { public static void main(String[] args) { int i = 3. maka akan dilakukan aksi pada else-nya. Jika tidak ditemukan nilai yang cocok. Tujuan 1. Sintaks switch Sintaks switch digunakan untuk menyatakan alur percabangan dengan pengecekan pada sebuah nilai variabel.

1.break.break. Pengecekan kondisi dilakukan sebelum memasuki pengulangan.break. case 10: System.println(“November”).2 Perulangan pada Java Perulangan adalah sebuah alur yang memungkinkan satu atau beberapa proses dilakukan beberapa kali.out.println(“Januari”).break. case 3: System.break. case 9: System. Perulangan while Sintaks while digunakan untuk melakukan pengulangan selama kondisi tertentu terpenuhi.out. default: System. } } } Pada kode di atas.println(“Mei”). } } } 2.break.out.out. Sintaks looping while sebagai berikut : while (boolean testexpr) { 10 .i++) { System.println(i). Sintaks for sebagai berikut : for (init_expr.out.break.boolean testexpr.println(“Juli”).out. Perulangan akan dilakukan mulai dari nilai tertentu hingga nilai tertentu dicapai.println(“Agustus”).i<10. Perulangan for Sintaks for digunakan untuk melakukan pengulangan sejumlah nilai tertentu.println(“September”).alter_expr) { statement or block } Contoh penggunaan sintaks for adalah sebagai berikut: public class ContohFor { public static void main(String[] args) { for (int i=0.println(“Juni”).println(“April”).out.break. case 12: System.break.out. case 6: System. case 11: System.println(“Desember”). case 7: System. Beberapa sintaks perulangan yang ada di Java antara lain sebagai berikut.println(“Februari”). case 2: System.out. case 8: System. sehingga ada kemungkinan sebuah pengulangan tidak dilakukan sama sekali. Nilai variabel i mulai dari 1 kemudian setiap iterasi ditambahkan 1 (i++) hingga bernilai 10.println(“Salah input”). program akan mengulang proses mencetak nilai variabel i di layar angka.break. switch(x){ case 1: System.println(“Oktober”). case 4: System.break. 2.break.out.out. } Contohnya public class CobaSwitch { public static void main(String[] args) { int x = 7.out.break.out.out. case 5: System.break.println(“Maret”).

..while adalah sebagai berikut: public class ContohDoWhile { public static void main(String[] args) { int i = 0.out.while digunakan seperti pada sintaks while. do { System.while loop. Sintaks do.. while (i<10) { System.. 3.println(i). } } 11 .out.while adalah di akhir sehingga proses pengulangan pasti akan dilakukan minimal sekali. } while (i<10). Perulangan do. i++... } } } Pada kode di atas. sebagai berikut do { statement or block } while (boolean testexpr) Contoh penggunaan sintaks do..... i++.. Proses akan diulangi selama nilai i<10. program akan mengulang proses mencetak nilai variabel i di layar angka.statement or block } Contoh penggunaan sintaks while adalah sebagai berikut: public class ContohWhile { public static void main(String[] args) { int i = 0...println(i)..while Sintaks do. Perbedaannya adalah pengecekan kondisi pada do..

hal ini diimplementasikan dengan access specifier. Mampu membuat atribut bertipe obyek di Java 3. Mampu membuat kelas dan obyek 2. <object name> = new <class name>(). Penjelasan tentang karakteristik kelas dan obyek. Access Specifiers di dalam Java terdiri dari : o public : kelas dapat diakses dari manapun termasuk dari kelas lain dan kelas-kelas yang berada dalam package yang berbeda o private : kelas dapat diakses oleh anggota kelas itu sendiri. sehingga class yang sudah dibuat akan dibuat obyeknya atau diinstansiasi. Enkapsulasi. Fitur Abstraksi yaitu mengkarakteristikan obyek yaitu dengan pemberian atribut pada suatu obyek. Akan dijelaskan juga tentang cara pengaksesan komponen kelas. Mampu menggunakan array pada Java 3. serta cara pembuatan dan pendeklarasian kelas di dalam Java. o protected : kelas dapat diakses oleh kelas turunan o default : kelas dapat diakses dari manapun tetapi harus berada dalam package yang sama. dan Polymorphism. Kelas mempunyai 2 komponen yaitu Atribut dan Method.1 Kelas dan Obyek Obyek merupakan dasar dari struktur Pemograman Berorientasi Obyek (OOP). hal ini akan diimplementasikan dengan pembuatan kelas (class). Pewarisan. Sedangkan fitur Enkapsulasi digunakan untuk menyembunyikan informasi atau detil dari obyek yang tidak penting. cara pembuatan obyek dari kelas adalah : <class name> <object name>. komponen kelas. Pembuatan kelas di dalam java : class <classname> { //declaration of data member //declaration of methods } Pembuatan kelas lengkap dengan access specifier class <classname> { <access specifier> <deklarasi atribut> <access specifier> <deklarasi method> } Karena dasar pemrograman OOP adalah obyek. Tujuan 1. Fitur dari OOP adalah Abstraksi. 12 .3 Kelas dan Obyek Overview Bab ini akan menjelaskan tentang dasar Pemrograman Berorientasi Obyek yaitu Kelas dan Obyek.

Deklarasi method main : public static void main(String[] args) { //code for the main method } Berikut adalah contoh pembuatan kelas dan obyek secara lengkap. System.price=price. } } 3.Untuk menjalankan program dibutuhkan sebuah method main().out. this. javabook.println("Books Price : "+price). Method ini mempunyai nama yang sama dengan nama kelas tempat konstruktor dideklarasikan. berikut dengan main method-nya class book { int price. int pages. Method main() dapat dideklarasikan di kelas manapun tetapi nama kelas tempat method main() berada harus sama dengan nama file .pages=pages.println("Books Information"). Konstruktor biasanya digunakan untuk memberikan nilai pada atribut ketika obyek dibuat dari kelas. } public void show() { System. Sintaks konstruktor adalah : public class <class name> { <constructor name same with class name>(). System.out.set(60000.100). javabook.println("Number of pages : "+pages).java nya. } 13 .show(). } } public class MainBook { public static void main(String[] args) { book javabook=new book().int pages) { this. Konstruktor tidak mengembalikan nilai dan tidak dapat dideklarasikan sebagai static.2 Konstruktor Konstruktor merupakan method yang akan dieksekusi secara otomatis ketika sebuah obyek dibuat.out. public void set(int price.

3.println("Name : "+EmpName). System. String EmpPosition. import java.Show()... package new. tidak dapat digunakan pada kelas.util.out. } Tanda bintang pada deklarasi import menyatakan bahwa semua kelas di dalam package yang bersangkutan ikut dipanggil oleh kelas tersebut. Import merupakan cara sebuah kelas untuk menggunakan kelas dari package yang berbeda. Emp_obj = new Employee("Mark".out. import dan nama kelas. } public class Main { public static void main(String[] args) { 14 .*.. int EmpID. class ex { static value.println("Position : "+EmpPosition). String position) { EmpName = name. Deklarasi sebuah package diletakkan pada posisi paling atas dari sebuah kode program.int Id.println("Employee Information"). Empobj.4 Penggunaan modifier static Modifier static digunakan untuk memastikan bahwa sebuah atribut/method dialokasikan hanya sekali di memory tanpa mempedulikan jumlah obyek yang diinstansiasi dari kelas tersebut.println("ID : "+EmpID).. Contoh penulisan lengkap deklarasi package."Manager").. } 3.. Deklarasi import dituliskan di atas nama kelas dan di bawah nama package. Modifier static hanya digunakan pada atribut/method. class ex { . } public static void main(String args[]) { Employee Empobj. Employee (String name.10010.Contoh dengan menggunakan konstruktor public class Employee { String EmpName. EmpID = Id. System.out. EmpPosition = position.3 Package dan Import Package merupakan sebuah cara untuk menyatukan beberapa kelas yang memiliki fungsi yang berhubungan ke dalam sebuah paket. System.out. } void Show() { System.

Contoh di bawah ini membuat sebuah Array dengan tipe primitif char: 15 . Format demikian agak sulit untuk dibaca. Berikut contoh deklarasi Array : char s[]. // Pemanggilan atribut static oleh kelasnya System.println(“Nilai untuk a = ”+a. } } Hasil dari program tersebut adalah sebagai berikut: Nilai untuk a = 10 Nilai untuk a = 10 Nilai untuk a = 10 Nilai untuk a = 10 Atribut/method non-static tidak dapat diakses oleh method static. Dalam deklarasi array. ex b = new ex().value = 10. 2.println(“Nilai untuk b = ”+b. Contoh deklarasi array di atas. ex c = new ex(). Ketika mendeklarasikan array dengan kurung siku yang berada di sebelah kiri nama variabel.5. System. harus dibuat dulu obyek dari atribut/method kelas yang ingin diakses.value). merupakan standar penulisan array dalam C. // point adalah sebuah kelas Sebuah deklarasi array dapat ditulis sebagai pendeklarasian tipe array di bagian kiri dan nama variabel di bagian kanan.ex a = new ex().2 Membuat Array Array dibuat dengan menggunakan keyword new. kurung siku tersebut berlaku bagi semua variabel yang berada di sebelah kanannya.value). point p[]. dengan menggunakan kurung siku setelah nama variabel.out.out.println(“Nilai untuk kelas ex = ”+ex. System.out.value). tidak ditentukan ukuran aktual dari array. tetapi sebaiknya konsisten dalam menggunakan satu bentuk saja. Oleh karenanya. bahasa Java menggunakan bentuk deklarasi array alternatif dengan menggunakan kurung siku di sebelah kiri seperti dalam contoh berikut : char [] s. Besarnya memori yang digunakan oleh elemen-elemen Array akan dialokasikan secara dinamis dengan menggunakan pernyataan new atau dengan array initializer. Array dapat dideklarasikan dengan tipe apa saja. baik itu yang bertipe data primitif maupun obyek. Array merupakan sebuah obyek meskipun ia terdiri dari elemen yang bertipe data primitif.1 Mendeklarasikan Array Array biasanya digunakan untuk mengelompokkan data atau obyek yang memiliki tipe yang sama.5 Array 3. Deklarasi Array hanya membuat sebuah referensi yang dapat digunakan untuk mengacu ke sebuah obyek Array. Kedua bentuk deklarasi array di atas dapat digunakan. 3. System. ketika mendeklarasikan Array belum dibentuk sebuah obyek Array.println(“Nilai untuk c = ”+c.5. point [] p. Untuk mengakses atribut/method non-static pada method static.out. Array memungkinkan untuk mengacu ke sekumpulan obyek dengan nama yang sama. // point adalah sebuah kelas Dalam bahasa pemrograman Java. a. C++ dan Java. Seperti halnya kelas yang lain.value).

1964). 2). Indeks array dimulai dengan angka 0. Atribut ini dapat digunakan untuk melakukan proses iterasi pada Array seperti dalam contoh berikut : 16 . Batasan legal untuk nilai indeks ini adalah dari nol hingga jumlah elemen array – 1."Jen". twoDim[3] = new int[8]. p[1] = new point(1.3 Menginisialisasi Array Java memiliki cara singkat untuk membuat sebuah obyek Array dengan elemen-elemennya memiliki nilai awal : String names[] = {"Georgianna".5 Batasan Array Dalam bahasa Java. gunakan pernyataan berikut : p[0] = new point(0. Jumlah elemen di dalam Array disimpan sebagai bagian dari obyek Array di dalam atribut length."Simon"}. 2000). twoDim[1] = new int[4].4 Array Multidimensi Dalam Java. 1964). new MyDate(1. names[0] = "Georgianna". names[2] = "Simon"..s = new char[26]. Cara singkat ini dapat digunakan untuk Array dengan berbagai jenis tipe. Untuk membuat obyek Point. Pernyataan tersebut tidak membuat 10 obyek Point. 3. Untuk membuat Array dengan elemen obyek. dapat dibuat Array dari Array sehingga dinamai Array multidimensi.5. 1. 7. Array dari Array yang bersifat non-rectangular dapat dibuat seperti dalam contoh berikut : twoDim[0] = new int[2]. Untuk membuat Array dari Array yang rectangular dengan cara mudah. Kode di atas adalah sama dengan kode berikut ini: String names[]. gunakan cara penulisan berikut p = new point[10]. gunakan bentuk berikut ini : int twoDim[][] = new int[4][5]. }. twoDim[1] = new int[5]. 1). new MyDate(22. twoDim[2] = new int[6]. seperti dalam contoh berikut : MyDate dates[] = { new MyDate(22. . twoDim[0] = new int[5]. names[1] = "Jen".5. 12.. Apabila program berusaha mengakses array di luar batas yang legal. 3.5. maka akan muncul runtime exception. 3. Contoh berikut ini memperlihatkan cara membuat Array dua dimensi : int twoDim [][] = new int[4][]. indeks Array dimulai dengan angka nol.

public Jurusan(String kode. System. i++) { System.KodeJurusan).java public class Jurusan { private String KodeJurusan. pemeliharaan kode program menjadi mudah karena program tidak perlu mengetahui jumlah eleman Array pada saat kompilasi. this.length.NamaJurusan).out. String nama) { this.Nama = nm. 17 . } public String GetNIM() { return (NIM). System.out.KodeJurusan = kode. this. dapat digunakan variabel referensi yang sama untuk menunjuk ke sebuah obyek Array baru seperti dalam contoh di bawah ini : int myArray[] = new int[6].NamaJurusan = nama. private Mahasiswa[] Daftar=new Mahasiswa[10].out. 3.Daftar[JmlMhs] = m. myArray = new int[10].out. Setelah membuat obyek Array. } } //jurusan.JmlMhs<10){ this.JmlMhs++. } private static int JmlMhs = 0.println("Kode Jurusan : "+this.println("Daftar Mahasiswa :"). } public String GetNama() { return (Nama). namun demikian.6 Atribut bertipe obyek Dalam Object Oriented Programming. ukuran Array tersebut tidak dapat diubah.println("Nama Jurusan : "+this.int list[] = new int[10]. for(int i = 0. Nama. System. this. } Dengan menggunakan atribut length. } } public void DisplayMahasiswa() { int i.java public class mahasiswa { private String NIM. i < list. public void AddMahasiswa(Mahasiswa m) { if(this. Hal ini dapat dilihat pada contoh berikut: //mahasiswa.println(list[i]). obyek Array yang pertama akan hilang kecuali ada variabel lain yang dibuat untuk merujuk ke obyek Array tersebut. String nm) { this. public mahasiswa(String no.NIM = no. Dalam kode program ini. NamaJurusan. kelas-kelas yang terbentuk dapat memiliki atribut dengan tipe obyek lainnya.

18 . Penggambaran kode program di atas pada diagram kelas adalah sebagai berikut: Gambar 3.GetNIM()+" "+Daftar[i].for (i=0.out.i<JmlMhs. } } Pada kode program di atas dapat dilihat bahwa pada satu kelas jurusan terdapat atribut bernama Daftar yang bertipe array dari obyek Mahasiswa.GetNama()).println(Daftar[i].1 Diagram kelas Jurusan-Mahasiswa Dari gambar dapat dilihat bahwa satu kelas Jurusan dapat memiliki beberapa atribut bertipe kelas Mahasiswa.i++) System.

} Atribut name. Memahami penggunaan kelas abstrak dalam OOP 3. Konstruktor dari kelas induk tidak dapat diturunkan kepada kelas turunannya.} } //Manager. konsep polymorphism diimplementasikan melalui beberapa cara yaitu overloading. public String getDetails() {. birthDate.1 Pewarisan di Java Pewarisan di Java hanya mengenal pewarisan tunggal. programmer dapat memperlakukan seluruh object yang berasal dari superclass yang sama seakan-akan mereka adalah object dari superclass. overriding. Memahami dan menerapkan konsep polimorfisme dalam OOP 4. Memahami dan menerapkan konsep pewarisan dalam OOP 2.1 Contoh Pewarisan Kelas Implementasi dari diagram kelas di atas dalam Java adalah sebagai berikut: //Employee. dan salary serta method getDetails() diturunkan ke kelas Manager sehingga kelas Manager dapat menggunakan atribut dan method tersebut.. Memahami penggunaan interface dalam OOP 4.4 Inheritance dan Polimorfisme Overview Inheritance dan Polymorphism merupakan konsep OOP yang memberikan fleksibilitas kepada programmer dalam menulis program. 19 . Dengan mengaplikasikan konsep polymorphism. public Date birthDate. Tujuan 1. public double salary. abstract class dan melalui interface. Contoh pewarisan dapat dilihat pada diagram kelas berikut ini: Employee +name : String = "" +salary : double +birthDate : Date +getDetails() : String Manager +departement : String Gambar 4. Untuk menggunakan pewarisan di Java digunakan keyword extends.java public class Employee { public String name. artinya sebuah kelas hanya mewarisi atribut dan method dari satu kelas induk. sebuah kelas dapat menurunkan fungsi dan atribut yang dimilikinya kepada kelas yang menjadi turunannya.. Pada Java.java public class Manager extends Employee { public String department. Dengan mengaplikasikan konsep inheritance.

java public class Manager extends Employee { private String alamat. public Employee (String s. Di dalam kelas abstrak dapat dideklarasikan atribut dan method sama seperti kelas konkret. Jika tidak didefinisikan implementasinya.println("Living Thing breathing. } Public double getgaji() { return (super. } public void eat(){ System. } } //Manager. gaji=g.."). contoh: //Employee. maka kelas tersebut akan menjadi kelas abstrak juga. String s) { super(nama). private double gaji.Untuk menggunakan method dan konstruktor dari kelas induk pada kelas anak digunakan keyword super. double g) { name = s. contoh: public class Human extends LivingThing { 20 . private double tunjangan.1 Kelas Abstrak Kelas abstrak merupakan suatu bentuk khusus dari kelas di mana kelas tersebut tidak dapat diinstansiasi dan digunakan hanya untuk diturunkan ke dalam bentuk kelas konkret atau kelas abstrak berikutnya.1.println("Living Thing eating.. contoh: public abstract class LivingThing { public void breath(){ System.out.getgaji()+tunjangan+bonus)..java public class Employee { private String name. yaitu suatu method yang tidak mempunyai implementasi hanya memiliki deklarasi saja. public Manager(String nama. kelas tersebut harus mendefinisikan implementasi dari method abstrak yang ada dalam kelas induknya. namun ada juga method abstrak. } } 4. alamat = s. } public double getgaji() { return gaji. private double bonus.out. //merupakan method abstrak } Ketika sebuah kelas mewarisi sebuah kelas abstrak.. } public abstract void walk()."). Kelas abstrak dideklarasikan menggunakan keyword abstract.

Tidak boleh ada deklarasi konstruktor.Interface dapat meng-extend satu atau beberapa interface lainnya.println("Human walks. this. static dan final (semua atribut bertindak sebagai konstanta) secara default. maka sebuah atribut memiliki sifatsifat tersebut secara otomatis. Contoh interface dan kegunaannya: Gambar 4.1. Artinya.Semua method adalah abstract dan public secara default.Semua atribut adalah public. public Line(double x1. public boolean isLess( Object a.. } } 4. maka sebuah method memiliki sifat-sifat tersebut secara otomatis.out. public boolean isEqual( Object a. private double y2. } //Line. Artinya. . double y2){ this. private double x2. Dengan adanya interface. Java menyediakan sebuah fitur untuk keperluan pewarisan jamak (multiple inheritance). private double y1. this.java public interface Relation { public boolean isGreater( Object a.2 Interface Interface adalah prototype kelas yang berisi definisi konstanta dan deklarasi method (hanya nama method tanpa definisi kode programnya). } 21 .x1 = x1. Object b).2 Contoh Interface Untuk membuat interface di Java digunakan keyword interface. jika tidak dideklarasikan secara eksplisit.//implementasi dari method abstrak walk() public void walk(){ System. Source code untuk diagram kelas di atas dalam Java adalah sebagai berikut: //Relation.y1 = y1. . ..java public class Line implements Relation { private double x1. jika tidak dideklarasikan secara eksplisit.y2 = y2. Dalam sebuah interface: . this. Object b). double x2."). double y1.x2 = x2. Object b).

(aLen == bLen). 4. Membuat instance dari kelas lain yang visible b. Sebuah kelas abstract dapat memiliki beberapa abstract dan juga beberapa concrete method. bLen = ((Line)b).sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)). bLen = ((Line)b).getLength().getLength(). Tidak diberi modifier abstract. Object b){ aLen = ((Line)a). (aLen > bLen). f. Sebuah method abstract di dalam sebuah kelas berarti kelas tersebut adalah abstract. boolean isLess( Object a.public double return } public double double return } public double double return } public double double return } } double getLength(){ length = Math. ii. Sebuah kelas tidak dapat final dan abstract sekaligus. Sebuah kelas dengan akses public bersifat visible oleh semua kelas dari semua package.2 Konsep Poliformisme Memahami proses terjadinya Virtual Method Invocation Tulislah listing program berikut ini dan amati yang terjadi pada saat terjadinya Virtual Method Invocation. Object b){ aLen = ((Line)a).getLength(). Sebuah kelas concrete yang meng-extend sebuah kelas abstract harus mengimplementasikan seluruh method abstract pada superclass-nya. Kelas dapat diberi modifier final atau abstract. d. Sebuah kelas yang final tidak dapat diturunkan. boolean isGreater( Object a. Object b){ aLen = ((Line)a).getLength(). e. Sebuah kelas yang abstract tidak dapat diinstansiasi. Memiliki kurung kurawal dan penutup pada deklarasi method-nya. Concrete method ditandai dengan: i. length.getLength().getLength(). bLen = ((Line)b). (aLen < bLen).1. 4. a. 22 . Meng-extend sebuah kelas lain yang visible c. c. b.3 Beberapa Catatan tentang Pewarisan 1. Mengakses method dan atribut dari kelas lain yang visible 2. boolean isEqual( Object a. Visibilitas kelas berarti sebuah kelas dapat: a.

4 Contoh Class diagram 23 . akan tampak hasil seperti di bawah ini : Nilai x = 5 Ini class Child  Mengimplementasikan UML class diagram dalam program Suatu program terdiri dari class Pegawai sebagai parent class. Gambar 4.Gambar 4.3 Virtual Method Invocation Ketika program tersebut dijalankan. Buatlah suatu program yang menerapkan konsep polymorphic argument sebagaimana yang telah disinggung dalam pembahasan sebelumnya. dan class Manajer dan class Kurir sebagai subclass.

Pakailah kata kunci this untuk mempersingkat pengkodean. dipakai 1-1-2000.1 Overloading Mengimplementasikan UML class diagram dalam program untuk class Kalender Gambar 4.Transformasikan class diagram di atas ke dalam bentuk program?. 24 . Bayaran untuk Manajer : 850 Bayaran untuk Programmer : 630 4.5 Implementasi class diagram Lakukan kompilasi pada program di atas dan jalankan. Tulislah listing program berikut ini sebagai pengetesan.6 Kelas Kalender Dari class diagram di atas. Untuk nilai inisialisasi. desainlah suatu class yang memenuhi konsep enkapsulasi. Tulislah listing program berikut ini sebagai pengetesan. Gambar 4.2.

7 Penggunaan kelas Kalender Lakukan kompilasi pada program di atas dan jalankan. Daftar parameter harus sama 3.Gambar 4.2. Nama method harus sama 2.2 Overriding Overriding adalah suatu keadaan di mana method pada subclass menolak method pada parent class-nya. Overriding mempunyai ciri-ciri sebagai berikut : 1. Return type harus sama atau bertipe turunan dari return type parent class Berikut ini contoh terjadinya overriding di mana method Info() pada class Child mengoverride method Info() pada class parent: 25 . tahun setelah itu : 20-10-2005 4. Waktu awal : 8-1-2000 1 hari setelah waktu awal : 9-1-2000 Waktu berubah : 1-6-2003 1 bulan setelah itu : 1-7-2003 Waktu berubah : 20-10-2004 1.

3. } } iii. bukan tipe reference variable. Reference variable bertipe subclass tersebut dapat mengakses properti dari kelas tipenya. Sebuah obyek dapat diacu oleh beberapa reference variable selama memiliki tipe yang sama atau merupakan tipe superclass obyek tersebut. 5.Gambar 4.8 Contoh overloading Method yang terkena override (overridden method) diharuskan tidak boleh mempunyai modifier yang lebih luas aksesnya dari method yang meng-override (overriding method). Downcasting: Sebuah reference variable merujuk kepada obyek bertipe subclass dapat diassign ke reference variable bertipe subclass dengan melakukan casting secara explisit. parent b = a. Method yang dapat dipanggil ditentukan oleh tipe reference variable. 4. bukan tipe obyeknya. child b = (child) a. Terdapat dua jenis reference variable casting: ii. Method yang di-override yang digunakan ditentukan oleh tipe obyek. class parent { } class child extends parent { } public class Main { public static void main(String[] args) { child a = new child(). 4. tapi dapat merujuk ke obyek yang bertipe subclass variabel tersebut. 26 . 2. Upcasting: Sebuah reference variable dapat di-assign ke reference variable bertipe superclassnya secara implisit.2.3 Beberapa Catatan Penting tentang Polimorfisme 1. class parent { } class child extends parent { } public class Main { public static void main(String[] args) { parent a = new child(). Sebuah reference variable tidak dapat berubah tipe.

Sebuah subclass menggunakan super. Method dari superclass dapat di-overload oleh subclass 27 . Harus memiliki daftar argumen yang berbeda b.} } 6. Method yang bersifat private tidak diturunkan.overridden_Method_Name() untuk memanggil versi superclass dari overridden method. 7. Sebuah method yang di-overload: a. Boleh memiliki access specifier yang berbeda d. Hanya method yang diturunkan yang dapat di-override. Boleh memiliki return type berbeda c.

Contoh : Jika terjadi pembagian dengan nol atau membuka file yang tidak ada. bagaimana menangkap Exception. Serta akan dijelaskan throwing exception dan membuat user define exception. Obyek ini membawa informasi dari tempat di mana exception di tangkap dan dikelola. apa yang dimaksud dengan Exception. Umumnya. Subclass yang ada di bawah Error merupakan kelas yang merepresentasikan error serius di dalam Java Vitual Machine yang membuat program di terminasi karena terdapat masalah. Exception yang tidak ditangkap akan membuat program gagal. 2. Untuk lebih lengkapnya. Kelas Exception mempunyai beberapa subclass seperti RunTimeException.1 Contoh Exception Penyebab Muncul ketika memberikan argumen yang tidak sesuai dengan tipe data pada suatu method ArrayIndexOutOfBoundsException Muncul ketika mengakses elemen array yang tidak terdapat pada array tersebut (melampui batas indeks) NumberFormatException Muncul ketika ingin mengubah sebuah string ke format numerik 28 . Ketika hal ini terjadi program diberhentikan dan program bisa rusak. Mengetahui kelas-kelas exception di Java Mengetahui bagaimana Exception muncul dan cara menangkap Exception Mengetahui cara melempar Exception Mengetahui tentang User Define Exception Ketika sebuah exception muncul selama eksekusi program. Tujuan 1.5 Exception Handling Overview Bab ini akan menjelaskan tentang Exception di Java. sebaiknya tidak dilakukan try catch pada error. Class Throwable mempunyai turunan Class yaitu class Error dan Exception. maka exception akan muncul. Kedua kelas ini nanti yang akan mempunyai beberapa turunan. hal yang sebenarnya dilempar adalah sebuah obyek. dikatakan bahwa exception telah dilempar (exception is thrown). Exception RunTimeException mengelola exception yang muncul di dalam program ketika runtime. Berikut beberapa penyebab exception muncul : Exception IllegalArgumentException Tabel 5. 5. dan IOException. kegagalan program dapat dihindari jika exception yang dilempar dapat ditangkap dan dikelola sebagaimana mestinya. Biasanya sebuah obyek exception mengandung pesan error yang mendeskripsikan apa yang terjadi sehingga menyebabkan exception dan dapat berisi data lain. Sebuah exception dapat dilempar di suatu bagian program dan dapat ditangkap di bagian lain dari program tersebut. Semua obyek exception merupakan subclass dari kelas standar java.lang. InterruptedException. 4. Subclass Exception merepresentasikan exception yang biasanya disebut error tetapi error ini merupakan error yang dapat di atasi dengan cara tertentu. Ketika sebuah exception dilempar. Mengetahui tentang Exception di Java. dapat dibaca di javadoc manual. Bagaimanapun.Throwable. 3. dan subclass ini diatur dalam hirarki kelas yang kompleks.

5. Java membuat sebuah obyek Exception.1 Statement Try dan Catch Untuk menangkap exception di dalam program java. Exception ini terdiri dari turunan kelas Error dan RunTimeException beserta seluruh turunannya. Lingkup dari blok catch dibatasi oleh Statement yang ada di dalam blok try.ArithmeticException NullPointerException ClassCastException Muncul ketika membuat sebuah error aritmatika seperti pembagian dengan nol dalam Muncul ketika suatu aplikasi berusaha menggunakan obyek tanpa mengalokasikan memori Muncul ketika terjadi kesalahan melakukan casting sebuah obyek Exception secara umum dibagi dua: 1. Exception ini terdiri dari seluruh turunan kelas Exception kecuali RunTimeException. Klausa catch menspesifikasikan tipe exception yang akan ditangani. Jika tidak ada exception yang muncul ketika dieksekusi maka Statement catch tidak akan di jalankan. Setelah membuat obyek exception. Unchecked exception.1 Mengimplementasikan Exception Handling Ketika sebuah error muncul di dalam method. Blok try harus mempunyai minimal satu buah blok catch yang mengikutinya. yakni exception yang tidak dicek pada saat dilakukan kompilasi. 2. num2=0.1. int num3=num1/num2. Statement untuk mendeklarasikan blok try catch : try { //Statements that cause an exception } catch(<exception name> <object name>){ //error handling code } Komputer akan mengeksekusi statement yang ada di dalam blok try. Exception ini harus ditangani secara explisit menggunakan mekanisme exception handling. diperlukan Statement try. Java mengirimkannya ke program dengan melemparkan exception (throwing exception). Jika sebuah exception muncul maka blok catch akan langsung dijalankan. Exception yang dlempar perlu ditangani menggunakan exception handler dan diproses. yakni exception yang akan dicek pada saat dilakukan kompilasi. 29 . Contoh : public class ArithmeticException{ public static void main (String[] args){ int num1=5. Untuk mengimplementasikan Exception handling digunakan keyword berikut : o Try o Catch o Finally o Throw o Throws 5. Blok Statement try membingkai kode yang kemungkinan akan memunculkan exception dan mendefinisikan exception handler yang dapat menanganinya. Blok catch digunakan sebagai exception handler. Checked exception.

2 Multiple Catch Sebuah blok try dapat diikuti oleh banyak blok catch. System. Contoh : public class MultipleCatch{ public static void main (String[] args){ int num1=5.out.println(“Error…Out Of Bounds”). try{ int num3=num1/num2.println(“Division by zero”). } catch(ArithmeticException obj){ System. int arrNum[]= {1. } } Jika program di atas di compile maka tidak ada error.println(“The num3 = “+num3).println(“The num3 = “+num3).out.out. System.out. handler pada Java runtime sistem akan melempar sebuah exception ketika terjadi pembagian dengan nol sehingga akan dibuat sebuah obyek dari kelas exception yang dilempar yaitu ArithmeticException. obyek yang merepresentasikan exception diletakkan ke dalam variabel obj. tetapi setelah di eksekusi. num2=0. Jika sebuah exception muncul di dalam blok try maka exception handler yang berkaitan akan menangani exception tersebut.println(“Division by zero”).System. System.out. yang berisi data tentang exception. } } } Dengan menangani exception maka program terhindar dari kerusakan.out.2.println(“The 3 elemen is “+ArrNum[3]). Sebelum isi dari catch dieksekusi. Hal ini penting ketika sebuah blok try mempunyai Statement yang mungkin akan memunculkan berbagai tipe exception.1. try{ int num3=num1/num2. pada contoh di atas karena muncul exception ArithmeticException maka akan dibuat exception handler untuk ArithmeticException public class ArithmeticException{ public static void main (String[] args){ int num1=5.out. 5.3 }. } catch(ArithmeticException obj){ System. } 30 . num2=0.println(“The num3 = “+num3). } catch(ArrayIndexOutOfBondException obj){ System.

Hal ini dapat dilakukan dengan melempar exception secara eksplisit dengan menggunakan Statement throw.1. Statement finally digunakan untuk melakukan sesuatu yang penting ketika terdapat exception atau tidak. hal ini disebut unreachable code.. meskipun tidak ada exception yang muncul atau ada exception yang muncul. maka catch yang di dalamnya mengandung kelas Exception diletakkan pada urutan blok catch yang terakhir. Contoh pengggunaan Statement throw: public class ThrowingStatement{ 31 . Hal ini terjadi jika di dalam program ditemukan beberapa exceptional atau kondisi error tetapi tidak ada alasan untuk menangani error tersebut di mana permasalahan ditemukan.3 Statement Finally Statement yang berada di dalam blok finally akan dieksekusi paling akhir ketika sedang mengeksekusi blok try.4 Throwing Exception Suatu saat dibutuhkan untuk melempar exception pada program yang dibuat. Contoh: dibutuhkan untuk melempar exception ketika user salah memasukkan nilai. } } } Pada kode di atas terdapat tiga catch untuk menangani exception yaitu ArithmeticException. blok finally akan dieksekusi meskipun tidak ada Statement catch yang cocok dengan exception yang muncul. 5. 5.out. Untuk menghindari duplikasi kode maka dapat diletakkan di dalam blok finally. boleh ada atau tidak di dalam try catch blok. ArrayIndexOutOfBoundException. Program dapat melempar sebuah exception dengan harapan dapat ditangkap dan ditangani oleh blok catch.println(“Other error”). jika tidak ada blok catch yang sesuai dengan exception yang dilempar maka program akan diterminasi. Blok catch yang pertama akan dieksekusi jika di dalam blok try melempar ArithmeticException. Untuk menghindari error unreachable code. Kelas Exception merupakan superclass dari semua tipe kelas exception.catch(Exception obj){ System. tetapi hanya satu blok finally saja yang dapat dibuat dalam satu buah blok try. Blok finally merupakan pilihan. Ketika program mengeksekusi int num3=num1/num2.1. blok catch yang kedua akan dieksekusi jika di dalam blok try melempar ArrayIndexOutOfBoundException. Jika blok catch yang pertama berisi obyek dari kelas Exception maka blok catch berikutnya tidak akan dieksekusi. dan Exception. Sintaks try-catch-finaly : try{ //block of code } catch (<exception name> <object name>){ //block of exception code } finally{ //block of code that is always executed } Jika sebuah exception dilempar atau tidak dilempar. Statement throw akan menyebabkan terminasi dari aliran control program Java dan menghentikan eksekusi ketika Statement tersebut dieksekusi. dan blok catch yang terakhir akan menangkap exception yang lain. maka ArithmeticException akan muncul dan akan ditangkap oleh blok catch yang pertama (ArithmeticException obj). Exception yang dilempar oleh Statement throw akan ditangkap oleh blok catah yang ada.

Contoh : class ThrowingStatement{ static double root(double IllegalArgumentException{ double disc=0. Statement Throws digunakan oleh method untuk menspesifikasikan tipe-tipe exception yang akan dilempar di dalam method.println("Illegal Argument in : "+obj). double C){ double disc=0. } else{ disc = (B*B)-(4*A*C).2. Jika program yang memanggil method mengetahui cara menangani error. } } Program di atas mempunyai kondisi A!= 0dan B*B-4*A*C>=0. } 32 A. } return ((-B + Math. if (disc<0) throw new IllegalArgumentException("Discriminant< 0").double B. if(A==0){ throw new IllegalArgumentException("A can't be zero").4).sqrt(disc))/(2*A)). } } //endtry catch(IllegalArgumentException obj){ System. double C) throws . maka dapat menangkap exception. Hal ini dilakukan dengan Statement throws. Ketika sebuah kondisi illegal ditemukan dalam method. } public static void main(String[] args){ double Ans = root(0. Method akan melempar sebuah exception IllegalArgumentException jika kondisi tersebut tidak terpenuhi. jika tidak maka program akan rusak dan harus diperbaiki. Jika method yang melempar exception tidak dapat menanganinya maka exception harus ditangani oleh bagian yang memanggil method tersebut. melempar sebuah exception merupakan cara yang masuk akal. try { if(A==0){ throw new IllegalArgumentException("A can't be zero"). Statement throws digunakan untuk menuliskan tipe-tipe exception yang terdapat di dalam method.double B.out.static double root(double A.

TestUTQ.sqrt(disc))/(2*A)). if (disc<0) throw new IllegalArgumentException("Discriminant< 0"). User defined exception juga menuruni semua method yang didefinisikan di dalam kelas Throwable. } return ((-B + Math.println("The value UAQ : "+TestUAQ+".2. } } public class UserException { static int TestUAQ.4). try{ Ans = root(0. UTQ : "+TestUTQ). static void setValue(int UAQ.else{ disc = (B*B)-(4*A*C).out.out. System. TestUTQ=UTQ. Tiap aplikasi yang dibuat kemungkinan mempunyai batasan yang spesifik.2 User defined Exception User defined exception merupakan exception yang dibuat oleh programmer sesuai dengan permintaan pada aplikasi. } } } 5. Kelas Exception menuruni semua method yang ada di dalam kelas Throwable. } public static void main (String[] args){ double Ans. try. } catch(IllegalArgumentException obj){ System. 33 . Statement throw.int UTQ) throws MyException{ if ((UAQ<0)||(UTQ<0)) throw new MyException(). dan finally digunakan dalam mengimplementasikan user define exception.println("Illegal Argument in : "+obj). throws. Contoh : class MyException extends Exception{ public String toString(){ return "MyException caught : The Input value cannot less than 0". catch. TestUAQ=UAQ.

Sebuah method yang meng-override dapat mendeklarasikan segala jenis unchecked exception tanpa peduli apakah exception tersebut dideklarasikan oleh method yang di-override. 4. setValue(-70. } catch(MyException obj){ System.out.60). } } } 5. 34 . 5. 3. Pada multiple catch exception. exception yang merupakan superclass harus berada di bawah exception subclass-nya. Sebuah method yang meng-override tidak dapat mendeklarasikan checked exception yang merupakan superclass dari exception yang dideklarasikan pada method yang di-override. 2. Kode program pada klausa finally akan selalu dieksekusi.} public static void main (String[] args){ try{ setValue(80.90).println("The Exception raised : "+obj). 6. Sebuah method yang meng-override tidak dapat mendeklarasikan checked exception baru yang tidak dideklarasikan oleh method yang di-override.3 Beberapa Catatan tentang Exception 1. meskipun terjadi exception atau tidak. Sebuah method yang meng-override dapat mendeklarasikan checked exception yang merupakan turunan dari exception yang dideklarasikan pada method yang di-override. meskipun exception yang ada berhasil ditangani atau tidak.

Penggunaan character stream. Terdapat beberapa konstruktor yang bisa kita gunakan untuk membuat instance pada kelas File: 1. tanggal pembuatan dan akses. Penggunaan byte stream. alamatDirektori menentukan alamat direktori dari file sedangkan nama file menentukan file mana yang akan diakses. dan lain-lain. alamat dari direktori di mana file tersebut berada.1 Method dalam kelas File Method Keterangan boolean canRead() Akan mengembalikan nilai true jika file yang sedang diakses saat ini dapat dibaca (readable).6 Input/Output Overview Dalam bab ini akan dibahas tentang bagaimana cara melakukan pengaksesan data kedalam file. Jika tidak akan mengembalikan nilai false.1 Implementasi Kelas File Kelas file dalam package java. String namaFile): Membuat sebuah instance pada kelas File di mana obyekDirektori adalah sebuah obyek dari kelas File yang menunjuk sebuah direktori. boolean canWrite() boolean exists() Akan mengembalikan nilai true jika file bisa ditulis (writable). Keterangan: Alamat disini bisa berupa alamat absolut atau alamat relatif. Sebuah obyek yang dibuat dari kelas File yang akan merepresentasikan file atau direktori. File (String alamatDirektori): Membuat sebuah obyek dari kelas File. Akan dibahas tentang pengaksesan data menggunakan stream dan random access file. 3. alamatDirektori merupakan alamat di direktori mana file yang akan diakses berada. Terdapat beberapa method yang bisa digunakan di dalam sebuah obyek dari kelas File. File(File obyekDirektori. antara lain: Tabel 6. baik melakukan proses pembacaan ataupun penulisan.io menyediakan berbagai macam method untuk mengakses atributatribut dari file dan direktori. 2. Tujuan 1. 3. sedang namaFile adalah file yang akan diakses. 2. 4. Jika bukan file atau direktori akan mengembalikan nilai false. Jika tidak akan mengembalikan nilai false Akan mengembalikan nilai true jika argumen yang ditunjuk pada konstruktor instantiasi obyek merupakan sebuah file atau direktori. seperti hak akses dari. Penggunaan file menggunakan kelas File. String namaFile): Membuat sebuah obyek dari kelas File. Akan mengembalikan nilai true jika argumen yang ditulis dalam 35 boolean isFile() . Pengaksesan dengan random-access file 6. File(String alamatDirektori.

Jika bukan sebuah direktori akan mengembalikan nilai null. : "+obj1.println("Panjang : "+obj1. Akan mengembalikan sebuah string alamat dari di mana file atau direktori tersebut.println("getPath System.out. File obj2 = new File("D:\\IO").IOException.out. Akan mengembalikan sebuah string alamat absolut dari sebuah file atau String getAbsolutePath() direktori. 36 System.out.println("Sebuah obyek file"). Berikut adalah contoh penggunaan kelas File. dalam ukuran byte. : "+obj1.println("getAbsolutPath : "+obj1. import java.length()). Selain itu akan bernilai false. System.io.println("Nama File System. Akan mengembalikan sebuah array berbentuk string yang akan menyimpan daftar isi (file dan direktori) dari sebuah direktori.getAbsolutePath()).out."KelasFile. class AksesFile{ String daftar[] = new String[20].io. Akan mengembalikan nilai true jika argument yang ditulis dalam konstruktor adalah sebuah alamat absolut dari file atau direktori.getName()). boolean isDirectory() boolean isAbsolute() Akan mengembalikan nilai true jika argumen yang ditulis dalam konstruktor adalah sebuah direktori. System. Akan mengembalikan sebuah string alamat induk dari file atau direktori tersebut. Selain itu akan mengembalikan nilai false. : "+obj1.konstruktor merupakan sebuah file. . Jika berupa sebuah direktori akan mengembalikan nilai 0 (nol).java").File. public void displayData() { try { File obj1 = new File("D:\\IO".getParent()). String getName() String getPath() String getParent() long length() long lastModified() String[] list() Akan mengembalikan sebuah string nama dari file atau direktori.out. import java.getPath()).println("Lokasi System. (direktori di mana file atau direktori tersebut disimpan) Mengembalikan panjang dari file. Selain itu akan mengembalikan nilai false. Akan mengembalikan sebuah representasi waktu kapan terakhir kali file atau direktori tersebut dimodifikasi.out.

println("Last Modif System. 37 .out.i<daftar.getAbsolutePath()).println("Lokasi System. System. } } catch (Exception e) { System.out.println("Sebuah obyek Direktori").out.out. for (int i=0. aksesFile.println("Nama Direktori : "+obj2.out.i++) { System.out.println("getAbsolutPath : "+obj2. System.getPath()).out.println(e).displayData().out.out. } } } public class KelasFile { public static void main(String[] args){ AksesFile aksesFile = new AksesFile().lastModified()). System. : "+obj2. } } Keluaran dari program di atas adalah: : "+obj2.length.list().length()).out. : "+obj1.lastModified()).out. System.println("Isi dari direktori : "). : "+obj2.println("\t"+daftar[i]).println("Panjang System.getParent()). : "+obj2.getName()).System.println("last Modif daftar = obj2.println().println("getPath System. System.out.

Variabel tersebut adalah System. Terdapat dua Kelas byte stream yaitu InputStream dan OutputStream. 38 : ").read(data).1.1 Ouput Stream Kelas OutputStream merupakan stream yang digunakan untuk menulis data dalam bentuk byte. Contoh penggunaannya sebagai berikut. int length) close() flush() Tabel 6. file). yaitu input yang berasal dari sebuah sumber (misal sebuah keyboard. yang merupakan instance dari kelas PrintStream yang bisa menggunakan method write() untuk menulis kedalam layar monitor.2 Method pada kelas OutputStream Keterangan Menulis sekian b byte kedalam sebuah file. 6. Menutup stream output. file) kemudian data masukan tadi akan diproses dan akan dikeluarkan menuju sebuah tujuan (misal monitor.2. Operasi Input output (I/O) terdiri dari dua bagian. byte stream dengan unit dasar satu byte data dan character stream dengan dasar satu karakter Unicode. import java. dimulai dari lokasi offset sebanyak sekian length byte.*. jaringan komputer. Menulis array berisi byte kedalam sebuah file. 6. package java. System.io.lang memiliki sebuah variabel statik yang digunakan untuk merepresentasikan sebuah layar monitor.1 Contoh penggunaan File 6. public class CobaSystemOut { public static void main(String[] args) { byte[] data = new byte[10]. int panjang=0. Stream dibagi menjadi dua jenis. Menulis kedalam byte di mana datanya berasal dari sebuah array b. Beberapa contohnya adalah digunakan untuk menulis kedalam layar monitor atau file.in.Gambar 6.1 Implementasi Byte Stream Byte stream menggunakan byte sebagai unit dasar operasi baca dan tulis terhadap streamnya. Beberapa method yang digunakan dalam kelas OutputStream Method write(byte b) write(byte b[]) write(byte b[].2. Di dalam Java.io terdiri dari berbagai macam kelas dan interface stream I/O yang mendukung operasi I/O. Menghapus buffer stream output. int offset. .out. Kelas System dalam package java.2 Penggunaan Stream dalam Java Stream dalam sebuah program java digunakan untuk melakukan pembacaan atau penulisan kedalam sebuah asal (source) atau tujuan (destination).print("Masukkan data try { panjang=System.out. jaringan komputer.

out.out.System.out. sedang boolean bool jika bernilai true menunjukkan bahwa penulisan file dilakukan dalam mode append (penambahan data di akhir file) 4.print("Yang anda ketik System. sebanyak length byte. FileOutputStream(String alamatFile): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file. String alamatFile merupakan alamat dari file yang akan dijadikan tujuan penulisan. System.io.write(data).1. System. 3. sedang boolean bool jika bernilai true menunjukkan bahwa penulisan file dilakukan dalam mode append (penambahan data di akhir file) Beberapa method untuk melakukan penulisan kedalam stream dengan kelas FileOutputStream Method write(byte b) write(byte b[]. int offset. 2.print("Terjadi Exception").println("Panjang Karakter : "+panjang). Beberapa konstruktor yang bisa digunakan dalam kelas FileOutputStream adalah: 1. FileOutputStream(File objFile): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file.out.print("index ke-1 sebnyk 3 : "). FileOutputStream(File objFile. boolean bool): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file.3). : "). boolean bool): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file. int length) Tabel 6.write(data. System.3 Method dalam kelas FileOutputStream Keterangan Menulis byte b kedalam file stream. } } } Untuk melakukan operasi penulisan ke dalam sebuah file digunakan kelas FileOutputStream.out. objFile merupakan sebuah file obyek yang merepresentasikan sebuah file. objFile merupakan sebuah file obyek yang merepresentasikan sebuah file. Menulis sejumlah length byte dari posisi offset kedalam file stream.*. FileOutputStream(String s. } catch (IOException e) { System.out. Berikut adalah contoh dari penggunaan FileOutputStream. String alamatFile merupakan alamat dari file yang akan dijadikan tujuan penulisan. public class ContohFOS { public static void main(String args[]){ 39 . import java.

out.println(e).println(f).txt 40 .out. 100).txt")... objFOS. } try{ FileOutputStream objFOS. try{ System. 0.read(buffer. System. objFOS= new FileOutputStream("textFOS. } } } Runtime dari kode di atas Gambar 6. } catch(IOException e){ System.out.2 Contoh FOS Hasil penulisan dalam file textFOS.println("Data telah ditulis.out.").in.write(buffer). System. } catch(IOException i){ System.println("Masukkan data:"). } catch(FileNotFoundException f){ System.out.byte buffer[]=new byte[100].println(i).

out. public class CobaSystemIn{ public static void main(String args[]){ byte buffer[]=new byte[80]. Menutup input stream dan melepaskan sumber daya yang terikat pada stream tersebut.out.1. Mengembalikan posisi kepada lokasi yang telah ditandai dari method mark. Menandai posisi yang ada pada input stream saat ini.print("Ketik sesuatu.txt 6. try { System. int offset. Berikut adalah contoh penggunaan System. keyboard dan jaringan) dan menampilkan datanya kedalam layar monitor. Variabel dengan nama System. Java menyediakan kelas InputStream yang merupakan kelas abstrak untuk melakukan proses input untuk membaca data dari berbagai macam sumber (seperti file.2.println("menekan tombol enter"). Membaca beberapa byte dari input stream dan memasukkannya kedalam array b Membaca sebanyak length byte dari stream dan memasukkannya kedalam array b.read(buffer).in yang akan digunakan untuk membaca inputan user dari keyboard. System. Melewatkan sekian n byte dari input stream.in merupakan sebuah instance dari kelas InputStream yang dapat digunakan untuk membaca dari dari keyboard. ").print("akhiri dengan ").Gambar 6. } catch(Exception e) { 41 . Beberapa method yang digunakan dalam kelas InputStream.3 textFOS.2 Input Stream Input stream adalah stream yang membaca data dalam bentuk byte. int length) Keterangan Membaca satu byte data dari input stream. Tabel 6. Kelas System dalam package java.out. System.4 Method InputStream Method int read() int read(byte b[]) int read(byte b[]. System. Jika memasuki akhir dari stream akan mengembalikan nilai -1 available() long skip(long n) mark(int nbyte): reset(): void close() Mengembalikan jumlah byte yang bisa dibaca dari sebuah stream.lang memiliki satu anggota static yang merupakan referensi dari sebuah keyboard.in.

System.out.println(e); } System.out.println(); String str=new String(buffer); System.out.println("isi Teks:"); System.out.print(str); } } Berikut adalah hasil dari kode di atas:

Gambar 6.4 Obyek System.in Untuk melakukan operasi input pembacaan data dari dalam file digunakan kelas FileInputStream. Berikut adalah beberapa konstruktor yang bisa digunakan dalam kelas FileInputStream. 1. FileInputStream(File namaFile): Membuat sebuah obyek yang akan menggunakan file dengan nama namaFile sebagai sumber inputannya. 2. FileInputStream(String alamatFile): Membuat sebuah obyek yang akan menggunakan sebuah file dengan alamat alamatFile (berbentuk string) sebagai sumber inputannya. 3. FileInputStream(FileDescriptor obyekFile): Membuat sebuah obyek yang akan menggunakan sebuah obyekfile yang sudah ditentukan sebelumnya sebagai sumber inputannya. Beberapa method yang digunakan dalam kelas FileInputStream Tabel 6.5 Method dalam kelas FileInputStream Method read() read(byte b[], int offset, int length) long skip(long n) Keterangan Membaca satu byte data dari stream inputan. Membaca sekian length byte data dari stream input dan memasukkannya kedalam sebuah array b. Melewatkan sekian n byte data dari stream input.

Berikut adalah contoh penggunaan FileInputStream. 42

import java.io.*; public class ContohFIS{ public static void main(String args[]){ byte buffer[]=new byte[100]; try{ FileInputStream file=new FileInputStream("dokumen.txt"); file.read(buffer,0,50); } catch(Exception e){ System.out.println(e); } System.out.println("Isi file dokumen.txt adalah:"); String str=new String(buffer); System.out.println(str); } } Berikut adalah hasil dari kode di atas

Gambar 6.5 Contoh FIS 6.2.2 Implementasi Character Stream Kelas-kelas stream karakter menangani proses I/O dengan basis unit adalah sebuah karakter dengan menggunakan representasi Unicode yang disimbolkan dengan 16 bit. Stream karakter terdiri dari kelas-kelas Reader dan Writer dalam package java.io. 6.2.2.1 Kelas Reader Kelas java.io.Reader merupakan sebuah kelas abstrak yang menyediakan berbagai macam method untuk melakukan proses pembacaan dalam bentuk karakter Unicode dari berbagai sumber data seperti harddisk, keyboard atau memori. Karena merupakan sebuah kelas abstrak, maka kelas ini tidak bisa diinstantiasi, tetapi sub-kelasnya lah yang akan digunakan untuk proses pembacaan data. Terdapat berbagai macam method dalam kelas Reader, tetapi sebenarnya hanya method read() dan close() saja yang kita perlukan. Method int read() Tabel 6.6 Method dalam kelas Reader Keterangan Membaca satu karakter dan mengembalikan sebuah nilai 43

integer dari karakter yang dibaca. Jika yang dibaca adalah EOF maka akan dikembalikan nilai -1. int read(char buffer[]) Membaca karakter dan memasukkannya kedalam sebuah array buffer dan mengembalikan sebuah bilangan dari karakter yang dibaca. Jika EOF akan mengembalikan nilai -1 Menutup stream.

abstract void close() Kelas FileReader

Kelas FileReader digunakan untuk membaca karakter dari dalam file, tetapi kelas ini tidak memiliki method di dalamnya. Method-nya sendiri diturunkan dari kelas induknya yaitu Reader dan InputStreamReader. Terdapat beberapa konstruktor dala kelas FileReader ini. 1. FileReader(File objFile) Membuat sebuah kelas FileReader dengan inputan sebuah obyek objFile. 2. FileReader(String namaFile) Membuat sebuah kelas FileReader dengan inputan sebuah nama namaFile. Berikut adalah contoh penggunaan FileReader import java.io.*; public class contohFR{ public static void main(String args[]){ try{ File file=new File("cthFileReader.txt"); FileReader f=new FileReader(file); int ch; while((ch=f.read())!=-1){ System.out.print((char)ch); } } catch(FileNotFoundException fnf){ System.out.println(fnf); } catch(IOException io){ System.out.println(io); } } } File yang akan dibaca dari kode di atas berisi hal berikut.

44

maka proses pembacaan bisa dilakukan lebih dari satu kali pada saat yang sama. BufferedReader br= new BufferedReader(new InputStreamReader(System. 2. Dengan menggunakan buffer. 1. public class contohBR{ public static void main(String args[]){ System. } catch(IOException io){ 45 . BufferedReader(Reader objStream) Membuat sebuah obyek BufferedReader dengan ukuran buffer default. Beberapa konstruktor dari kelas BufferedReader ini. try{ str=br. BufferedReader(Reader objStream.readLine(). Berikut adalah contoh dari BufferedReader import java.out.7 Hasil eksekusi FileReader Kelas BufferedReader Kelas BufferedReader membaca teks dalam bentuk stream karakter dan memasukkannya kedalam sebuah buffer di dalam stream input. String str=new String().in)). Contoh penggunaan dari kelas ini adalah untuk mendapatkan inputan dari user melalui konsole.*.Gambar 6.println("Ketik :").io. sehingga bisa lebih meningkatkan performansi dari aplikasi. int ukuranBuffer) Membuat sebuah obyek BufferedReader dengan ukuran buffer sebesar ukuranBuffer.6 Contoh FileReader Berikut adalah hasil eksekusi dari kode di atas Gambar 6.

out. tetapi sub-kelasnya lah yang akan digunakan untuk proses pembacaan data. 2. tetapi hanya method write().2.out. System. flush() dan close() saja yang kita butuhkan.println(io). maka kelas ini tidak bisa diinstantiasi. Methodnya sendiri diturunkan dari kelas induknya yaitu Writer dan OutputStreamReader. Menutup stream. } } Hasil dari kode di atas adalah Gambar 6.2.out.2 Kelas Writer Kelas java. System. } System. Mem-flush buffer output .println(). Menulis sebuah array karakter kedalam stream outputkarakter. FileWriter(String namaFile) Membuat sebuah obyek FileWriter dengan parameter inputan nama file yang akan ditulis.println(str). Method int write(int ch) int write(char buffer[]) abstract void close() Void flush() Kelas FileWriter Kelas FileWriter digunakan untuk menulis data kedalam sebuah file. Berikut adalah kelas-kelas turunan dari kelas Writer. FileWriter(String namaFile. Karena merupakan sebuah kelas abstrak.System. Terdapat beberapa konstruktor dala kelas FileWriter ini.out.8 Contoh BufferedReader 6.Writer merupakan sebuah kelas abstrak yang menyediakan berbagai macam method untuk melakukan proses penulisan dalam bentuk karakter Unicode ke berbagai tujuan data seperti harddisk dan monitor. sedangkan boolAppend digunakan untuk menentukan bahwa penulisan akan dilakukaan secara menambahkan data di bagian paling bawah jika boolAppend bernilai true. Terdapat banyak method dalam kelas Writer.io.println("Isi ketikan: "). boolean boolAppend) Membuat sebuah obyek FileWriter dengan parameter inputan nama file yang akan ditulis.7 Method dalam kelas Writer Keterangan Menulis sebuah karakter kedalam stream output-karakter. 1. 46 Tabel 6. tetapi kelas ini tidak memiliki method di dalamnya.

public class ContohFW{ public static void main (String args[]){ String str="contoh dari".println("Data sudah ditulis.length() ).").. import java.write(str2. Berikut adalah contoh dari penggunaan kelas FileWriter. fout. str2. fout.close(). try{ FileWriter fout = new FileWriter("cthFileWriter. FileWriter(File objFile) Membuat sebuah obyek FileWriter dengan parameter inputan sebuah obyek dari kelas File. fout.println(io).write(str.txt akan berisi. System.9 Contoh FileWriter File cthFileWriter.txt 47 .3. } } } Hasil dari kode di atas Gambar 6. } catch (IOException io){ System.*. String str2="penggunaan kelas FileWriter".10 Isi cthFileWriter.io.txt" ).out.length() ).out. str. 0. Gambar 6. 0..

print("Budiman:").print("30308999:").println(). 48 . pw. 2. Parameter autoflush menandakan bahwa method println() akan memflush kedalam buffer output.print("30208999:"). PrintWriter(OutputStream streamObj. boolean autoflush) Membuat sebuah obyek dari kelas PrintWriter dengan menggunakan obyek dari karakter stream output. pw. pw. PrintWriter(OutputStream streamObj) Membuat sebuah obyek dari kelas PrintWriter dengan menggunakan obyek dari kelas OutputStream.out. pw. pw. pw=new PrintWriter(file). 1. boolean autoflush) Membuat sebuah obyek dari kelas PrintWriter dengan menggunakan obyek dari kelas OutputStream.print("Agus Subagus:").print("30108999:"). pw. } pw. pw.txt").print("Bandung"). pw. try{ FileWriter file=new FileWriter("cthPrintWriter.print("Chairil Anwar:").print("Jakarta").println().println(io). public class contohPW{ public static void main(String args[]){ PrintWriter pw=null. 3. Di dalam kelas ini terdapat beberapa method yang akan digunakan yaitu print() dan println().Kelas PrintWriter Kelas PrintWriter merupakan turunan dari kelas Writer dan akan menuliskan karakter yang telah terformat kedalam stream karakter output. } catch(IOException io){ System.io.*. PrintWriter(Writer outWriter. pw. Parameter autoflush menandakan bahwa method println() akan memflush kedalam buffer output. pw. import java.print("Subang"). Terdapat beberapa konstruktor dalam kelas ini. Contoh penggunaan kelas PrintWriter.

} } Eksekusi dari kode di atas Gambar 6. kita harus mendefinisikan proses apa yang akan kita lakukan.. sedangkan argumen mode menentukan jenis hak akses pembukaan file tersebut. apakah membaca atau juga akan menulis kedalam file tersebut.txt 6. Terdapat beberapa konstruktor yang bisa digunakan dalam kelas RandomAccessFile.RandomAccessFile mengimplementasikan sebuah interface DataInput dan DataOutput yang bisa digunakana untuk melakukan proses baca dan tulis kedalam file.io.out. antara lain: 1. Kelas java.println("Data Telah Ditulis.txt Gambar 6. Maka dengan menggunakan Random access file ini kita bisa langsung menuju ke posisi yang diinginkan dan mengambil teks yang kita butuhkan saja. RandomAccessFile(File obyekFile. 2. Di dalam kelas ini.3 Implementasi RandomAccessFile Random access file (pengaksesan file secara acak) memungkinkan kita untuk mengakses isi dari sebuah file secara tidak berurutan.close(). pw.pw. String mode): 49 .11 Contoh PrintWriter Hasil penyimpanan data di atas pada file cthPrintWriter. tetapi hanya pada posisi tertentu saja. Ambil sebuah kasus ketika yang kita inginkan tidak semua teks dari sebuah file kita butuhkan. String mode): Membuat sebuah obyek dari kelas RandomAccessFile..println(). System.").12 Isi cthPrintWriter. Dengan cara ini kita bisa membaca dan menulis data teks dan byte pada lokasi manapun dalam sebuah file. RandomAccessFile(String namaFile. di mana argumen obyekFile adalah obyek yang menentukan file mana yang akan dibuka. misal pada baris ke-sekian.

long getFilePointer() long length() void seek(long position) int skipBytes(int n) Berikut adalah contoh penggunaan RandomAccessFile. maka akan dibuat sebuah file baru. 50 . Akan melewati sekian n byte karakter dari posisi sekarang. "rw" "rws" "rwd" Terdapat beberapa method yang bisa digunakan di dalam sebuah obyek dari kelas File. Menentukan posisi pointer kepada lokasi yang ditentukan (posisi sebelum lokasi tersebut). sebagaimana mode “rw”. antara lain: Tabel 6. untuk mode “s” juga akan dilakukan proses update terhadap isi dari file tersebut. untuk mode “s” juga akan dilakukan proses update terhadap isi dan metadata dari file tersebut. antara lain: Nilai "r" Tabel 6. sebagaimana mode “rw”. class RAC{ RandomAccessFile file=null. Mendapatkan posisi pointer saat ini di dalam sebuah file.io. Membuka sebuah file untuk dilakukan proses baca dan tulis. Jika dilakukan proses penulisan pada obyek ini maka akan menghasilkan sebuah IOException Membuka sebuah file untuk dilakukan proses baca dan tulis. yang akan dituliskan secara tersinkronisasi. di mana argumen namaFile adalah nama dari file yang akan dibuka. Membuka sebuah file untuk dilakukan proses baca dan tulis. seperti stream dan pointer yang digunakan dalam file tersebut. Terdapat beberapa jenis hak akses pembukaan file. import java.8 Jenis akses pembukaan file Keterangan Membuka file hanya untuk dilakukan proses pembacaan saja. sedang argumen mode menentukan jenis hak akses pembukaan file tersebut. Mendapatkan panjang dari sebuah file. yang akan dituliskan secara tersinkronisasi. Jika file yang ditunjuk tidak ada.Membuat sebuah obyek dari kelas RandomAccessFile.io. import java.9 Method dalam kelas RandomAccessFile Method void close() Keterangan Menutup sebuah obyek RandomAccessFile dan melepas semua sumber daya yang digunakan.RandomAccessFile.IOException.

System. file. file.readInt()). maka akan dibuat sebuah file baru */ file=new RandomAccessFile("work.aksesFile().println(file. System.out. file. file.writeChar('K').writeInt(4). file.out.out.readInt())."rw"). } catch(IOException e){ System.writeInt(6). } } Ouput dari contoh di atas 51 .readChar()). System. obj. file.txt.println(file.out. } } } class ContohRandomAccessFile{ public static void main(String[] args){ RAC obj = new RAC().writeChar('A'). System.println(file.readChar()).seek(0).out. dengan mode akses read dan write jika file tidak ditemukan.close().println(file.txt".public void aksesFile(){ try{ /* membuka file work.println("Exception: " +e).

Berikut terdapat sebuah contoh kelas yang tidak menggunakan Thread. Bagaimanapun juga.1 Multithreading di Java Sebuah thread merupakan sebuah pengontrol aliran program.Gambar 6. Membuat sendiri sebuah thread 6. while (i<5) { System. Pada saat menjalankan Program. Setiap eksekusi. Untuk lebih mudahnya. pasti hanya satu proses yang telah dieksekusi. Mengerti dan menggunakan kemampuan concurency 7.Oleh karena itu. Tujuan 1. terdapat dua cara yang dapat dilakukan yakni:  Membuat class yang mengimplementasikan interface Runnable dan mengimplementasikan method run()  Membuat class yang merupakan turunan dari class Thread dan meng-override method run(). ia memiliki sebuah titik awal eksekusi. Menggunakan sinkronisasi pada thread yang bekerja bersama-sama dan saling bergantung satu dengan yang lainya 7.13 Contoh RandomAccessFile 7 Multithreading Overview Sebuah program sekuensial berarti sebuah program yang hanya memiliki satu aliran eksekusi. thread hadir untuk menjadi solusi dalam mengatasi permasalahan tersebut. Untuk membuat thread baru yang terpisah dari thread utama. di dunia nyata. public void tampil() { i = 0. yang dimulai dengan memanggil method main(). dan kemudian berakhir. } } } public class DemoThread1 { 52 . kemudian sebuah sekuen eksekusi. bayangkanlah thread sebagai sebuah proses yang akan dieksekusi di dalam sebuah program tertentu. sebuah thread utama akan dibuat oleh Java untuk mengeksekusi Program tersebut. Memungkinkan thread untuk dapat berkomunikasi dengan thread lain yang sedang berjalan 8. Mampu mendefinisikan threads 2. class HelloRunner { int i. Mengetahui bagaimana menggunakan method di dalam class Thread 5.println("Hello " + i++). Mengerti perbedaan state dalam threads 3. Mengerti konsep prioritas dalam threads 4.out. Selama runtime. Java mendukung adanya Multithreading. pasti dibutuhkan sesuatu yang dapat mengatur proses yang terjadi dan berjalan bersamasama.

public void run() { Thread tr = Thread. while (i<5) { System.println("Program di interrupt"). HelloRunner r2 = new HelloRunner().out.currentThread(). } catch (InterruptedException e) { System. class HelloRunner implements Runnable{ int i. } } } } public class DemoThread3 { public static void main(String args[]) { HelloRunner r1 = new HelloRunner(). r1.println("Program di interrupt").public static void main(String args[]) { HelloRunner r1 = new HelloRunner(). maka kode programnya sebagai berikut.println("Jalankan Hello Runner 2").println(tr. try { Thread.out.println("Selesai"). r2. } catch (InterruptedException e) { System.out.out. Thread t1 = new Thread(r1). while (i<5) { System. System. @Override public void run() { Thread tr = Thread. class HelloRunner extends Thread{ int i.out.start().getName()+" : Hello " + i++).start().out. HelloRunner r2 = new HelloRunner().sleep(500). System.println("Jalankan Hello Runner 1").out.sleep(500). try { Thread. } } Berikut kode program untuk membuat Thread dengan mengimplementasikan interface Runnable. i = 0. t1.println(tr. t2.getName()+" : Hello " + i++). Thread t2 = new Thread(r2). } 53 .tampil(). } } Jika menggunakan turunan kelas Thread. i = 0.tampil().currentThread(). System.

sleep(500). maka terlihat proses yang mengalami Multithreading. Running: Sebuah thread yang pada saat ini sedang dieksekusi dan di dalam control dari CPU. 6.start().out. 3. Blocked: Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan. 4. try { Thread. 2. r2. di mana semakin tinggi prioritas dari sebuah thread. } catch (InterruptedException ie) { 54 . Penggunaan interface Runnable mensyaratkan pembuatan obyek tambahan selain HelloRunner. tetapi masih belum ada kesempatan untuk melakukannya. HelloRunner r2 = new HelloRunner(). berarti semakin besar kesempatan dari thread tersebut untuk dieksekusi terlebih dahulu. End 7. String str2) { System. yakni obyek Thread. } } Lakukan eksekusi terhadap ketiga kode program di atas. Berikut ini adalah listing program tersebut: class TwoStrings { static void print(String str1. setiap thread akan diberikan sebuah prioritas. Suspended: Sebuah thread yang berhenti sementara. 5. Untuk memberikan nilai prioritas kepada Thread. Untuk kode kedua (mengimplementasikan interface Runnable) dan kode ketiga (menurunkan kelas Thread) memiliki kelebihan dan kekurangan masing-masing. penggunaan turunan kelas Thread akan membatasi jika programmer ingin Thread mewarisi sifat dari kelas lain dikarenakan Java tidak memperbolehkan adanya multiple inheritance. state ini kemudian siap untuk dijalankan. Ready to run: Thread yang sudah siap untuk dieksekusi. digunakan method setPriority. dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja. Di lain sisi.3 State dari Thread Sebuah thread memungkinkan untuk memiliki beberapa state: 1.} } } public class DemoThread5 { public static void main(String args[]) { HelloRunner r1 = new HelloRunner(). 7. Resumed: Setelah sebelumnya di block atau diberhentikan sementara.2 Priority Thread Untuk menentukan thread mana yang akan menerima control dari CPU dan akan dieksekusi pertama kali. 7. r1.print(str1).start(). karena ia akan menunggu sebuah resource tersedia atau sebuah event terjadi. Sebuah prioritas adalah sebuah nilai integer dari angka 1 sampai dengan 10.4 Sinkronisasi Thread Marilah kita perhatikan sebuah kode sederhana yang mencetak sebuah string dengan urutan tertentu.

this.str1 = str1. "very much!"). new PrintStringsThread("How are ". pendeklarasian method sleep akan menyebabkan thread yang lain akan dieksekusi walaupun thread yang pertama belum selesai dijalankan pada saat eksekusi method print dari class TwoStrings. str2. str2.println(str2).out. class TwoStrings { synchronized static void print(String str1.sleep(500).print(str1. } public void run() { TwoStrings."). Solusi dari masalah ini adalah dengan melakukan sinkronisasi terhadap method print.} System. Proses sinkronisasi juga dapat dilakukan kepada obyek. new PrintStringsThread("Thank you ". 55 . String str2) { this. } } class PrintStringsThread implements Runnable { Thread thread. PrintStringsThread(String str1.print(str1). sehingga pada satu saat hanya boleh ada satu Thread yang menggunakan method print tersebut. } } class TestThread { public static void main(String args[]) { new PrintStringsThread("Hello ".out. Berikut contoh proses sinkronisasi terhadap kasus di atas. thread = new Thread(this). String str1. Permasalahannya adalah.println(str2). String str1. "you?"). thread. thread = new Thread(this).start(). try { Thread. } } class PrintStringsThread implements Runnable { Thread thread. } public void run() { TwoStrings. str2).str1 = str1. "there.str2 = str2. } catch (InterruptedException ie) { } System. String str2) { System.print(str1. str2).str2 = str2. PrintStringsThread(String str1. } } Program ini diharapkan dapat mencetak dua argument object Runnable secara berurutan.out.start(). thread. String str2) { this. this.

random()*100)).set((int)(Math. } } 7.start().println("Get " + data). } synchronized int get() { System. Consumer(SharedData sd) { this. "there."). data = value. Berikut contohnya.start(). "you?"). } public void run() { for (int i = 0.sd = sd.} } class TestThread { public static void main(String args[]) { new PrintStringsThread("Hello ".5 Komunikasi antar Thread Java juga menyediakan mekanisme untuk Thread saling berkomunikasi. return data. "Producer"). } } } class TestProducerConsumer { public static void main(String args[]) throws Exception { SharedData sd = new SharedData(). new PrintStringsThread("Thank you ".sd = sd. i++) { sd.out.get(). "very much!"). new Thread(this. } public void run() { for (int i = 0. i < 5 .out.println("Generate " + value). synchronized void set(int value) { System. i < 5. } } } class Consumer implements Runnable { SharedData sd. "Consumer"). i++) { sd. class SharedData { int data. new Thread(this. } } class Producer implements Runnable { SharedData sd. 56 . Producer(SharedData sd) { this. new PrintStringsThread("How are ". new Producer(sd).

out. } } class Producer implements Runnable { SharedData sd. diinginkan setiap kali producer melakukan generate sebuah nilai. synchronized void set(int value) { if (valueSet) { //baru saja membangkitkan sebuah nilai try { wait(). dibuat sebuah mekanisme komunikasi antara producer dan consumer menggunakan method wait() dan notify(). Producer(SharedData sd) { this.sd = sd. Untuk mengatasi problem di atas. 57 . valueSet = true. data = value. notify(). class SharedData { int data. } } Di bawah ini adalah contoh dari keluaran program : Generate 8 Generate 45 Get 52 Generate 65 Get 65 Generate 23 Get 23 Generate 49 Get 49 Get 35 Hasil tersebut bukanlah yang diharapkan.println("Get " + data).new Consumer(sd).println("Generate " + value). } catch (InterruptedException ie) { } } System. valueSet = false. return data. Dari program di atas.out. Berikut solusinya. maka consumer akan mendapatkan nilai tersebut. } catch (InterruptedException ie) { } } System. } synchronized int get() { if (!valueSet) { //produsen belum men-set sebuah nilai try { wait(). notify(). boolean valueSet = false.

i < 5 . } public void run() { for (int i = 0. } } } class TestProducerConsumer { public static void main(String args[]) throws Exception { SharedData sd = new SharedData(). } public void run() { for (int i = 0. new Thread(this. new Producer(sd). Consumer(SharedData sd) { this. } } } class Consumer implements Runnable { SharedData sd.set((int)(Math. "Consumer"). "Producer").sd = sd.start().get(). i++) { sd. i < 5. new Consumer(sd). i++) { sd. } } 58 .start().random()*100)).new Thread(this.

Tujuan 1. 59 .1 Pemrograman Generik Pemrograman generik adalah penulisan kode yang bisa digunakan oleh berbagai macam tipe data.8 Collection Overview Programmer yang perlu menggunakan list atau pohon biner. Contoh dari classes Collection termasuk LinkedList. public boolean contains(Object o) Mengembalikan nilai true jika collection ini berisi Object o. 1. Kepada kita. HashSet dan TreeSet. Collection memperbolehkan penggandaan/salinan dan tidak membutuhkan pemesanan elemen secara spesifik. public void clear() Menghapus semua elemen dari collection ini. Struktur data ini sudah banyak dimengerti dan diprogram ribuan kali sebelumnya. Beberapa implementasi dari interface Collection beserta karakteristiknya.util package. Mengembalikan nilai true jika o telah sukses ditambahkan ke dalam collection. 5. Beberapa method yang ada di interface Collection. Induk hirarki dari collection interfaces adalah interfaces Collection itu sendiri. Mengembalikan nilai true jika o telah ditemukan dan dihapus dari collection. 8. public boolean remove(Object o) Menghapus single instance dari Object o pada collection ini. namun menyediakan method yang tersinkronisasi. seharusnya tidak perlu lagi membuat data struktur ini dari awal. Mampu menggunakan List 3. Objects atau collections yang sama memiliki nilai hash code atau ID yang sama. public boolean add(Object o) Memasukkan Object o ke dalam collection ini. 1. ArrayList: Menyediakan iterasi yang cepat dan random access. Mampu menggunakan Map 8. Class tersebut benar-benar implementasi dari collection interfaces yang berbeda. Java telah menyajikan classes dan interfaces Collection yang lain. di mana semuanya dapat ditemukan di java. public int size() Mengembalikan jumlah dari elemen pada collection ini. Masalahnya adalah bagaimana agar struktur data yang tangguh tersedia dan siap digunakan oleh programmer. Memahami pemrograman generik pada Java 2. public int hashCode() Mengembalikan nilai hash code (yaitu ID) untuk collection ini. 9. antara lain: a. Vector: ArrayList yang performa lebih lambat. public boolean isEmpty() Mengembalikan nilai true jika collection ini tidak berisi object atau elemen apapun. Sebuah collection hanyalah sebuah grup dari object yang diketahui sebagai elemennya sendiri. Mampu menggunakan Set 4. 6. 4. public Iterator iterator() Mengembalikan sebuah iterator yang menunjukkan kita pada isi collection ini. ArrayList. 2. 7. b. 3. Di bagian ini kita akan melihat bagaimana Java menyelesaikan masalah ini. List. jika hal tersebut telah diinputkan. public boolean equals(Object o) Mengembalikan nilai true jika Object o sama dengan yang ada pada collection ini.

} . Pada ArrayList di atas didefinisikan Generic untuk tipe String. TreeMap: Map yang terurut. c. nameList. b. while ( iter. JoptionPane. d. HashSet: Akses cepat. namun data tidak terurut. membolehkan nilai null. HashMap: Update data tercepat. Contoh penggunaannya adalah sebagai berikut.get(0). 60 . Hashtable: HashMap yang lebih lambat karena ada method yang tersinkronisasi. LinkedHashMap: Iterasi lebih cepat.add("Craig"). 2. 8. menggunakan pasangan kunci dan nilai.. a. Maka.showMessageDialog(this... iterasi berdasarkan urutan input. Untuk melakukan iterasi terhadap sebuah Collection. LinkedHashSet: Tidak ada duplikat. System. digunakan kelas Iterator. . TreeSet: Tidak ada duplikat. ArrayList nameList = new ArrayList().5.2 Generic Generic adalah sebuah mekanisme yang digunakan mulai dari Java 1. Selain implementasi interface Collection.out... Tidak membolehkan nilai null.5 untuk mendefinisikan elemen yang boleh ditampung ke dalam sebuah Collection. Iterator iter = kol. d. menjamin tidak ada duplikasi.println(name). terdapat juga interface Map yang dapat digunakan seperti Collection. nameList. contohnya Stack dan Queue. membolehkan nilai null. for (Object name:nameList) { System. ArrayList hanya akan dapat menampung elemen bertipe String atau turunan dari String. String myString = genArrList.iterator(). Set. nameList.c.. c. LinkedList: Bagus untuk menambahkan elemen di ujung struktur data. myString).out. namun dengan menambahkan properti key sebagai unique atributte dari sebuah elemen. } Mulai dari java versi 1.hasNext() ) { Object item = iter.next(). genArrList.add("Michael").add("A generic string"). PriorityQueue: List yang diurutkan berdasarkan prioritas elemen. proses looping sudah menyediakan fitur untuk mengakses elemen Collection secara langsung.. b.. iterasi berdasarkan urutan input. antara lain: a.println(item). Berikut contoh proses iterasi sebuah Collection.add("Mikalai"). ArrayList<String> genArrList = new ArrayList<String>(). iterasi dilakukan terurut.

dimulai dari pojok kiri atas. 1. jRadioButton. 9. Layout manager mengatur tampilan dari komponen di dalam kontainer. int vgap) Membuat object baru FlowLayout dengan argumen pertama sebagai posisi pada komponen 61 . termasuk class applet. 3. Tujuan 1.1 Layout Manager Posisi dan ukuran suatu komponen ditentukan oleh layout manager. Tetapi. GridBagLayout 5. FlowLayout() Membuat object baru FlowLayout dengan posisi di tengah dan lima unit horizontal dan vertikal gap dimasukkan pada komponen sebagai default. Java menyediakan banyak tool seperti Abstract Windowing Toolkit dan Swing untuk mengembangkan aplikasi GUI yang interaktif. FlowLayout(int align) Membuat object baru FlowLayout dengan posisi spesifik dan lima unit horizontal dan vertikal gap dimasukkan pada komponen sebagai default. 2. Seperti pada saat Anda mengetik menggunakan editor kata pada umumnya. Anda akan mengatur posisi elemen secara manual dengan menggunakan method setBounds dari class Components. 2. int y. Tetapi selanjutnya. jTextField. Cara meletakkan komponen dari FlowLayout Manager dimulai dari kiri ke kanan dan dari atas ke bawah. jComboBox dalam GUI 4. void setLayout(LayoutManager mgr) Jika Anda memilih untuk tidak menggunakan layout manager. int width. jCheckBox. Mendesain aplikasi GUI menggunakan Swing. Method ini dapat ditulis sebagai berikut. Anda akan memanggil method ini untuk setiap komponen. GridLayout 4. Berikut ini beberapa layout manager yang terdapat di dalam Java. Berikut adalah bagaimana FlowLayout Manager bekerja. di mana memiliki tiga constructor seperti daftar di bawah ini. 1.9 Aplikasi Desktop GUI Overview Tanpa mempelajari tentang grapichal user interface (GUI) API masih tetap bisa membuat suatu program. border layout. FlowLayout 2. BorderLayout 3. program akan kelihatan tidak menarik dan tidak nyaman digunakan bagi para user. FlowLayout(int align.1. Memiliki GUI yang baik dapat memberi efek pada penggunaan aplikasi. int hgap. public void setBounds(int x. int height) Method ini mengatur posisi berdasarkan pada argumen x dan y. CardLayout Layout manager dapat diatur menggunakan method setLayout dari class Container. 3.1 FlowLayout Manager FlowLayout Manager adalah default manager untuk class Panel dan subclassnya. Membuat tampilan yang komplek dalam mendesain aplikasi GUI. Membuat komponen Swing jButton. dan ukuran berdasarkan argumen width dan height. dan grid layout dalam komponen GUI. Anda dapat mengisi null sebagai argumen untuk method ini. 9. Menjelaskan tentang flow layout. Hal ini akan cukup menyulitkan dan membosankan untuk aplikasi jika Anda memiliki beberapa obyek komponen di dalam object container.

Dan region tengah berada pada perpotongan jalur horizontal dan vertikal. selatan.CENTER 3. } } Gambar 9.FlowLayout. Menambahkan lebih dari satu komponen pada kontainer yang bersangkutan.*. termasuk object dari subclass Window yaitu tipe Frame dan Dialog. fld. 2.FlowLayout. barat. fld. BorderLayout(int hgap. int vgap) Membuat object BorderLayout baru dengan spasi unit hgap horizontal dan unit vgap vertikal yang diaplikasikan di antara komponen yang berbeda. fld. dan tengah.RIGHT Berikut contoh program menggunakan FlowLayout. class FlowLayoutDemo extends Frame { public static void main(String args[]) { FlowLayoutDemo fld = new FlowLayoutDemo().add(new Button("THREE")). Berikut ini adalah daftar dari kelima region.setSize(100. 10)).add(new Button("TWO")). gunakan method menambahkan dan melewatkan dua argumen yaitu : komponen yang ingin dimasukkan ke dalam region dan region mana yang ingin dipakai untuk meletakkan komponen. BorderLayout. Tampilan ini adalah bersifat default untuk object Window.dan hgap untuk horizontal dan vgap untuk vertikal pada komponen Gap dapat dikatakan sebagai jarak antara komponen dan biasanya diukur dengan satuan pixel. 100).LEFT 2. fld.1.setLayout(new FlowLayout(FlowLayout. Posisi argumen mengikuti penulisan sebagai berikut: 1. BorderLayout() Membuat object BorderLayout baru tanpa spasi yang diaplikasikan di antara komponen yang berbeda.setVisible(true).1 Contoh FlowLayout 9.awt. Setiap komponen dimasukkan ke dalam region yang spesifik. parameter hgap dan vgap disini juga menjelaskan jarak antara komponen dengan kontainer. timur.RIGHT.FlowLayout. 1. import java. Region utara dan selatan membentuk jalur horizontal sedangkan region timur dan barat membentuk jalur vertikal. Untuk menambahkan komponen kedalam region yang spesifik. fld.add(new Button("ONE")). Constructor BorderLayout antara lain: 1. 10. Seperti pada FlowLayout Manager.2 BorderLayout Manager BorderLayout membagi kontainer menjadi lima bagian di antaranya utara. fld. maka komponen yang terakhir ditambahkan yang akan ditampilkan. Perlu diperhatikan bahwa hanya satu komponen yang dapat dimasukkan dalam satu region.NORTH 62 .

BorderLayout. Unit spasi hgap horizontal dan vgap vertikal diaplikasikan ke dalam komponen. import java. bld.add(new Button("NORTH"). bld. bld.add(new Button("CENTER"). Hal tersebut tidak mempedulikan ukuran sebenarnya dari komponen. class BorderLayoutDemo extends Frame { public static void main(String args[]) { BorderLayoutDemo bld = new BorderLayoutDemo(). } } Berikut ini adalah hasil dari contoh program tersebut.CENTER Berikut ini adalah contoh program yang menunjukkan bagaimana BorderLayout bekerja. Berikut ini adalah daftar dari constructor untuk class GridLayout. BorderLayout.add(new Button("WEST").add(new Button("EAST"). GridLayout() Membuat object GridLayout baru dengan satu baris dan satu kolom sebagai default 2. BorderLayout.WEST 5. BorderLayout.*.setVisible(true).CENTER).1.add(new Button("SOUTH").3 GridLayout Manager Dengan GridLayout manager. int cols) Membuat object GridLayout baru dengan jumlah baris dan kolom sesuai dengan keinginan 3. komponen juga diposisikan dari kiri ke kanan dan dari atas ke bawah seperti pada FlowLayout manager. BorderLayout. Berikut contoh GridLayout. BorderLayout. 200).setSize(200.2.setLayout(new BorderLayout(10.SOUTH). BorderLayout.EAST). bld.2 Contoh BorderLayout 9. import java. int vgap) Membuat object GridLayout baru dengan jumlah baris dan kolom yang ditentukan.WEST). 1. Gambar 9.*.SOUTH 3. BorderLayout. bld.awt.NORTH). BorderLayout. class GridLayoutDemo extends Frame { public static void main(String args[]) { 63 .awt. int hgap. bld. GridLayout(int rows.EAST 4. bld. 10)). GridLayout manager membagi kontainer menjadi baris dan kolom. GridLayout(int rows. Semua region memiliki ukuran yang sama. bld. int cols.

add(new TextField("1st")).add(new Checkbox("I'm here!"). panelSouth. Panel adalah kontainer dan komponen pada saat yang sama. gld.CENTER). gld. Panel panelCenter = new Panel(). panelNorth. Komponen dapat ditambahkan ke dalam panel. gld.3 Contoh GridLayout Untuk membuat tampilan yang lebih lengkap.add(new TextField("3rd")). /* Panel selatan */ panelSouth.awt. panelCenter. BorderLayout.setVisible(true). Panel panelNorth = new Panel().setLayout(new GridLayout(2. Perhatikan teknik yang digunakan pada contoh berikut. panelCenter. /* Panel tengah */ panelCenter. } } Berikut ini adalah output dari program.4)).add(new Button("THREE")).add(new Button("TWO")). 4)).*. 4. 3. Gambar 9.add(new Button("ONE")).add(new Button("TWO")).add(new Checkbox("Choose me!"). panelCenter.add(new Button("THREE")).setLayout(new BorderLayout()).EAST).add(new TextField("2nd")).add(new Button("FOUR")).setLayout(new GridLayout(4. gld. panelSouth.setSize(200. gld. gld. import java. class ComplexLayout extends Frame { public static void main(String args[]) { ComplexLayout cl = new ComplexLayout(). Panel panelSouth = new Panel(). BorderLayout.add(new TextField("4th")). gld. panelCenter. 64 . 200). layout manager yang berbeda dapat digabungkan dengan menggunakan panel. gld.GridLayoutDemo gld = new GridLayoutDemo().add(new Button("FIVE")).add(new Button("ONE")). /* Panel utara */ // Panel menggunakan FlowLayout sebagai default panelNorth. panelNorth.

add(panelCenter. Package tersebut dapat ditemukan di javax. Komponen Swing JComponent Tabel 9. cl. BorderLayout.panelSouth.2 Komponen Swing Seperti pada package AWT. BorderLayout. BorderLayout. cl. cl. package dari Swing menyediakan banyak class untuk membuat aplikasi GUI.setSize(300. pemilihan dapat lebih dari satu Form untuk memilih sebuah file Form text satu baris Frame tempat meletakkan komponen.setVisible(true). Kesimpulannya. 9. program GUI ditulis menggunakan banyak class dari package Swing yang mempunyai tampilan look and feel yang sama meski dijalankan pada paltform yang berbeda.add(panelSouth.1 Komponen Swing Penjelasan class induk untuk semua komponen Swing. diperlukan content pane sebelum menambah sebuah komponen Class Container sederhana tetapi bukan top-level Menampilkan popup kotak dialog Digunakan untuk menginformasikan sesuatu kepada pengguna atau prompt pengguna untuk input JColorChooser Memungkinkan pengguna untuk memilih warna yang diinginkan 65 . tidak termasuk top-level kontainer JButton JCheckBox JFileChooser JTextField JFrame JPanel JOptionPane JDialog Tombol “push” Item yang dapat dipilih atau tidak oleh pengguna.300).add(panelNorth.NORTH).WEST). Lebih dari itu. Swing menyediakan komponen yang lebih menarik seperti color chooser dan option pane. cl. /* Menambahkan panel pada container Frame */ // Frame menggunakan BorderLayout sebagai default cl. Perbedaan utama antara keduanya adalah komponen Swing ditulis menyeluruh menggunakan Java.CENTER).add(new Checkbox("Pick me!"). } } Berikut ini adalah output dari program. BorderLayout.SOUTH).swing.

9. 2. Pilih kategori: Java GUI Forms > JFrame Form Seperti terlihat di dialog New File dialog di atas.3 Membuat Swing HelloWorld dengan Netbeans Netbeans dilengkapi dengan GUI builder yang dikenal dengan Matisse.1 Contoh Penggunaan JButton dan JTextField Berikut contoh aplikasi penjumlahan menggunakan Netbeans Gambar 9.5 Jendela dialog new file 3.9.3. Berikut beberapa contoh cara membuat aplikasi dengan Netbeans GUI Builder menggunakan beberapa komponen Swing. Tools ini sangat powerful dan produktif dalam membuat komponen GUI. Buat project baru di Netbeans (kalau sudah membuat project. Buat tampilan form seperti gambar bawah ini. Buat class JFrame baru. tidak perlu membuat lagi) dengan cara memilih menu: File > New Project Kemudian ikuti petunjuk yang diberikan dialog.4 Contoh aplikasi penjumlahan Untuk membuat aplikasi ini menggunakan Matisse. lakukan langkah-langkah berikut ini: 1.java 4. kemudian klik di jendela Design untuk menempatkan komponen yang sudah dipilih tadi ke dalam form. caranya dengan klik Jendela Pallete di sebalah kanan untuk memilih komponen apa yang akan dibuat. caranya dengan memilih menu: File > New File Kemudian akan muncul dialog seperti di bawah ini : Gambar 9. kemudian beri nama Penjumlahan. Hasilnya terlihat seperti pada gambar di bawah ini: 66 .

lblPlus. 6.parseInt(txtA. dan akan menemukan kode program seperti di bawah ini: private void btnHitungActionPerformed( java. 67 .6 Jendela design Netbens Matisse 5.. lblHasil. Klik kanan di atas komponen btnHitung kemudian pilih menu: Events > Action > actionPerformed Anda akan dibawa ke jendela Source. Tekan tombol SHIFT + F6. lblHasil. } 8. btnHitung.. Ganti nama setiap komponen agar mudah dikenali. Ganti nama komponen-komponen tersebut (sesuai urutan dari kiri ke kanan. atau klik kanan file Penjumlahan. txtA. Klik kanan di atas setiap komponen yang ada dalam Jendela Design di atas.awt.java kemudian pilih menu Run File. Ubah kode program di atas menjadi : private void btnHitungActionPerformed( java.awt.setText(str + hasil).ActionEvent evt) { // TODO add your handling code here: a = Integer.event. b. Compile dan jalankan program. Klik tombol Source untuk membuka jendela yang menampilkan kode sumber dari program di atas kemudian tambahkan kode di bawah ini tepat di bawah definisi dari class Penjumlahan: private String str = "Hasilnya adalah : ". int hasil = a + b. kemudian pilih menu: Klik kanan > Change Variable Name .Gambar 9.ActionEvent evt) { // TODO add your handling code here: } JLabel dan JTextField mempunyai method getText dan setText untuk mengambil dan mengeset text yang ditampilkan. Menambahkan variable untuk menampung nilai yang akan dijumlahkan.getText()).getText()). atas ke bawah) menjadi : lblKeterangan. private int a. 7. b = Integer.parseInt(txtB. txtB.event. Menangani penekanan tombol btnHitung.

chkKuning)  satu object JTextArea (txtWarna)  satu object JScrollPane (scrollWarna) Untuk melihat semua komponen yang ada dalam Jendela Design.3. Lakukan langkah yang sama terhadap object radioTransparan.ActionEvent evt) { // TODO add your handling code here: if(radioBerwarna.isSelected()){ lblTipeWarna. Masukkan kode berikut ini kedalam dialog yang muncul : groupTipeWarna.ActionEvent evt) { // TODO add your handling code here: } Ubahlah kode di atas menjadi : private void radioBerwarnaActionPerformed( java.awt. gunakan Jendela Inspector di sisi kiri bawah. Anda akan dibawa ke dalam Jendela Code. kemudian pilih menu: Event > Action > actionPerformed g. Memilih komponen radioBerwarna di Jendela Design f. komponen yang harus dibuat adalah:  dua object JradioButton (radioBerwarna dan radioTransparan)  satu object ButtonGroup (groupTipeWarna)  empat object JCheckBox (chkHijau. Buat class baru bertipe JFrame Form. Klik tab code di Jendela Properties c.event. 4. Klik kanan komponen radioBerwarna. Menangani event ketika JRadioButton diklik. Masukkan object radioBerwarna dan radioTransparan ke dalam object groupTipeWarna.java 2. JRadioButton yang mempunyai group yang sama.7 Contoh check box dan radio button Untuk membuat program di atas ikuti langkah-langkah berikut ini: 1. chkBiru.awt. harus dimasukkan dalam sebuah object ButtonGroup yang sama. Gambar 9. chkMerah.2 Contoh Penggunaan JCheckBox dan JRadioButton Berikut contoh aplikasi menggunakan JCheckBox dan JRadioButton. Pilih properti : Post-Creation Code d.event.getText()). Caranya dengan: e. dan menemukan kode berikut ini : private void radioBerwarnaActionPerformed( java. Memilih komponen radioBerwarna di Jendela Design b. Buat tampilan di atas menggunakan Matisse. 3. 68 .setText("Tipe warna : " + radioBerwarna.add(radioBerwarna). kemudian beri nama Pilihan. Caranya dengan: a.9.

if(chkBiru.ActionEvent evt) { // TODO add your handling code here: tampilkanWarna(). } if(chkHijau. b.toString()). 69 .isSelected()){ warna. Pilih komponen chkHijau di Jendela Design. 5.append(chkHijau. c. seperti di bawah ini : private void chkHijauActionPerformed( java. Jika sedang dipilih maka text dari JCheckBox tersebut akan ditampilkan dalam txtWarna. Class StringBuffer digunakan untuk menampung nilai text dari JCheckBox yang statusnya terpilih. } Lakukan hal ini untuk semua JCheckBox. Menangani event pemilihan JCheckBox. Caranya sebagai berikut: a.getText() + " ").append(chkMerah.3. Compile dan jalankan program dengan menekan tombol SHIFT + F6.isSelected()){ warna.getText() + " "). Yang dilakukan oleh metod tampilkanWarna adalah mengecek status setiap JCheckBox.setText(warna. Buat sebuah private method untuk menangani event pemilihan terhadap JCheckBox.isSelected()){ warna.isSelected()){ warna.3 Contoh Penggunaan JList dan JComboBox Berikut contoh program menggunakan JList dan JComboBox. } if(chkMerah.awt. Pilih menu: Event > Action > actionPerformed d.event.getText() + " "). } txtWarna. } if(chkKuning. apakah sedang dipilih atau tidak.append(chkKuning. Method tampilkanWarna ini nantinya akan dipanggil setiap kali salah satu dari JCheckBox dipilih.append(chkBiru. Klik kanan komponen chkHijau untuk memunculkan context (popup) menu. kemudian dalam method chkHijauActionPerformed tersebut panggil method tampilkanWarna. 7. } 6.} } Lakukan langkah yang sama terhadap radioTransparan. private void tampilkanWarna(){ StringBuffer warna = new StringBuffer().getText() + " "). Anda akan dibawa ke Jendela Code. 9.

Satu buah JtextArea : txtPilihanHobby 3. Buat tampilan program di atas menggunakan Matisse. lblPilihanPekerjaan. Buatlah class JFrame Form baru dan beri nama ListAndCombo. b. Trekking. Untuk merubah isi dari JComboBox dan JList kita akan menggunakan Jendela Properties.java. Empat buah JLabel : lblPekerjaan. Menangani pemilihan JComboBox. Bersepeda dan Mengajar. Satu buah JComboBox : cmbPekerjaan c.Gambar 9. Jendela Properties akan menampilkan properties dari JComboBox. Programmer. Satu buah JList : lstHobby d.8 Contoh JList dan JComboBox Ikuti langkah-langkah berikut ini untuk membuat program di atas: 1. tambahkan code seperti di bawah ini: 70 . Olahraga. Di bagian model isikan item : Membaca. 2. Pada bagian model di dalam Jendela Properties masukkan item Pelajar. Coding. kemudian tambahkan komponenkomponen: a. lblPilihanHobby. Setiap item dipisahkan dengan koma. lblHobby. Jendela ini letaknya di sebelah kanan bawah. Technical Writer dan Tester dipisahkan dengan koma. kemudian pilih menu: Events > Action > actionPerformed Jendela Code akan terbuka. Pilih JList di Jendela Design maka Jendela Properties untuk JList akan muncul. 4. di bawah Jendela Pallete dan akan muncul hanya jika jendela Design yang dipilih. Menonton Film. 5. Klik kanan JComboBox di Jendela Design. Gambar 9. Mahasiswa.9 Jendela Properties Pilih komponen JComboBox di Jendela Design.

setText(strValues. Ganti namanya menjadi menuBar. Popup Menu dan Toolbar Untuk membuat menu pada program sebagai berikut. } } Method getSelectedValues dari JList mengembalikan item-item yang terpilih. 3. Klik kanan pada JList di dalam Jendela Design.swing. Klik kanan JMenuBar yang baru saja kita buat di Jendela Inspector.ListSelectionEvent evt) { // TODO add your handling code here: Object[] selectedItems = lstHobby.").length == 0) txtPilihanHobby. kemudian pilih menu: Events > ListSelection > valueChanged b.event.getSelectedValues().setText(""). else{ StringBuffer strValues = new StringBuffer().java 2. lakukan langkah-langkah berikut : a. } txtPilihanHobby. if(selectedItems == null || selectedItems. Sebuah class JMenuBar akan ditambahkan di dalam JFrame.getSelectedItem()). strValues. for(Object item : selectedItems){ strValues.length()-2)). Dalam jendela kode yang ketik kode seperti berikut ini: private void lstHobbyValueChanged( javax. Kemudian alihkan perhatian anda ke Jendela Properties 71 . Buat sebuah class JFrame dan beri nama ToolbarMenu. } Method getSelectedItem dari JComboBox digunakan untuk memperoleh item yang sedang di pilih dalam JComboBox.3.setText("Pekerjaan: "+cmbPekerjaan.private void cmbPekerjaanActionPerformed( java. JList akan mengaktifkan ListSelection event ketika user memilih item dalam JList. Untuk menangani pemilihan item dari JList berbeda dengan JComboBox.event. 1. kemudian pilih menu: Add > JMenu Ganti nama JMenu tersebut menjadi menuFile.append(item.ActionEvent evt) { // TODO add your handling code here: lblPilihanPekerjaan.awt.substring(0.toString()+". Pilih komponen Menu Bar dari Jendela Pallete kemudian klik JFrame di Jendela Design.4 Contoh Penggunaan Menu. Untuk menangani event ini. 6. 9.

karena JCheckBoxMenuItem memiliki properties selected. JRadioButtonMenuItem juga memerlukan ButtonGroup agar hanya satu buah JRadioButtonMenuItem yang bisa dipilih. ButtonGroup yang baru 72 4. 7. Perilaku JCheckBoxMenuItem tidak berbeda jauh dengan JCheckBox biasa. maka otomatis ButtonGroup akan ditambahkan. Seperti halnya JRadioButton. . bedanya hanyalah JCheckBoxMenuItem berada dalam struktur menu. Dalam Jendela Inspector. menuOpen dan menuSave. Cara menambahkan JCheckBoxMenuItem sama dengan komponen lain: klik kanan JMenu menuSetting kemudian pilih menu: Add > JCheckBoxMenuItem Beri nama chkLineNumber. Langkah berikutnya adalah menambahkan JMenuItem ke dalam JMenu menuFile yang telah dibuat di langkah sebelumnya. JCheckBoxMenuItem sedikit spesial dibandingkan dengan JMenuItem. Caranya juga sama : klik kanan di JMenu menuFile kemudian pilih menu: Add > JMenu Beri nama menuSetting. hal ini akan menyebabkan tampilanya menuFile menjadi File dan user dapat menekan tombol ALT + F untuk mengaktifkan menu menuFile. kemudian pilih menu: Add > JMenuItem Tambahkan berturut-turut menuNew.10 Jendela Properties dari class JMenu Isi properti text dengan string “File”. Properties selected ini digunakan untuk menentukan apakah JCheckBoxMenuItem dalam keadaan terpilih atau tidak. Menambahkan ButtonGroup. Klik kanan di JMenu menuFile kemudian pilih menu: Add > JSeparator Berikutnya kita akan menambahkan JMenu baru ke dalam JMenu menuFile. kemudian pilih menu: Add > JRadioButtonMenuItem Set text dan mnemonic yang sesuai dari Jendela Properties. klik item ButtonGroup dari Jendela Pallete kemudian klik Jendela Design. 5. 9. caranya. Pilih JMenuItem dari Jendela Inspector. Ganti namanya menjadi groupOpenMethod. 6. kemudian untuk masing-masing JMenuItem set text dan mnemonic yang sesuai dari Jendela Properties. Dalam struktur menu yang bagus. radioBinary dan radioText. 8. Cara menambahkan ButtonGroup sangat mudah. set text dan mnemonic yang sesuai pada Jendela Properties. menu yang mempunyai fungsi serupa diletakkan dalam urutan berdekatan dan dipisahkan dengan separator (pemisah). klik kanan di JMenu menuSetting. set text dan mnemonic yang sesuai pada Jendela Properties. Kemudian set isi properti mnemonic dengan string “f”.Gambar 9. Keduanya dibuat dengan langkah yang sama dengan komponen lain. JMenu yang baru ini akan bertindak sebagai sub menu. Dalam contoh ini kita akan mempunyai dua buah JRadioButtonMenuItem. klik kanan di JMenu menuFile di Jendela Inspector.

JPopupMenu dapat memiliki child berupa JMenu. Klik kanan class ToolbarMenu dari Jendela Design kemudaian pilih menu Run File atau tekan tombol SHIFT + F6. kemudian klik Jendela Design. Menambahkan JMenuItem ke dalam JPopupMenu sangat sederhana.java. yang telah dibuat dalam langkah sebelumnya. caranya: klik kanan pada JPopupMenu di Jendela Design. lakukan langkah berikut ini. namun anda bisa mengkasesnya melalui Jendela Inspector. 2.dibuat tadi akan berada dalam kategori Other Components. Untuk menambahkan aplikasi dengan PopUp Menu. 3. kemudian pilih menu: Add > JMenuitem 73 . JRadioButtonMenuItem dan JSeparator.12 Properties dari JRadioButtonMenuItem 11. pada bagian groupButton pilih item groupOpenMethod. JCheckBoxMenuItem. JPopupMenu tidak terlihat dalam Jendela Design. 1. Secara otomatis JPopupMenu akan ditambahkan dalam class ToolbarMenu. Buka class ToolbarMenu.11 ButtonGroup berada dalam kategori Other Components 10. Klik Jendela Pallete dan pilih JPopupMenu. Compile dan jalankan class ToolbarMenu. Seperti halnya JMenuBar.java. kemudian perahatikan Jendela Properties dari JRadioButtonMenuItem tersebut.java. JMenuItem. seperti terlihat dalam gambar di bawah ini: Gambar 9. Pilih masing-masing JRadioButtonMenuItem dari Jendela Inspector. dalam Jendela Design. seperti terlihat dalam gambar di bawah ini: Gambar 9.

Klik item JButton dalam Jendela Pallete kemudian klik komponen JToolBar yang baru saja kita buat tadi. Caranya : a. Di dalam jendela source yang terbuka masukkan kode berikut ini: private void formMouseClicked(java. Ganti namanya menjadi toolBar. Ketika tombol kanan mouse di klik di atas JFrame. 5. kita perlu mengeset beberapa nilai dari properti JButton. misalkan project disimpan dalam folder: c:\javaswing Buka file explorer. Buat sebuah object JToolBar. } } Kondisi if di atas digunakan apakah tombol yang diklik mouse adalah tombol sebelah kanan.getSource().Ganti nama objectnya menjadi menuCut.java.getX(). Lakukan build setiap kali menambahkan file nonjava ke dalam folder source file.awt. Agar behavior tersebut berjalan. parameter pertama diisi dengan Component di mana nantinya popup menu akan ditampilkan. 4. kemudian klik JFrame di Jendela Design. Memasukkan Icon ke dalam package.getButton() == MouseEvent. 2. kemudian pilih menu: Events > Mouse > mouseClicked b. caranya klik kanan di jendela Projects bagian nama project. Agar tampilan JButton terlihat cantik. caranya: klik item JToolBar dari Jendela Pallete. 5. beralihlah ke Jendela Properties kemudian set text dan mnemonic yang sesuai. jika nilai kembalian method getButton sama dengan nilai BUTTON3 maka benar tombol kanan yang ditekan.getY()). kita perlu menangani event mouseClick terhadap JFrame. lakukan langkah berikut ini. Build Project akan berhasil jika tidak ada satupun error dalam kode program. 4. Simpan file ToolbarMenu. evt. 6. Klik kanan JFrame di Jendela Design.MouseEvent evt){ // TODO add your handling code here: if(evt.event. Untuk menambahkan toolbar pada aplikasi. Kemudian coba munculkan popup menu dengan mengklik kanan JFrame. Buatlah sebuah java package baru untuk menampung semua icon yang akan digunakan. Sebelum melakukan build project pastikan terlebih dahulu tidak ada error dalam kode. Letakkan lagi satu buah JButton di atas JToolBar dan beri nama btnMaximize. JButton baru akan diletakkan di atas JToolBar. Agar file tersebut ikut tercopy ke dalam folder build\classes penting 3. seperti terlihat pada gambar di bawah ini: 74 . menuCopy dan menuPaste. Method show digunakan untuk memunculkan popup menu. pilih menu: New > Java Package Beri nama images untuk java package yang baru saja kita buka.java yang sudah dibuat di langkah sebelumnya. JPopupMenu akan tampil. sedangkan parameter kedua dan ketiga diisi dengan letak koordinat popup menu akan ditampilkan. Lakukan langkah ini untuk JMenuItem yang lain. Untuk memasukkan image ke dalam package kita perlu tahu di mana project disimpan. 1.evt. 7.show( (Component)evt. kemudian navigasi ke folder c:\javaswing\src\images Copy semua icon yang diperlukan ke dalam folder di atas. compile dan jalankan. Build project. Secara otomatis sebuah object JToolBar akan dimasukkan ke dalam JFrame.BUTTON3){ popUpMenu. ganti nama JButton tersebut menjadi btnNew. Buka class ToolbarMenu.

ganti iconya dengan icon yang telah disiapkan.5. kemudianakan muncul Dialog Icon Editor seperti di bawah ini: 75 . Tujuan pemberian empty border ini agar tombol berukuran lebih besar dibandingkan dengan icon yang akan digunakan nanti. ada efek transisi yang cantik. Untuk mengedit border dari JButton. Text.13 Jendela Properties JButton a. Gambar 9. pilih bordernya menjadi empty border dan set nilai bordernya menjadi [5. b. Border yang dipilih bisa single border.14 Jendela Border Editor dari Jbutton c.5. Opaque. Icon.5]. uncheck nilai opaque. Border. atau composite border yang terdiri dari beberapa border. dan setiap mouse melewati JButton. hapus nilai textnya. sehingga mempunyai warna background yang sama dengan background JToolBar. d. Matisse menyediakan Jendela Border untuk memilih border yang kita inginkan untuk Jbutton. Untuk memasukkan icon ke dalam JButton.Gambar 9. Bertujuan agar tombolnya berwarna transparan. tekan tombol di samping pilihan Icon di dalam Jendela Properties.

3.15 Jendela icon editor Pilih radio button Classpath. "Dialog Peringatan".WARNING_MESSAGE).16 Tampilan dialog sederhana JOptionPane. JOptionPane. “ + “you can proceed to next assigment". 8. kemudian tekan tombol Select File dan pilih salah satu icon yang telah disiapkan. Compile dan jalankan class ToolbarMenu untuk melihat hasilnya.showMessageDialog(null.INFORMATION_MESSAGE). JOptionPane.17 Tampilan dialog dengan tipe dialog Information JOptionPane. "You neet to be sure to do this action!".5 JDialog Beberapa contoh penggunaan JDialog sebagai berikut.PLAIN_MESSAGE). JOptionPane. Lakukan langkah-langkah yang sama terhadap JButton yang lain. "Simple plain dialog".showMessageDialog(null. 76 .Gambar 9.showMessageDialog(null. Gambar 9. "Your action was succeed. Gambar 9. JOptionPane. Tekan OK. "Plain dialig". "Information dialog". 9.

JOptionPane. "Choose yes.YES_NO_OPTION."Confirmation Dialog".20 Option dialog dengan tipe Information dan pilihan YES_NO JOptionPane. JOptionPane.Gambar 9.showInputDialog(null. Gambar 9. Gambar 9.showConfirmDialog(null. no or cancel". JOptionPane.WARNING_MESSAGE).showMessageDialog(null. "Something goes wrong and generate error message".ERROR_MESSAGE).showConfirmDialog(null."Confirmation Dialog".INFORMATION_MESSAGE). JOptionPane. name here".18 Dialog dengan tipe Warning JOptionPane. "Choose yes or no".19 Dialog dengan tipe Error JOptionPane. JOptionPane.YES_NO_CANCEL_OPTION. "Input your Dialog". "Error Dialog".21 OptionDialog dengan tipe Plain dan pilihan YES_NO_CANCEL JOptionPane.PLAIN_MESSAGE). Gambar 9."Input 77 . JOptionPane.

3. "Choose this one Option".25 Tampilan JFileChooser 78 . JOptionPane.6 JFileChooser Aplikasi berikut ini adalah contoh penggunaan JFileChooser untuk membuka dan menyimpan file.options.Gambar 9.null. Options berupa array of String dan initialValue = 'Apple' 9."Grape"."Mango". Gambar 9.23 InputDialog dialog dengan tipe Warning. Gambar 9."Input dialog".showInputDialog(null. JOptionPane.22 InputDialog dengan tipe message Information String[] options = {"Apple".24 Contoh program menggunakan JFileChooser Tampilan JFileChooser ketika tombol open ditekan adalah seperti di bawah ini: Gambar 9."Guava"}.WARNING_MESSAGE."Apple").

“jpeg”.”JPG”. chooser. Compile dan jalankan aplikasinya dengan menekan tombol SHIFT + F6 79 . lblStatus. if(ret == JFileChooser.dir”.”JPG” atau“JPEG” saja yang akan ditampilkan oleh JFileChooser. dua buah Jbutton: btnOpen dan btn save.addChoosableFileFilter(JPEGFilter).APPROVE_OPTION){ File f = chooser. FileNameExtensionFilter JPEGFilter = New FileNameExtensionFilter( "JPEG File".setText("Status : opening file" + f."jpg". beri nama Chooser. Buat class JFrame Form baru. Set direktori yang akan dituju oleh JFileChooser.setText(f.java 2.getAbsolutePath()). Kode berikut ini akan menyebabkan JFileChooser dibuka pada direktori aktif aplikasi: String dir = System.setCurrentDirectory(new File(dir)).getAbsolutePath()). dan jika pilihan tersebut dipilih.showOpenDialog(this).getProperty("user. txtOpen. Tambahkan sebuah object JFileChooser sebagai field dari class Chooser.getAbsolutePath()). Menghandle penekanan tombol btnOpen. Untuk mengetahui di mana direktori aktif aplikasi. kita bisa menggunakan system property “user. Ketika tombol btnSave ditekan."jpeg".getAbsolutePath()). berikit ini kodenya: private void btnBrowseActionPerformed(ActionEvent evt){ // TODO add your handling code here: int ret = chooser.showSaveDialog(this). if(ret == JFileChooser. kemudian mengambil nama file yang dipilih dan menampilkannya dalam txtSave. chooser. beri nama chooser. Kode untuk menangani penekanan tombol btnOpen mirip dengan kode untuk menangani penenakan tombol btnSave. Sesuaikan penataan komponen sesuai dengan gambar di atas.dir"). } } 7. Berikut ini kodenya : private void btnSaveActionPerformed(ActionEvent evt) { // TODO add your handling code here: int ret = chooser. perbedaanya adalah btnOpen akan menampilkan dialog open file. 5. Masukkan dua buah JTextField: txtOpen dan txtSave. sebuah JLabel: lblStatus. serta menampilkanya dalam lblStatus. 6. //kode lain di sini } 4.setText(f.Untuk membuat aplikasi di atas lakukan langkah-langkah berikut ini: 1.APPROVE_OPTION){ File f = chooser. } } 8.”JPEG”). Contoh kode di bawah ini akan menyebabkan JFileChooser mempunyai pilihan “JPEG File”. Menghandle event penekanan tombol btnSave. Metode filteringnya adalah mencocokkan ekstensi file dalam file system dengan ekstensi yang ada dalam FileNameExtentionFilter. 3. maka file dengan ekstensi “jpg”. txtSave.setText("Status : saving file" + f. chooser akan menampilkan dialog save file. public class Chooser{ JFileChooser chooser = new JFileChooser().getSelectedFile(). lblStatus.getSelectedFile(). FileNameExtentionFilter digunakan sebagai file filter dalam JFileChooser.

yang memungkinkan untuk mengakses segala database menggunakan Java. Setelah driver di‐load.Driver”). contoh: Class. misal menggunakan Oracle Toplink dan Hibernate).getConnection( "jdbc:mysql://host:port/dbname".1 Posisi JDBC dalam program Java 10. method getConnection() dari Driver manager digunakan untuk membuat koneksi JDBC.com ) supaya JDBC bisa mengakses database dari vendor tersebut.jdbc. Saat koneksi dibutuhkan. seperti SQL‐Mapping (misal menggunakan iBatis). misal menggunakan SpringDAO). untuk mengakses database dengan JDBC. Data Access Object (DAO. 80 . Myenggunakan JDBC 10.sql.class javax.forName(“com. Tujuan 1. Dari JDBC ini kemudian muncul konsep‐konsep yang berdiri di atas JDBC. Load Database Driver b. diperlukan langkah-langkah berikut: a. Tutup koneksi Berdasarkan langkah di atas maka kita memerlukan Database Driver dari masing‐masing vendor database (misal untuk MySQL bisa diunduh dari http://mysql. Sintaks di atas digunakan untuk me‐load database driver milik MySQL ke dalam system property “jdbc. kita dapat membuat aplikasi yang bisa melakukan penyimpanan data ke dalam storage dan juga mengakses untuk keperluan proses bisnis tertentu.2 Menggunakan JDBC Pada dasarnya.1 Pengenalan JDBC Java Database Connectivity (JDBC) merupakan Application Programming Interface (API). Buat koneksi c.*. Memahami konsep JDBC 2. Lakukan pemrosesan query d.DriverManager dibutuhkan untuk me‐load system property “jdbc.drivers”. dalam paket java.sql.mysql.drivers”. Dengan mengakses database. dan Object Relational Mapping (ORM. Untuk me‐load sebuah driver digunakan dynamic class loading. Connection con = DriverManager.10 Akses Database Via JDBC Overview Bagian ini akan membahas bagaimana mengakses database via JDBC. Posisi JDBC dalam program Java dapat dilihat pada gambar berikut: Gambar 10.

Untuk menampilkan hasil dari query tersebut.println(). . . session yang terbentuk antara aplikasi dengan database sebaiknya ditutup dengan kode sebagai berikut: try{ con. digunakan variabel rset yang kemudian dimasukkan dalam suatu loop sebagai berikut: . NIM.out. while(rset. lakukan langkah-langkah berikut ini. 1. kita akan mencoba untuk membuat sebuah aplikasi CRUD (Create.print(rset. Pilih File > New File > Swing GUI Form > JFrame Form. Setelah koneksi berhasil terbentuk. Read. }catch(SQLException ex){} 10.getString(3)). . . "dbpass" ). ResultSet rset = stmt.print(rset. System. . 81 . Delete) sederhana menggunakan JDBC."dbuser". Statement stmt = con. . . } . dengan terlebih dahulu membuat objek Statement sebagai berikut: . . kedua dan ketiga. . . . Update. .print(rset.executeQuery(SQLQuery). System.getString(2)+"--"). Bila koneksi telah dilakukan dan aplikasi tidak lagi membutuhkan koneksi ke database.getString(1)+"--").out. . Untuk membuat form CRUD. . SQLQuery merupakan suatu String yang berisi query ke database.createStatement(). Sebelumnya dibuat dulu database dengan satu tabel mahasiswa dengan 4 atribut (Nama. System.out.out. perintah while di atas akan mengambil hasil kolom pertama. maka bisa dilakukan interaksi dengan database melalui perintah‐perintah SQL. . Hasil query tersebut disimpan di objek ResultSet.close().next()){ System. Pertama kita buat aplikasi desktop menggunakan JTable sesuai gambar di bawah ini.3 Membuat Form CRUD dengan JDBC Pada bagian ini. . JenisKelamin dan Jurusan). .

Gambar 10. dan Tabel untuk pengaturan tablenya seperti pada gambar di bawah ini.seperti gambar di bawah ini : Gambar 10. 7.4 JTable Model 6. Pilih Table klik kanan Properties.2 Dialog window 2. Setting di source code nya.DefaultTableModel tblModel = getDefaultTabelModel(). Buat kolom dengan klik Model lalu isi nama kolom – kolomnya seperti gambar di bawah ini sesuai anak panah: Gambar 10.3 Tabel Properties 5. 3.kita beri nama misal : “table” 4. Buat fungsi getDefaultTabelModel(). Isi nama Classnya dan pilih packagenya sesuai anak panah.table. Pada baris paling akhir di sourcenya buat obyek untuk TableModel langsung ketik code di bawah ini: private javax.swing. juga diketik secara manual: 82 . Kita beri nama dgn klik kanan pilih “change variable name”. Pertama kita membuat Table dengan Mendrag JTable pada Palette.

Tabel(tabel.180.120.120}).setModel(tblModel). Di dalam fungsi private void cmdsimpanactionperformed() tambahkan kode berikut. 9. Cara menginput data kedalam ke JTable. Nanti kita akan mengklik 2x baris dalam JTable yang berisi data yang akan ditampilkan kedalam Form di Netbeans. Cara Menampilkan Data dari JTable kedalam Form di Netbeans. String data[] = new String [4]. Pertama kali kita deklarasikan dulu variable array satu dimensi di luar fungsi supaya dikenal disemua fungsi yang lain. Setting di konstruktornya. untuk pengaturan lebar kolomnya.new int[]{120.8. 10. Tambahkan source code berikut: tabel. caranya pilih Inspector kemudian ikuti petunjuk di bawah ini: 83 .

MouseEvent evt) { } Kita modifikasi Fungsi tersebut sehingga menjadi seperti di bawah ini : Dengan code di atas maka secara otomatis jika kita klik 2x baris dalam JTable maka data dalam baris terpilih akan muncul dalam Form kemudian bisa kita edit dan delete.awt. 11. Cara mengedit data dalam JTable.Gambar 10.5 Inspector window Setelah itu akan muncul Fungsi : private void tabelMouseClicked(java.event. Setelah data muncul dalam Form untuk mengeditnya ikuti code di bawah ini: 84 .

Cara menghapus data dalam JTable.6 Setting JDBC 2.event.awt. 1.12. yang isinya seperti di bawah ini: Gambar 10.removeRow(row).ini pada folder lib dengan terlebih dahulu membuat folder lib(misal : database.java untuk melakukan relasi dengan file Database.ini yang isinya: 85 .ActionEvent evt) { tblModel. Lalu kita buat file Database. Pertama kita buat file dengan extention .ini). Ketikan code di bawah ini: private void cmdhapusActionPerformed( java. } Langkah berikutnya adalah melakukan setting terhadap database dan koneksi JDBC yang digunakan.

ini kita akan memodifikasi program seperti di bawah ini pada sebelum dan dalam Konstruktor: 4. Memanggil class Database.3. Lalu kita buat Function setDefaultTable(): 86 .java jika kita ingin melakukan pemrosesan data yang berhubungan ke database. Untuk mengambil data dari file database.

Untuk pembuatan menu input .5. Setelah code di atas selesai.7 Aplikasi jadi Berikutnya adalah membuat fungsi untuk pemrosesan data dengan Java. Berikut langkahlangkahnya. data dari mysql akan tertampil pada table di Form javanya seperti gambar di bawah ini: Gambar 10. klik kanan tombol “Input” lalu pilih Event ->action->Action Performed Setelah itu buatlah code dalam function yg baru terbentuk seperti di bawah ini: 87 . 1.

2. Untuk pembuatan menu cari . klik kanan tabel di Netbeans lalu pilih Event ->Mouse->Mouse Click. Kita menggunakan metode “klik”,jika tablenya diklik maka data dari table akan tertampil di Formnya.Lalu tambahkan coding dalam Fungsi tabelMouseClicked seperti code di bawah ini:

3. Untuk pembuatan menu edit . klik kanan tombol ”ubah” di Netbeans lalu pilih Event ->Action->ActionPerformed. Untuk lebih jelasnya lihat code berikut:

88

4. Untuk pembuatan menu Hapus . klik kanan tombol ”Hapus” di Netbeans lalu pilih Event ->Action->ActionPerformed. Setelah data dicari, Menu yang terakhir adalah delete (untuk menghapus data):

89

11 Networking
Overview Java memberikan kemudahan dalam pengembangan aplikasi yang meliputi berbagai fungsi yang melalui jaringan. Pada bagian ini, akan dibahas tentang konsep dasar jaringan dan aplikasi via jaringan sederhana menggunakan Java. Tujuan 1. Mengerti konsep dasar jaringan 2. Membuat aplikasi menggunakan package jaringan Java 11.1 Konsep Dasar Jaringan Jika sebelumnya Anda telah mengetahui, bahwa internet adalah jaringan global dengan berbagai jenis komputer yang berbeda yang tersambung dalam berbagai cara. Walaupun terdapat perbedaan dalam software dan hardware yang tersambung bersama-sama, hal tersebut sangatlah bagus bahwa internet masih dapat berfungsi. Hal ini memungkinkan karena standar komunikasi memiliki ketetapan dan juga keselarasan. Standar ini menjamin kesesuaian dan kekuatan komunikasi di antara luasnya sistem pada internet. Mari kita pelajari beberapa standar yang berlaku. 11.1.1 IP Address Pada setiap komputer yang tersambung dengan internet memiliki alamat IP yang unik. Alamat IP secara logika hampir sama dengan alamat pengiriman surat tradisional di mana memiliki arti bahwa alamat yang bersifat unik tersebut mewakili dari keterangan sebuah object. Alamat tersebut diwakilkan dalam 32-bit nomor yang digunakan sebagai pengenal yang bersifat unik dari setiap komputer yang tersambung dengan internet. 192.1.1.1 adalah contoh dari sebuah alamat IP. Mereka juga bisa ditulis dengan bentuk simbol seperti docs.rinet.ru. 11.1.2 Protokol Karena terdapat jenis komunikasi yang berbeda-beda yang mungkin terjadi pada internet, di sana harus terdapat suatu jumlah yang sama untuk mekanisme penangangan komunikasi. Setiap jenis komunikasi membutuhkan protokol yang spesifik dan unik. Protokol mengatur peraturan dan standar yang menetapkan jenis komunikasi internet yang khusus. Hal tersebut menjelaskan format data yang dikirim lewat internet, seiring dengan bagaimana dan kapan itu dikirim. Konsep dari protokol tentunya tidak terlalu asing untuk kita. Mengingat sudah beberapa kali Anda telah menggunakan jenis percakapan ini: "Hallo." "Hallo. Selamat siang. Bolehkah saya berbicara dengan Joan?" "Okay, mohon tunggu sebentar." "terima kasih." ... Ini adalah protokol sosial yang digunakan ketika dalam pembicaraan melalui telepon. Jenis protokol tipe ini memberikan kita kepercayaan untuk mengetahui apa yang harus dilakukan dalam situasi tersebut. Mari kita lihat beberapa protokol penting yang digunakan pada internet. Hypertext Transfer Protocol (HTTP) adalah salah satu protokol yang sering digunakan. Digunakan untuk mentransfer dokumen HTML pada Web. Kemudian, ada juga File Transfer Protocol (FTP) di mana lebih umum dibandingkan dengan HTTP dan memperbolehkan Anda untuk mentransfer file biner lewat intenet. Kedua protokol tersebut memiliki peraturan masing-masing dan standar dalam pengiriman data. Java juga mendukung kedua protokol tersebut.

90

Tentunya. client terhubung dengan server dan meminta informasi.3 Port Sekarang. Kemudian server mengingat permintaan dan mengembalikan informasi yang tersedia kepada client. 11. bagaimanapun juga. Tentunya. Tabel berikut menjelaskan dua dari empat constructor pada class ServerSocket: Nama Constructor ServerSocket(int port) Tabel 11. Sekarang. Client adalah mesin yang membutuhkan beberapa jenis informasi sedangkan server adalah mesin yang menyimpan informasi dan menunggu untuk menyampaikannya pada client. port dengan nilai di atas 1024 disediakan untuk komunikasi custom. Setiap komputer pada internet dapat menyediakan berbagai jenis layanan melalui berbagai jenis protokol yang mendukung. Jika Anda ingin menggunakan file transfer FTP. layanan FTP terletak pada port 21 sedangkan layanan HTTP terletak pada port 80. MulticastSocket.1 Contructor class ServerSocket Fungsi Ketika sebuah server menetapkan suatu port tertentu.4 Paradigma client/server Paradigma client/server adalah dasar untuk framework jaringan Java. protokol HTTP digunakan ketika Anda menyediakan isi Web melalui layanan HTTP. Socket adalah software abstrak untuk media input atau output komunikasi. Sebagai contoh. Untuk itulah port digunakan. dan DatagramPacket. Pembelajaran akan difokuskan pada empat class yaitu : class ServerSocket. jalur komunikasi yang melewati protokol tertentu. Port adalah 16-bit nomor di mana mengenal setiap layanan yang ditawarkan oleh server jaringan.2 Java Networking Package Package dari java.1. Anda perlu terhubung dengan port 21 pada komputer Anda. kita harus mengetahui jenis layanan sebelum sebuah informasi dapat ditransfer. Port dihubungkan dengan nomor dan beberapa nomor bersifat spesifik yang berhubungan dengan jenis layanan khusus. socket adalah point terakhir untuk komunikasi antara dua mesin. Untuk daftar lengkap dari class jaringan dan interface. Jika terdapat kasus di mana port dengan nilai di atas 1024 telah digunakan oleh beberapa komunikasi custom. Kebanyakan pemrograman Java network menggunakan jenis khusus dari komunikasi jaringan yang diketahui sebagai sockets. Anda perlu menyambungkan pada port yang sesuai. Jalur komunikasi ini memungkinkan untuk mentransfer data melalui port khusus.net menyediakan banyak class yang berguna untuk pengembangan aplikasi jaringan.1 Class ServerSocket dan Socket Class ServerSocket menyediakan fungsi-fungsi dasar dari sebuah server. Masalahnya. sebuah port 0 menugaskan sebuah server kepada port bebas manapun. Port dengan layanan pekerjaan tertentu disebut port standar. semua standar layanan tertentu diberikan nilai port di bawah 1024. Singkatnya. Untuk menggunakan layanan khusus dan oleh karena itu. Sebagai contoh.1.5 Socket Konsep umum jaringan yang terakhir sebelum kita membahas lebih dalam tentang Java networking adalah dengan memperhatikan sockets.2. protokol hanya bisa dipertimbangkan jika digunakan dalam konteks suatu jasa. 11. Anda harus mencari nilai lain yang tidak digunakan. yaitu client dan server. dapat dilihat pada dokumentasi API.1.11. 91 . 11. penetapan ini terdiri dari dua elemen besar. Socket digunakan oleh Java untuk mengatasi komunikasi pada jaringan level rendah. Socket. 11. Paradigma ini menjelaskan sebuah skenario sederhana.

getInputStream(). Menutup socket server. Client tidak dapat lagi terhubung ke server hingga dibuka kembali Mengembalikan port di mana socket juga membatasi Mendeteksi apakah socket tertutup atau belum Contoh yang berhasil melakukan implementasi sebuah server sederhana. InputStream clientIn = client. Socket client.getOutputStream(). di mana sebuah informasi sederhana dikirim oleh client dapat dilihat pada listing program berikut ini: import java.println(br. import java.readLine()). Berikut ini adalah beberapa method class pada ServerSocket: Nama method public Socket accept() public void close() public int getLocalPort() public boolean isClosed() Tabel 11. } while(true) { try { client = server.2 Method class ServerSocket Fungsi Menyebabkan server untuk menunggu dan mendengarkan dari koneksi client. } catch (IOException ie) { } } 92 . public class EchoingServer { public static void main(String [] args) { ServerSocket server = null.out. pw. int backlog) Ketika sebuah server menetapkan suatu port tertentu. try { server = new ServerSocket(1234). PrintWriter pw = new PrintWriter(clientOut. kemudian menerimanya."). panjang antrian maksimum untuk koneksi yang akan datang berdasarkan pada parameter backlog.net.Panjang antrian maksimum untuk koneksi yang akan datang diatur sebanyak 50 sebagai defaultnya.*. true).exit(1).accept(). System. OutputStream clientOut = client. BufferedReader br = new BufferedReader(new InputStreamReader(clientIn)).*. ServerSocket(int port.io. //1234 nomor port yang belum digunakan } catch (IOException ie) { System.println("Cannot open socket.

0. 1234). Langsung saja kita lihat dua constructor tersebut. 1234). int Membuat sebuah socket client di mana dihubungkan dengan diberikannya nomor port pada alamat IP tertentu. Berikut adalah beberapa dari method class pada Socket: Nama Method public void close() public InputStream getInputStream() public OutputStream getOutputStream() public InetAddress getInetAddress() public int getPort() public boolean isClosed() Tabel 11.*. InputStream clientIn = client. Mendeteksi apakah socket telah tertutup atau tidak Contoh yang berhasil melakukan implementasi sebuah client sederhana. OutputStream clientOut = client.io. Class Socket mengimplementasikan socket client.1".3 Constructor class Socket Fungsi Membuat sebuah socket client di mana dihubungkan dengan diberikan nomor port pada host tertentu. int port) Socket(InetAddress port) address. Class Socket memiliki delapan constructor.getOutputStream(). Mengembalikan remote port kepada socket ini pada saat masih terhubung. true). di mana mengirim data kepada server dapat dilihat pada listing program di bawah ini: import java. public class MyClient { public static void main(String args[]) { try { //Socket client = new Socket("133. dua di antaranya siap dipanggil.*.getInputStream().0. BufferedReader br = new BufferedReader(new 93 . Nama Constructor Socket(String host.} } Ketika class ServerSocket mengimplementasikan server socket. import java. Mengembalikan alamat IP kepada socket ini pada saat masih terhubung. Tabel 11. Socket client = new Socket(InetAddress.4 Method class Socket Fungsi Menutup socket client Menerima kembali input stream yang berhubungan dengan socket ini. PrintWriter pw = new PrintWriter(clientOut.getLocalHost().net. Menerima kembali output stream yang berhubungan dengan socket ini.

client. BufferedReader stdIn = new BufferedReader(new InputStreamReader(System. Class ini memiliki tiga constructor tetapi yang akan dibahas hanya salah satu dari ketiga constructor ini. alamat 224.println(stdIn.println("Server message: ").close().out.0.close().println(br.255. Meskipun begitu. System.6 Method class MulticastSocket Fungsi Bergabung dengan kelompok multicast pada alamat tertentu Meninggalkan kelompok multicast pada alamat tertentu Metode turunan dari class DatagramSocket.out. pw.5 Constructor class MulticastSocket Fungsi MulticastSocket(int port) Membuat multicast socket dibatasi dengan pemberian nomor port Tabel berikutnya memberikan penjelasan beberapa method MulticastSocket. Nama Constructor Tabel 11. Alamat IP untuk kelompok multicast berkisar antara 224.out. } } } 11. pw. Mengirim p dari socket ini. Nama Method Tabel 11.readLine()). 94 .println("Type a message for the server: ").InputStreamReader(clientIn)).255. Jika Anda telah selesai berbicara dengan kelompok. Sekarang seorang anggota dapat mengirim pesan melalui method send.0. br.println("Cannot connect to the server.close(). } catch (IOException ie) { System.2 Class MulticastSocket dan DatagramPacket Class MulticastSocket sangat berguna untuk aplikasi yang mengimplementasikan komunikasi secara berkelompok. pertama kali yang harus dilakukan oleh orang tersebut adalah harus menjadi anggota dari multicast kelompok dengan menggunakan method joinGroup. Anda dapat menggunakan method leaveGroup untuk melepaskan keanggotaan Anda. System.2.").readLine()).in)).0 hingga 239. public void joinGroup(InetAddress mcastaddr) public void leaveGroup(InetAddress mcastaddr) public void send(DatagramPacket p) Sebelum seseorang dapat mengirim pesan kepada suatu kelompok.0.out. } catch (ConnectException ce) { System.out.").0. System.0 telah dipesan dan seharusnya tidak digunakan.255.println("I/O Error.

DatagramPacket data = new DatagramPacket(buf. int length) Constructor dari datagramPacket untuk menerima paket dengan panjang length. public class ChatServer { public static void main(String args[]) throws Exception { MulticastSocket server = new MulticastSocket(1234).5. InetAddress address. Berikut adalah class server: import java.net. //getByName – Mengembalikan alamat IP yang diberikan oleh Host server. Nama Method public byte[] getData() public InetAddress getAddress() public int getLength() public int getPort() Tabel 11. kita harus mengerti object jenis ini sebelum menggunakan method send. /* Server terus-menerus menerima data dan mencetaknya*/ while(infinite) { byte buf[] = new byte[1024]. InetAddress group = InetAddress. Sehingga.6.*.receive(data).joinGroup(group).buf. Nama Constructor Tabel 11. DatagramPacket(byte[] buf.length). 95 . Mari kita perhatikan dua dari enam constructor.7").getByName("234. dibutuhkan parameter yaitu object DatagramPacket. server dan client. int port) Constructor dari datagramPacket untuk mengirim paket dengan panjang length dengan nomor port tertentu dan host tertentu. Masalah yang ditimbulkan bahwa pengiriman packet tidak terjamin. Perhatikan bahwa dalam method send dari class multiSocket. Berikut adalah beberapa method dari class DatagramPacket. pertama-tama mari kita lihat pada class DatagramPacket.Sebelum melihat contoh dalam menggunakan class multicastSocket. Seharusnya kurang dari atau sama dengan ukuran dari buffer buf. server. Class DatagramPacket digunakan untuk mengirim data melalui protokol connectionless seperti multicast. int length.7 Constructor class DatagramPacket Fungsi DatagramPacket(byte[] buf. Server menerima pesan dari client dan mencetak pesan tersebut.8 Method class DatagramPacket Fungsi Mengembalikan buffer di mana data telah disimpan Mengembalikan alamat IP mesin di mana paket yang dikirim atau yang diterima Mengembalikan panjang data yang dikirim atau diterima Mengembalikan nomor port pada remote host di mana paket yang dikirim atau yang diterima Contoh multicast kita juga mengandung dua class. boolean infinite = true.

out.*. } } 96 .String msg = new String(data.7").*.getBytes(). 0.6.length(). System. chat.trim().5. msg = br. } server. DatagramPacket data = new DatagramPacket(msg.getData()). String msg = "". } } Berikut adalah class client: import java.close(). chat.println("Type a message for the server:"). public class ChatClient { public static void main(String args[]) throws Exception { MulticastSocket chat = new MulticastSocket(1234).println(msg). msg.out.send(data). import java. chat.net.joinGroup(group). System.readLine(). 1234).getByName("234.in)). BufferedReader br = new BufferedReader(new InputStreamReader(System.io. group. InetAddress group = InetAddress.close().

Sign up to vote on this title
UsefulNot useful